IfcSurfaceCurveSweptAreaSolid does not consistently orient the swept profile

I’ve made the arced beam work after diving into the spec for circles and realizing that they are parameterized in degrees, not in radians as the documents suggest.

The problem remains with profile rotations. According to the spec, the swept area’s +X axis should be aligned with the normal of the reference surface, which in all cases is an IfcSurfaceOfLinearExtrusion using the directrix as the curve to extrude. ArchiCAD does not calculate the normal correctly and, for some unknown reason rotates the profile 90d, and Solibri just arbitrarily rotates the profile by ~45d.

This is all after upgrading the whole thing to IFC4, on the recommendation of @jonm, and switching to Design Transfer View (which had no affect).

None of these objects show up in Vectorworks.