XbimGeometry icon indicating copy to clipboard operation
XbimGeometry copied to clipboard

IFCDERIVEDPROFILEDEF not applying IFCCARTESIANTRANSFORMATIONOPERATOR2D transformation

Open Schulzey opened this issue 7 months ago • 1 comments

The Axis1 and Axis2 from IFCCARTESIANTRANSFORMATIONOPERATOR2D is being ignored in the IFCDERIVEDPROFILEDEF when axis1/axis2 is not default. It always displays the shape as if Axis1= (1,0) & Axis2 = (0,1)

ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
FILE_NAME('IfcCompositeProfileDef.ifc','2014-03-16T10:22:14',(''),('',''),'IfcOpenShell 0.5.0-dev','IfcOpenShell 0.5.0-dev','');
FILE_SCHEMA(('IFC2X3'));
ENDSEC;
DATA;
xBimTeam/XbimWindowsUI#1=IFCCARTESIANPOINT((40.,0.));
xBimTeam/XbimWindowsUI#2=IFCDIRECTION((0.,-1.));
xBimTeam/XbimWindowsUI#3=IFCDIRECTION((1.,0.));
xBimTeam/XbimWindowsUI#4=IFCCARTESIANPOINT((40.,0.));
xBimTeam/XbimWindowsUI#5=IFCDIRECTION((1.,0.));
xBimTeam/XbimWindowsUI#6=IFCDIRECTION((0.,-1.));
xBimTeam/XbimWindowsUI#7=IFCDIRECTION((1.,0.));
xBimTeam/XbimWindowsUI#8=IFCCARTESIANPOINT((0.,0.));
xBimTeam/XbimWindowsUI#9=IFCAXIS2PLACEMENT2D(#8,#7);
xBimTeam/XbimWindowsUI#10=IFCDIRECTION((1.,0.));
xBimTeam/XbimWindowsUI#11=IFCCARTESIANPOINT((0.,0.));
xBimTeam/XbimWindowsUI#12=IFCAXIS2PLACEMENT2D(#11,#10);
xBimTeam/XbimWindowsUI#13=IFCDIRECTION((1.,0.));
xBimTeam/XbimWindowsUI#14=IFCCARTESIANPOINT((0.,0.));
xBimTeam/XbimWindowsUI#15=IFCAXIS2PLACEMENT2D(#14,#13);
xBimTeam/XbimWindowsUI#16=IFCDIRECTION((1.,0.));
xBimTeam/XbimWindowsUI#17=IFCCARTESIANPOINT((80.,0.));
xBimTeam/XbimWindowsUI#18=IFCAXIS2PLACEMENT2D(#17,#16);
xBimTeam/XbimWindowsUI#19=IFCLSHAPEPROFILEDEF(.AREA.,$,#12,50.,25.,5.,1.,2.,2.,$,$);
xBimTeam/XbimWindowsUI#20=IFCTSHAPEPROFILEDEF(.AREA.,$,#15,50.,40.,10.,10.,3.,2.,1.,2.,2.,$);
xBimTeam/XbimWindowsUI#21=IFCCARTESIANTRANSFORMATIONOPERATOR2D(#3,#2,#1,$);
xBimTeam/XbimWindowsUI#22=IFCCARTESIANTRANSFORMATIONOPERATOR2D(#6,#5,#4,0.3);
xBimTeam/XbimWindowsUI#23=IFCISHAPEPROFILEDEF(.AREA.,$,#9,25.,50.,5.,5.,2.);
xBimTeam/XbimWindowsUI#24=IFCDERIVEDPROFILEDEF(.AREA.,$,#19,#21,$);
xBimTeam/XbimWindowsUI#25=IFCDERIVEDPROFILEDEF(.AREA.,$,#20,#22,$);
xBimTeam/XbimWindowsUI#26=IFCCSHAPEPROFILEDEF(.AREA.,$,#18,50.,25.,5.,10.,2.,$);
xBimTeam/XbimWindowsUI#27=IFCPERSON($,$,'',$,$,$,$,$);
xBimTeam/XbimWindowsUI#28=IFCORGANIZATION($,'IfcOpenShell',$,$,$);
xBimTeam/XbimWindowsUI#29=IFCPERSONANDORGANIZATION(#27,#28,$);
xBimTeam/XbimWindowsUI#30=IFCAPPLICATION(#28,'0.5.0-dev','IfcOpenShell','IfcOpenShell');
xBimTeam/XbimWindowsUI#31=IFCOWNERHISTORY(#29,#30,$,.ADDED.,$,#29,#30,1394961734);
xBimTeam/XbimWindowsUI#32=IFCDIRECTION((0.,1.,0.));
xBimTeam/XbimWindowsUI#33=IFCDIRECTION((1.,0.,0.));
xBimTeam/XbimWindowsUI#34=IFCDIRECTION((0.,0.,1.));
xBimTeam/XbimWindowsUI#35=IFCCARTESIANPOINT((0.,0.,0.));
xBimTeam/XbimWindowsUI#36=IFCAXIS2PLACEMENT3D(#35,#34,#33);
xBimTeam/XbimWindowsUI#37=IFCGEOMETRICREPRESENTATIONCONTEXT('Plan','Model',3,1.E-005,#36,#32);
xBimTeam/XbimWindowsUI#38=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
xBimTeam/XbimWindowsUI#39=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
xBimTeam/XbimWindowsUI#40=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
xBimTeam/XbimWindowsUI#41=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174533),#40);
xBimTeam/XbimWindowsUI#42=IFCCONVERSIONBASEDUNIT(#38,.PLANEANGLEUNIT.,'Degrees',#41);
xBimTeam/XbimWindowsUI#43=IFCUNITASSIGNMENT((#39,#42));
xBimTeam/XbimWindowsUI#44=IFCPROJECT('2ksZObKFD9HusrYk4uMUU9',#31,'IfcCompositeProfileDef',$,$,$,$,(#37),#43);
xBimTeam/XbimWindowsUI#45=IFCDIRECTION((1.,0.,0.));
xBimTeam/XbimWindowsUI#46=IFCDIRECTION((0.,0.,1.));
xBimTeam/XbimWindowsUI#47=IFCCARTESIANPOINT((0.,0.,0.));
xBimTeam/XbimWindowsUI#48=IFCAXIS2PLACEMENT3D(#47,#46,#45);
xBimTeam/XbimWindowsUI#49=IFCLOCALPLACEMENT($,#48);
xBimTeam/XbimWindowsUI#50=IFCSITE('3UH8_fRJ14bO11RLWcfDaG',#31,$,$,$,#49,$,$,.ELEMENT.,$,$,$,$,$);
xBimTeam/XbimWindowsUI#51=IFCRELAGGREGATES('0d_e2pRBz5EwbcE2Jlxmor',#31,$,$,#44,(#50));
xBimTeam/XbimWindowsUI#52=IFCDIRECTION((1.,0.,0.));
xBimTeam/XbimWindowsUI#53=IFCDIRECTION((0.,0.,1.));
xBimTeam/XbimWindowsUI#54=IFCCARTESIANPOINT((0.,0.,0.));
xBimTeam/XbimWindowsUI#55=IFCAXIS2PLACEMENT3D(#54,#53,#52);
xBimTeam/XbimWindowsUI#56=IFCLOCALPLACEMENT(#49,#55);
xBimTeam/XbimWindowsUI#57=IFCBUILDING('0_d_HoUTX9CRwB2hQNCKfF',#31,$,$,$,#56,$,$,.ELEMENT.,$,$,$);
xBimTeam/XbimWindowsUI#58=IFCRELAGGREGATES('3YNTjz3UTAreL7rtMwgZja',#31,$,$,#50,(#57));
xBimTeam/XbimWindowsUI#59=IFCDIRECTION((1.,0.,0.));
xBimTeam/XbimWindowsUI#60=IFCDIRECTION((0.,0.,1.));
xBimTeam/XbimWindowsUI#61=IFCCARTESIANPOINT((0.,0.,0.));
xBimTeam/XbimWindowsUI#62=IFCAXIS2PLACEMENT3D(#61,#60,#59);
xBimTeam/XbimWindowsUI#63=IFCLOCALPLACEMENT(#56,#62);
xBimTeam/XbimWindowsUI#64=IFCBUILDINGSTOREY('2r7DzLsTvBOvBpy8KFQofF',#31,$,$,$,#63,$,$,.ELEMENT.,$);
xBimTeam/XbimWindowsUI#65=IFCRELAGGREGATES('1NiveFQ1n2N9_KPmICXHc8',#31,$,$,#57,(#64));
xBimTeam/XbimWindowsUI#66=IFCBUILDINGELEMENTPROXY('0Xroij9BHE2BHPOGPuqa$d',#31,'profile',$,$,#72,#81,$,$);
xBimTeam/XbimWindowsUI#67=IFCRELCONTAINEDINSPATIALSTRUCTURE('0duzsVh356ivGmTWCOFWGF',#31,$,$,(#66),#64);
xBimTeam/XbimWindowsUI#68=IFCDIRECTION((1.,0.,0.));
xBimTeam/XbimWindowsUI#69=IFCDIRECTION((0.,0.,1.));
xBimTeam/XbimWindowsUI#70=IFCCARTESIANPOINT((0.,0.,0.));
xBimTeam/XbimWindowsUI#71=IFCAXIS2PLACEMENT3D(#70,#69,#68);
xBimTeam/XbimWindowsUI#72=IFCLOCALPLACEMENT($,#71);
xBimTeam/XbimWindowsUI#73=IFCDIRECTION((0.,0.,1.));
xBimTeam/XbimWindowsUI#74=IFCDIRECTION((1.,0.,0.));
xBimTeam/XbimWindowsUI#75=IFCDIRECTION((0.,0.,1.));
xBimTeam/XbimWindowsUI#76=IFCCARTESIANPOINT((0.,0.,0.));
xBimTeam/XbimWindowsUI#77=IFCAXIS2PLACEMENT3D(#76,#75,#74);
xBimTeam/XbimWindowsUI#78=IFCCOMPOSITEPROFILEDEF(.AREA.,'IFC',(#23,#24,#25,#26),$);
xBimTeam/XbimWindowsUI#79=IFCEXTRUDEDAREASOLID(#78,#77,#73,20.);
xBimTeam/XbimWindowsUI#80=IFCSHAPEREPRESENTATION(#37,'Body','SweptSolid',(#79));
xBimTeam/XbimWindowsUI#81=IFCPRODUCTDEFINITIONSHAPE($,$,(#80));
ENDSEC;
END-ISO-10303-21;

Schulzey avatar May 28 '25 05:05 Schulzey

Thanks for this test case! Have moved to Geometry from WinUI as that's the likely area.

The model is valid according to the IFC Validator. Definitely looks like there's some disparity in handling of this across viewers, including xbim...

I'm assuming (but not certain) that BC Zoom is gets this closest to 'correct'

It looks like xbim GE 6.0 improves on GE4/5 (filleting etc) but the orientation of the 'IfcTShapeProfileDef' on the F is wrong.

xbim GE 4.0.1912

Image

xbim GE 5.0.782

Image

xbim GE 6.0

Image

Bonsai (Blender 4.3.0) - I need to check the latest

Image

Bimcollab Zoom

Image

The issue relates to

#25=IFCDERIVEDPROFILEDEF(.AREA.,$,#20,#22,$);

.. which is this TProfile

#20=IFCTSHAPEPROFILEDEF(.AREA.,$,#15,50.,40.,10.,10.,3.,2.,1.,2.,2.,$);

transformed by

#4=IFCCARTESIANPOINT((40.,0.));
#5=IFCDIRECTION((1.,0.));
#6=IFCDIRECTION((0.,-1.))
#22=IFCCARTESIANTRANSFORMATIONOPERATOR2D(#6,#5,#4,0.3);

andyward avatar May 29 '25 11:05 andyward