From d230c9c4100516d2e3cad2f0d91b606cc1ceaf89 Mon Sep 17 00:00:00 2001 From: Bruno Postle Date: Sun, 1 Mar 2026 17:09:33 +0000 Subject: [PATCH] Fix porch wall lean: replace x_angle with half-space clipping (issue #19) --- _test_simple.ifc | 58 ++++++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/_test_simple.ifc b/_test_simple.ifc index f3d0147..2c79fe2 100644 --- a/_test_simple.ifc +++ b/_test_simple.ifc @@ -4198,7 +4198,7 @@ DATA; #5022=IFCWALL('1_$aWwKov0Sf7It_vDy_tx',$,'porch south wall',$,$,#5033,#5028,$,$); #5023=IFCMATERIALLAYERSETUSAGE(#142,.AXIS2.,.POSITIVE.,0.,$); #5024=IFCRELASSOCIATESMATERIAL('2pXAM9FwrFY9lC4Sz49sXz',$,$,$,(#5022),#5023); -#5028=IFCPRODUCTDEFINITIONSHAPE($,$,(#5353,#5734)); +#5028=IFCPRODUCTDEFINITIONSHAPE($,$,(#5353,#6534)); #5029=IFCCARTESIANPOINT((2.25000023841858,-1.15582501888275,0.)); #5030=IFCDIRECTION((0.,0.,1.)); #5031=IFCDIRECTION((1.,0.,0.)); @@ -4222,7 +4222,7 @@ DATA; #5072=IFCWALL('2donwy3Dr5CPaKmOIdQQcb',$,'porch north wall',$,$,#5181,#5078,$,$); #5073=IFCMATERIALLAYERSETUSAGE(#142,.AXIS2.,.POSITIVE.,0.,$); #5074=IFCRELASSOCIATESMATERIAL('3apSz7di97iBofXEAfmuJI',$,$,$,(#5072),#5073); -#5078=IFCPRODUCTDEFINITIONSHAPE($,$,(#5366,#5724)); +#5078=IFCPRODUCTDEFINITIONSHAPE($,$,(#5366,#6517)); #5094=IFCPROPERTYSET('20$m9HA010xfEFnKAwwHBu',$,'EPset_Parametric',$,(#5096)); #5095=IFCRELDEFINESBYPROPERTIES('1cdFWS8Er9b8kFsrQJ0Aq0',$,$,$,(#5072),#5094); #5096=IFCPROPERTYSINGLEVALUE('Engine',$,IFCLABEL('Bonsai.DumbLayer2'),$); @@ -4490,26 +4490,6 @@ DATA; #5712=IFCAXIS2PLACEMENT3D(#5709,#5710,#5711); #5713=IFCEXTRUDEDAREASOLID(#5708,#5712,#5707,2.384); #5714=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#5713)); -#5715=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.363216743451473),(1.9,0.363216743451473),(1.9,0.),(0.,0.))); -#5716=IFCINDEXEDPOLYCURVE(#5715,$,.F.); -#5717=IFCDIRECTION((0.,0.417779559592008,0.908548424459097)); -#5718=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#5716); -#5719=IFCCARTESIANPOINT((0.,0.,0.)); -#5720=IFCDIRECTION((0.,0.,1.)); -#5721=IFCDIRECTION((1.,0.,0.)); -#5722=IFCAXIS2PLACEMENT3D(#5719,#5720,#5721); -#5723=IFCEXTRUDEDAREASOLID(#5718,#5722,#5717,2.62396580723731); -#5724=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#5723)); -#5725=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.363216743451473),(1.9,0.363216743451473),(1.9,0.),(0.,0.))); -#5726=IFCINDEXEDPOLYCURVE(#5725,$,.F.); -#5727=IFCDIRECTION((0.,-0.417779559592008,0.908548424459097)); -#5728=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#5726); -#5729=IFCCARTESIANPOINT((0.,0.,0.)); -#5730=IFCDIRECTION((0.,0.,1.)); -#5731=IFCDIRECTION((1.,0.,0.)); -#5732=IFCAXIS2PLACEMENT3D(#5729,#5730,#5731); -#5733=IFCEXTRUDEDAREASOLID(#5728,#5732,#5727,3.58814116258122); -#5734=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#5733)); #5735=IFCPROPERTYSINGLEVALUE('OverallHeight',$,IFCREAL(0.995),$); #5736=IFCPROPERTYSINGLEVALUE('OverallWidth',$,IFCREAL(0.625),$); #5737=IFCPROPERTYSET('0DJLScEs53MwbL_Z4FP0x2',$,'EPset_Opening',$,(#5735,#5736)); @@ -4900,5 +4880,39 @@ DATA; #6464=IFCDIRECTION((1.,0.,0.)); #6465=IFCAXIS2PLACEMENT3D(#6462,#6463,#6464); #6466=IFCLOCALPLACEMENT($,#6465); +#6501=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.33),(1.9,0.33),(1.9,0.),(0.,0.))); +#6502=IFCINDEXEDPOLYCURVE(#6501,$,.F.); +#6503=IFCDIRECTION((0.,0.,1.)); +#6504=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#6502); +#6505=IFCCARTESIANPOINT((0.,0.,0.)); +#6506=IFCDIRECTION((0.,0.,1.)); +#6507=IFCDIRECTION((1.,0.,0.)); +#6508=IFCAXIS2PLACEMENT3D(#6505,#6506,#6507); +#6509=IFCEXTRUDEDAREASOLID(#6504,#6508,#6503,3.5); +#6510=IFCCARTESIANPOINT((0.,0.,2.384)); +#6511=IFCDIRECTION((0.419,0.,-0.908)); +#6512=IFCDIRECTION((0.,-1.,0.)); +#6513=IFCAXIS2PLACEMENT3D(#6510,#6511,#6512); +#6514=IFCPLANE(#6513); +#6515=IFCHALFSPACESOLID(#6514,.F.); +#6516=IFCBOOLEANCLIPPINGRESULT(.DIFFERENCE.,#6509,#6515); +#6517=IFCSHAPEREPRESENTATION(#11,'Body','Clipping',(#6516)); +#6518=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.33),(1.9,0.33),(1.9,0.),(0.,0.))); +#6519=IFCINDEXEDPOLYCURVE(#6518,$,.F.); +#6520=IFCDIRECTION((0.,0.,1.)); +#6521=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#6519); +#6522=IFCCARTESIANPOINT((0.,0.,0.)); +#6523=IFCDIRECTION((0.,0.,1.)); +#6524=IFCDIRECTION((1.,0.,0.)); +#6525=IFCAXIS2PLACEMENT3D(#6522,#6523,#6524); +#6526=IFCEXTRUDEDAREASOLID(#6521,#6525,#6520,3.5); +#6527=IFCCARTESIANPOINT((0.,0.,3.26)); +#6528=IFCDIRECTION((-0.419,0.,-0.908)); +#6529=IFCDIRECTION((0.,1.,-0.)); +#6530=IFCAXIS2PLACEMENT3D(#6527,#6528,#6529); +#6531=IFCPLANE(#6530); +#6532=IFCHALFSPACESOLID(#6531,.F.); +#6533=IFCBOOLEANCLIPPINGRESULT(.DIFFERENCE.,#6526,#6532); +#6534=IFCSHAPEREPRESENTATION(#11,'Body','Clipping',(#6533)); ENDSEC; END-ISO-10303-21;