Description
Have been working on our IFC parser and notice and error in some recent exports from Revit 2020
If I understand the schema correctly the Depth parameter should be in model units, but it appears to be in Feet (8.23490813648297 should be 2,510mm). The Local origin of the Position is a repeat of the start origin of the swept curve. This causes the surface location to be translated twice as much as required. See point #26 below
Finally, the Swept curve is an IfcProfileDef which should be 2D. The exporter is writing out 3D profile defs. Rational BSpline #39 is 3D but on a plane so could be 2D).
Here is a sample of the IFC showing the problem, #26 is highlighted which I think shows the incorrect values
#13=IFCCARTESIANPOINT((-76.2000000000109,13189.05,27.));
#14=IFCCARTESIANPOINT((-76.2000000000109,13150.95,27.));
#15=IFCORIENTEDEDGE(,,#16,.T.);
#16=IFCEDGECURVE(#10,#17,#19,.T.);
#17=IFCVERTEXPOINT(#18);
#18=IFCCARTESIANPOINT((0.,13150.95,2537.));
#19=IFCTRIMMEDCURVE(#20,(#11),(#18),.T.,.CARTESIAN.);
#20=IFCLINE(#11,#21);
#21=IFCVECTOR(#22,304.8);
#22=IFCDIRECTION((0.,0.,1.));
#23=IFCORIENTEDEDGE(,,#24,.T.);
#24=IFCEDGECURVE(#17,#25,#27,.T.);
#25=IFCVERTEXPOINT(#26);
#26=IFCCARTESIANPOINT((0.,13189.05,2537.));
#27=IFCRATIONALBSPLINECURVEWITHKNOTS(3,(#18,#28,#29,#26),.UNSPECIFIED.,.F.,.U.,(4,4),(0.,1.),.UNSPECIFIED.,(1.,0.333333333333333,0.333333333333333,1.));
#28=IFCCARTESIANPOINT((-76.2000000000109,13150.95,2537.));
#29=IFCCARTESIANPOINT((-76.2000000000109,13189.05,2537.));
#30=IFCORIENTEDEDGE(,,#31,.T.);
#31=IFCEDGECURVE(#25,#8,#32,.T.);
#32=IFCTRIMMEDCURVE(#33,(#26),(#9),.T.,.CARTESIAN.);
#33=IFCLINE(#26,#34);
#34=IFCVECTOR(#35,304.8);
#35=IFCDIRECTION((0.,0.,-1.));
#36=IFCSURFACEOFLINEAREXTRUSION(#37,#40,#35,8.23490813648297);
#37=IFCARBITRARYOPENPROFILEDEF(.CURVE.,'Ruled Face Profile Curve',#38);
#38=IFCTRIMMEDCURVE(#39,(#26),(#18),.T.,.CARTESIAN.);
#39=IFCRATIONALBSPLINECURVEWITHKNOTS(3,(#26,#29,#28,#18),.UNSPECIFIED.,.F.,.U.,(4,4),(0.,1.),.UNSPECIFIED.,(1.,0.333333333333333,0.333333333333333,1.));
#40=IFCAXIS2PLACEMENT3D(#26,#35,#41);
#41=IFCDIRECTION((-1.,0.,0.));