From c9c9334aef0c5cfea397316b863af1f04c42b7c0 Mon Sep 17 00:00:00 2001 From: Bruno Postle Date: Thu, 12 Mar 2026 06:18:47 +0000 Subject: [PATCH] Fix extension geometry to match rotated west wall Closes #24 --- _test_simple.ifc | 180 +++++++++++++++++++++++------------------------ 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/_test_simple.ifc b/_test_simple.ifc index 0553be7..3ccb9a0 100644 --- a/_test_simple.ifc +++ b/_test_simple.ifc @@ -4588,21 +4588,11 @@ DATA; #5960=IFCMAPPEDITEM(#5873,#5959); #5961=IFCSHAPEREPRESENTATION(#11,'Body','MappedRepresentation',(#5960)); #5962=IFCPRODUCTDEFINITIONSHAPE($,$,(#5961)); -#5963=IFCWALL('09HorAnUL0OQlDqI_PTE63',$,'extension south wall',$,$,#6072,#6018,$,$); +#5963=IFCWALL('09HorAnUL0OQlDqI_PTE63',$,'extension south wall',$,$,#8321,#8313,$,$); #5964=IFCWALL('3qcGaF0Yr4V9BffHarUr5$',$,'extension west wall',$,$,#8266,#6019,$,$); -#5965=IFCWALL('0tED2GeYz9XwxeQcd9Fn49',$,'extension east wall',$,$,#7069,#6020,$,$); +#5965=IFCWALL('0tED2GeYz9XwxeQcd9Fn49',$,'extension east wall',$,$,#8336,#8314,$,$); #5966=IFCWALL('2d1hv_$YX1kwDVs$GFNVtK',$,'service partition',$,$,#7099,#6021,$,$); -#5967=IFCWALL('1PaLULQ852m8y5R7mXVEHR',$,'wc-kitchen divider',$,$,#7114,#7165,$,$); -#5968=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.33),(4.,0.33),(4.,0.),(0.,0.))); -#5969=IFCINDEXEDPOLYCURVE(#5968,$,.F.); -#5970=IFCDIRECTION((0.,0.,1.)); -#5971=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#5969); -#5972=IFCCARTESIANPOINT((0.,0.,0.)); -#5973=IFCDIRECTION((0.,0.,1.)); -#5974=IFCDIRECTION((1.,0.,0.)); -#5975=IFCAXIS2PLACEMENT3D(#5972,#5973,#5974); -#5976=IFCEXTRUDEDAREASOLID(#5971,#5975,#5970,2.5); -#5977=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#5976)); +#5967=IFCWALL('1PaLULQ852m8y5R7mXVEHR',$,'wc-kitchen divider',$,$,#7114,#8316,$,$); #5978=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.33),(4.,0.33),(4.,0.),(0.,0.))); #5979=IFCINDEXEDPOLYCURVE(#5978,$,.F.); #5980=IFCDIRECTION((0.,0.,1.)); @@ -4613,16 +4603,6 @@ DATA; #5985=IFCAXIS2PLACEMENT3D(#5982,#5983,#5984); #5986=IFCEXTRUDEDAREASOLID(#5981,#5985,#5980,2.5); #5987=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#5986)); -#5988=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.33),(4.,0.33),(4.,0.),(0.,0.))); -#5989=IFCINDEXEDPOLYCURVE(#5988,$,.F.); -#5990=IFCDIRECTION((0.,0.,1.)); -#5991=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#5989); -#5992=IFCCARTESIANPOINT((0.,0.,0.)); -#5993=IFCDIRECTION((0.,0.,1.)); -#5994=IFCDIRECTION((1.,0.,0.)); -#5995=IFCAXIS2PLACEMENT3D(#5992,#5993,#5994); -#5996=IFCEXTRUDEDAREASOLID(#5991,#5995,#5990,2.5); -#5997=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#5996)); #5998=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.1),(4.,0.1),(4.,0.),(0.,0.))); #5999=IFCINDEXEDPOLYCURVE(#5998,$,.F.); #6000=IFCDIRECTION((0.,0.,1.)); @@ -4633,15 +4613,8 @@ DATA; #6005=IFCAXIS2PLACEMENT3D(#6002,#6003,#6004); #6006=IFCEXTRUDEDAREASOLID(#6001,#6005,#6000,2.5); #6007=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#6006)); -#6018=IFCPRODUCTDEFINITIONSHAPE($,$,(#5977)); #6019=IFCPRODUCTDEFINITIONSHAPE($,$,(#5987)); -#6020=IFCPRODUCTDEFINITIONSHAPE($,$,(#5997)); #6021=IFCPRODUCTDEFINITIONSHAPE($,$,(#6007)); -#6068=IFCCARTESIANPOINT((-2.,-7.,0.)); -#6069=IFCDIRECTION((0.,0.,1.)); -#6070=IFCDIRECTION((1.,0.,0.)); -#6071=IFCAXIS2PLACEMENT3D(#6068,#6069,#6070); -#6072=IFCLOCALPLACEMENT(#92,#6071); #6073=IFCMATERIALLAYERSETUSAGE(#142,.AXIS2.,.POSITIVE.,0.,$); #6074=IFCRELASSOCIATESMATERIAL('0LY10ooOn5GPMHfHRpxqiK',$,$,$,(#5964,#5965,#5963),#6073); #6075=IFCOPENINGELEMENT('3V8ZCx7M9EbeKjZ3Gq3b0s',$,'service lobby door opening',$,$,#6177,#6160,$,$); @@ -4672,19 +4645,7 @@ DATA; #6189=IFCMAPPEDITEM(#4665,#6188); #6190=IFCSHAPEREPRESENTATION(#11,'Body','MappedRepresentation',(#6189)); #6191=IFCPRODUCTDEFINITIONSHAPE($,$,(#6190)); -#6192=IFCROOF('257YMF9XT5EfOlTqHFubyQ',$,'extension roof',$,$,#6209,#6199,$,.FLAT_ROOF.); -#6193=IFCCARTESIANPOINTLIST2D(((0.,0.),(4.,0.),(4.,4.),(0.,4.))); -#6194=IFCINDEXEDPOLYCURVE(#6193,$,$); -#6195=IFCDIRECTION((0.,0.,1.)); -#6196=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#6194); -#6197=IFCEXTRUDEDAREASOLID(#6196,$,#6195,0.15); -#6198=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#6197)); -#6199=IFCPRODUCTDEFINITIONSHAPE($,$,(#6198)); -#6205=IFCCARTESIANPOINT((-2.,-7.,2.5)); -#6206=IFCDIRECTION((0.,0.,1.)); -#6207=IFCDIRECTION((1.,0.,0.)); -#6208=IFCAXIS2PLACEMENT3D(#6205,#6206,#6207); -#6209=IFCLOCALPLACEMENT(#92,#6208); +#6192=IFCROOF('257YMF9XT5EfOlTqHFubyQ',$,'extension roof',$,$,#8346,#8315,$,.FLAT_ROOF.); #6210=IFCSPACE('0JOHKkJrL8OOCGA1QzJYIb',$,'service-lobby/0',$,$,#8236,$,$,$,.INTERNAL.,$); #6211=IFCSPACE('2Qtzhe5mX7wxr_2ssG$Ce3',$,'wc/0',$,$,#8246,$,$,$,.INTERNAL.,$); #6212=IFCSPACE('27$oFMxMb3mxS5A94OLnI_',$,'kitchenette/0',$,$,#8151,$,$,$,.INTERNAL.,$); @@ -4769,9 +4730,9 @@ DATA; #6533=IFCBOOLEANCLIPPINGRESULT(.DIFFERENCE.,#6526,#6532); #6534=IFCSHAPEREPRESENTATION(#11,'Body','Clipping',(#6533)); #6535=IFCOPENINGELEMENT('3XCVGMKkLCDBw_cj6UfBkX',$,'wc west window opening',$,$,#7084,#6579,$,.OPENING.); -#6536=IFCOPENINGELEMENT('3Um_AZAh19VwS2QVi$vxVC',$,'wc south window opening',$,$,#6614,#6580,$,.OPENING.); +#6536=IFCOPENINGELEMENT('3Um_AZAh19VwS2QVi$vxVC',$,'wc south window opening',$,$,#8351,#6580,$,.OPENING.); #6537=IFCOPENINGELEMENT('0eEGfmac97Pw2r_1OHXmAZ',$,'kitchenette east window opening',$,$,#6620,#6581,$,.OPENING.); -#6538=IFCOPENINGELEMENT('3ptm7A8Yb0K8zWa9TWO1JY',$,'kitchenette south window opening',$,$,#6626,#6582,$,.OPENING.); +#6538=IFCOPENINGELEMENT('3ptm7A8Yb0K8zWa9TWO1JY',$,'kitchenette south window opening',$,$,#8366,#6582,$,.OPENING.); #6539=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.5),(0.625,0.5),(0.625,0.),(0.,0.))); #6540=IFCINDEXEDPOLYCURVE(#6539,$,.F.); #6541=IFCDIRECTION((0.,0.,1.)); @@ -4818,27 +4779,17 @@ DATA; #6582=IFCPRODUCTDEFINITIONSHAPE($,$,(#6578)); #6603=IFCRELVOIDSELEMENT('1$iDGNNuP7IwBE_aguxF3v',$,$,$,#5964,#6535); #6609=IFCRELVOIDSELEMENT('0tBIGSIBzEcAP4isHqsqX0',$,$,$,#5963,#6536); -#6610=IFCCARTESIANPOINT((0.6875,0.,0.9)); -#6611=IFCDIRECTION((0.,0.,1.)); -#6612=IFCDIRECTION((1.,0.,0.)); -#6613=IFCAXIS2PLACEMENT3D(#6610,#6611,#6612); -#6614=IFCLOCALPLACEMENT(#6072,#6613); #6615=IFCRELVOIDSELEMENT('0DOLtLxWL7f9ddu5Lyvx78',$,$,$,#5965,#6537); #6616=IFCCARTESIANPOINT((3.3125,0.,0.9)); #6617=IFCDIRECTION((0.,0.,1.)); #6618=IFCDIRECTION((-1.,0.,0.)); #6619=IFCAXIS2PLACEMENT3D(#6616,#6617,#6618); -#6620=IFCLOCALPLACEMENT(#7069,#6619); +#6620=IFCLOCALPLACEMENT(#8336,#6619); #6621=IFCRELVOIDSELEMENT('1CRb_RTTD7gQHKyE6v3jiG',$,$,$,#5963,#6538); -#6622=IFCCARTESIANPOINT((2.6875,0.,0.9)); -#6623=IFCDIRECTION((0.,0.,1.)); -#6624=IFCDIRECTION((1.,0.,0.)); -#6625=IFCAXIS2PLACEMENT3D(#6622,#6623,#6624); -#6626=IFCLOCALPLACEMENT(#6072,#6625); #6627=IFCWINDOW('2NBW01IIrFpfL9S45NhAO2',$,'wc west window',$,$,#8276,#6684,$,$,$,$,$,$); -#6628=IFCWINDOW('2bn9sUKCf3qfl2ZMPB3w2N',$,'wc south window',$,$,#8251,#6692,$,$,$,$,$,$); -#6629=IFCWINDOW('14ThWkSln9MwS3k9dCmXhA',$,'kitchenette east window',$,$,#8156,#6700,$,$,$,$,$,$); -#6630=IFCWINDOW('08qEBaJOv60QsZlHGnKpBY',$,'kitchenette south window',$,$,#8161,#6708,$,$,$,$,$,$); +#6628=IFCWINDOW('2bn9sUKCf3qfl2ZMPB3w2N',$,'wc south window',$,$,#8361,#6692,$,$,$,$,$,$); +#6629=IFCWINDOW('14ThWkSln9MwS3k9dCmXhA',$,'kitchenette east window',$,$,#8341,#6700,$,$,$,$,$,$); +#6630=IFCWINDOW('08qEBaJOv60QsZlHGnKpBY',$,'kitchenette south window',$,$,#8376,#6708,$,$,$,$,$,$); #6651=IFCRELCONTAINEDINSPATIALSTRUCTURE('3ggp2Tvq93tOVwbmrsMkNo',$,$,$,(#6627,#6628,#6957,#6958),#6211); #6662=IFCRELCONTAINEDINSPATIALSTRUCTURE('26eQDqCyLBdeUTM0szQZ4X',$,$,$,(#6630,#6959,#6960,#6629),#6212); #6673=IFCRELFILLSELEMENT('1P7IcUWFj0WfjXY6QIlMbR',$,$,$,#6535,#6627); @@ -5124,11 +5075,6 @@ DATA; #7022=IFCCARTESIANTRANSFORMATIONOPERATOR3D(#7019,#7020,#7018,1.,#7021); #7023=IFCMAPPEDITEM(#6955,#7022); #7024=IFCSHAPEREPRESENTATION(#24,'Body','MappedRepresentation',(#7023)); -#7065=IFCCARTESIANPOINT((2.,-7.,0.)); -#7066=IFCDIRECTION((0.,0.,1.)); -#7067=IFCDIRECTION((0.,1.,0.)); -#7068=IFCAXIS2PLACEMENT3D(#7065,#7066,#7067); -#7069=IFCLOCALPLACEMENT(#92,#7068); #7080=IFCCARTESIANPOINT((3.3125,0.,0.9)); #7081=IFCDIRECTION((0.,0.,1.)); #7082=IFCDIRECTION((1.,0.,0.)); @@ -5164,17 +5110,6 @@ DATA; #7142=IFCDIRECTION((1.,0.,0.)); #7143=IFCAXIS2PLACEMENT3D(#7140,#7141,#7142); #7144=IFCLOCALPLACEMENT(#7139,#7143); -#7155=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.1),(2.67,0.1),(2.67,0.),(0.,0.))); -#7156=IFCINDEXEDPOLYCURVE(#7155,$,.F.); -#7157=IFCDIRECTION((0.,0.,1.)); -#7158=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#7156); -#7159=IFCCARTESIANPOINT((0.,0.,0.)); -#7160=IFCDIRECTION((0.,0.,1.)); -#7161=IFCDIRECTION((1.,0.,0.)); -#7162=IFCAXIS2PLACEMENT3D(#7159,#7160,#7161); -#7163=IFCEXTRUDEDAREASOLID(#7158,#7162,#7157,2.5); -#7164=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#7163)); -#7165=IFCPRODUCTDEFINITIONSHAPE($,$,(#7164)); #7166=IFCCARTESIANPOINT((0.,0.,0.)); #7167=IFCDIRECTION((0.,0.,1.)); #7168=IFCDIRECTION((1.,0.,0.)); @@ -5965,16 +5900,6 @@ DATA; #8149=IFCDIRECTION((1.,0.,0.)); #8150=IFCAXIS2PLACEMENT3D(#8147,#8148,#8149); #8151=IFCLOCALPLACEMENT(#92,#8150); -#8152=IFCCARTESIANPOINT((2.625,0.,0.)); -#8153=IFCDIRECTION((0.,0.,1.)); -#8154=IFCDIRECTION((-1.,0.,0.)); -#8155=IFCAXIS2PLACEMENT3D(#8152,#8153,#8154); -#8156=IFCLOCALPLACEMENT(#6620,#8155); -#8157=IFCCARTESIANPOINT((0.,0.,0.)); -#8158=IFCDIRECTION((0.,0.,1.)); -#8159=IFCDIRECTION((1.,0.,0.)); -#8160=IFCAXIS2PLACEMENT3D(#8157,#8158,#8159); -#8161=IFCLOCALPLACEMENT(#6626,#8160); #8162=IFCCARTESIANPOINT((2.,-5.775,0.85)); #8163=IFCDIRECTION((0.,0.,1.)); #8164=IFCDIRECTION((0.,-1.,0.)); @@ -6060,11 +5985,6 @@ DATA; #8244=IFCDIRECTION((1.,0.,0.)); #8245=IFCAXIS2PLACEMENT3D(#8242,#8243,#8244); #8246=IFCLOCALPLACEMENT(#92,#8245); -#8247=IFCCARTESIANPOINT((0.,0.,0.)); -#8248=IFCDIRECTION((0.,0.,1.)); -#8249=IFCDIRECTION((1.,0.,0.)); -#8250=IFCAXIS2PLACEMENT3D(#8247,#8248,#8249); -#8251=IFCLOCALPLACEMENT(#6614,#8250); #8252=IFCCARTESIANPOINT((0.,-5.75,0.75)); #8253=IFCDIRECTION((0.,0.,1.)); #8254=IFCDIRECTION((0.,-1.,0.)); @@ -6085,5 +6005,85 @@ DATA; #8274=IFCDIRECTION((1.00000000595915,1.15725347023027E-17,0.)); #8275=IFCAXIS2PLACEMENT3D(#8272,#8273,#8274); #8276=IFCLOCALPLACEMENT(#7084,#8275); +#8277=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.33),(3.261,0.33),(3.261,0.),(0.,0.))); +#8278=IFCINDEXEDPOLYCURVE(#8277,$,.F.); +#8279=IFCDIRECTION((0.,0.,1.)); +#8280=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#8278); +#8281=IFCCARTESIANPOINT((0.,0.,0.)); +#8282=IFCDIRECTION((0.,0.,1.)); +#8283=IFCDIRECTION((1.,0.,0.)); +#8284=IFCAXIS2PLACEMENT3D(#8281,#8282,#8283); +#8285=IFCEXTRUDEDAREASOLID(#8280,#8284,#8279,2.5); +#8286=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#8285)); +#8287=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.33),(4.139,0.33),(4.139,0.),(0.,0.))); +#8288=IFCINDEXEDPOLYCURVE(#8287,$,.F.); +#8289=IFCDIRECTION((0.,0.,1.)); +#8290=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#8288); +#8291=IFCCARTESIANPOINT((0.,0.,0.)); +#8292=IFCDIRECTION((0.,0.,1.)); +#8293=IFCDIRECTION((1.,0.,0.)); +#8294=IFCAXIS2PLACEMENT3D(#8291,#8292,#8293); +#8295=IFCEXTRUDEDAREASOLID(#8290,#8294,#8289,2.5); +#8296=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#8295)); +#8297=IFCCARTESIANPOINTLIST2D(((0.,0.),(3.261,0.),(3.261,4.139),(-0.936,3.889))); +#8298=IFCINDEXEDPOLYCURVE(#8297,$,$); +#8299=IFCDIRECTION((0.,0.,1.)); +#8300=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#8298); +#8301=IFCEXTRUDEDAREASOLID(#8300,$,#8299,0.15); +#8302=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#8301)); +#8303=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,0.1),(2.809,0.1),(2.809,0.),(0.,0.))); +#8304=IFCINDEXEDPOLYCURVE(#8303,$,.F.); +#8305=IFCDIRECTION((0.,0.,1.)); +#8306=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#8304); +#8307=IFCCARTESIANPOINT((0.,0.,0.)); +#8308=IFCDIRECTION((0.,0.,1.)); +#8309=IFCDIRECTION((1.,0.,0.)); +#8310=IFCAXIS2PLACEMENT3D(#8307,#8308,#8309); +#8311=IFCEXTRUDEDAREASOLID(#8306,#8310,#8305,2.5); +#8312=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#8311)); +#8313=IFCPRODUCTDEFINITIONSHAPE($,$,(#8286)); +#8314=IFCPRODUCTDEFINITIONSHAPE($,$,(#8296)); +#8315=IFCPRODUCTDEFINITIONSHAPE($,$,(#8302)); +#8316=IFCPRODUCTDEFINITIONSHAPE($,$,(#8312)); +#8317=IFCCARTESIANPOINT((-1.261,-7.139,0.)); +#8318=IFCDIRECTION((0.,0.,1.)); +#8319=IFCDIRECTION((1.,0.,0.)); +#8320=IFCAXIS2PLACEMENT3D(#8317,#8318,#8319); +#8321=IFCLOCALPLACEMENT(#92,#8320); +#8332=IFCCARTESIANPOINT((2.,-7.139,0.)); +#8333=IFCDIRECTION((0.,0.,1.)); +#8334=IFCDIRECTION((0.,1.,0.)); +#8335=IFCAXIS2PLACEMENT3D(#8332,#8333,#8334); +#8336=IFCLOCALPLACEMENT(#92,#8335); +#8337=IFCCARTESIANPOINT((2.486,0.,0.)); +#8338=IFCDIRECTION((0.,0.,1.)); +#8339=IFCDIRECTION((-1.,0.,0.)); +#8340=IFCAXIS2PLACEMENT3D(#8337,#8338,#8339); +#8341=IFCLOCALPLACEMENT(#6620,#8340); +#8342=IFCCARTESIANPOINT((-1.261,-7.139,2.5)); +#8343=IFCDIRECTION((0.,0.,1.)); +#8344=IFCDIRECTION((1.,0.,0.)); +#8345=IFCAXIS2PLACEMENT3D(#8342,#8343,#8344); +#8346=IFCLOCALPLACEMENT(#92,#8345); +#8347=IFCCARTESIANPOINT((0.636,0.,0.9)); +#8348=IFCDIRECTION((0.,0.,1.)); +#8349=IFCDIRECTION((1.,0.,0.)); +#8350=IFCAXIS2PLACEMENT3D(#8347,#8348,#8349); +#8351=IFCLOCALPLACEMENT(#8321,#8350); +#8357=IFCCARTESIANPOINT((0.,0.,0.)); +#8358=IFCDIRECTION((0.,0.,1.)); +#8359=IFCDIRECTION((1.,0.,0.)); +#8360=IFCAXIS2PLACEMENT3D(#8357,#8358,#8359); +#8361=IFCLOCALPLACEMENT(#8351,#8360); +#8362=IFCCARTESIANPOINT((1.9485,0.,0.9)); +#8363=IFCDIRECTION((0.,0.,1.)); +#8364=IFCDIRECTION((1.,0.,0.)); +#8365=IFCAXIS2PLACEMENT3D(#8362,#8363,#8364); +#8366=IFCLOCALPLACEMENT(#8321,#8365); +#8372=IFCCARTESIANPOINT((0.,0.,0.)); +#8373=IFCDIRECTION((0.,0.,1.)); +#8374=IFCDIRECTION((1.,0.,0.)); +#8375=IFCAXIS2PLACEMENT3D(#8372,#8373,#8374); +#8376=IFCLOCALPLACEMENT(#8366,#8375); ENDSEC; END-ISO-10303-21;