I believe it would be quite useful to implement a function that replicates the truncated right angle cone (TRC) macrobody from MCNP (see snap from manual below).
This function would take input of the origin point, the height of the truncated cone, the bottom and top radii, and the axis for which the base of the cone is normal to.
i.e. openmc.model.TruncatedCone(center_base=(x0, y0, z0), height=z1, r1=r1, r2=r2, axis='z')
This function negates the necessity to calculate the apex of the cone, which can be inconvenient if your surface is far from the apex.