ifc solid sphere

Hi, Ive noticed that some IFC spheres are defined as an IfcCircleProfileDef with an axis running through the middle of it then using IfcRevolvedAreaSolid to revolve it180 degs. Is this def for a sphere widely used? I think it violates informal propositions 2 of IfcRevolvedAreaSolid: “The AxisLine shall not intersect the interior of the SweptArea”.
If I should support/heal this what’s the best way? One idea I have is to change the circle into a semi circle at the axis (keeping one half) and revolve 360 degs. I have included a snippet example from one of the files I found.

#7=IFCCARTESIANPOINT((0.0,0.0,0.0));
#8=IFCAXIS2PLACEMENT3D(#7,$,$);

#19=IFCCARTESIANPOINT((0.0,0.0));
#20=IFCAXIS2PLACEMENT2D(#19,$);
#21=IFCCIRCLEPROFILEDEF(.AREA.,$,#20,400.0);
#22=IFCDIRECTION((0.0,1.0,0.0));
#23=IFCAXIS1PLACEMENT(#7,#22);
#24=IFCREVOLVEDAREASOLID(#21,#8,#23,3.141592653589793);

I agree, it violates the where rule (which comes from iso 10303 and is actually a limitation of many cad kernels).

IfcOpenShell specifically checks for this in the revolved area computation IfcOpenShell/IfcGeomShapes.cpp at v0.7.0 · IfcOpenShell/IfcOpenShell · GitHub it only emits a warning though to give users insight into why the operation will probably fail.

So yes, the options are indeed (a) 360 degree semi circle (b) IfcSphere (csg primitive subtype, not in 2x3 cv iirc) (c) advanced brep with IfcSphericalSurface (in my experience [periodic] advanced faces don’t have great implementation support either). So that makes (a) indeed the best option I suppose.