diff --git a/src/blenderbim/blenderbim/bim/data/libraries/IFC4 AU Library.ifc b/src/blenderbim/blenderbim/bim/data/libraries/IFC4 AU Library.ifc index 38a59b0512..a68466690b 100644 --- a/src/blenderbim/blenderbim/bim/data/libraries/IFC4 AU Library.ifc +++ b/src/blenderbim/blenderbim/bim/data/libraries/IFC4 AU Library.ifc @@ -20,7 +20,7 @@ DATA; #13=IFCAXIS2PLACEMENT2D(#11,#12); #14=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Plan',2,1.E-05,#13,$); #15=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#10,$,.MODEL_VIEW.,$); -#16=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Plan',*,*,*,*,#14,$,.PLAN_VIEW.,$); +#16=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Plan',*,*,*,*,#14,$,.PLAN_VIEW.,$); #17=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,1300.),(680.,1300.),(680.,0.))); #18=IFCINDEXEDPOLYCURVE(#17,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #19=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#18); @@ -33,7 +33,7 @@ DATA; #26=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#25)); #27=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,1300.),(680.,1300.),(680.,0.))); #28=IFCINDEXEDPOLYCURVE(#27,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#29=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#28)); +#29=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#28)); #30=IFCFURNITURETYPE('2kEUNMOr971ebJA80MsrUq',$,'Cot mattress',$,$,$,(#35,#40),$,$,.NOTDEFINED.,.NOTDEFINED.); #31=IFCCARTESIANPOINT((0.,0.,0.)); #32=IFCDIRECTION((1.,0.,0.)); @@ -50,7 +50,7 @@ DATA; #43=IFCINDEXEDPOLYCURVE(#42,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #44=IFCCARTESIANPOINTLIST2D(((0.,1598.),(184.,1598.),(184.,1880.),(184.,1598.),(644.,1598.),(736.,1559.89235226168),(736.,1880.),(736.,1559.89235226168),(920.,1483.67705678503))); #45=IFCINDEXEDPOLYCURVE(#44,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9))),$); -#46=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#43,#45)); +#46=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#43,#45)); #47=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,1880.),(920.,1880.),(920.,0.))); #48=IFCINDEXEDPOLYCURVE(#47,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #49=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#48); @@ -76,7 +76,7 @@ DATA; #69=IFCINDEXEDPOLYCURVE(#68,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #70=IFCCARTESIANPOINTLIST2D(((0.,1725.5),(184.,1725.5),(184.,2030.),(184.,1725.5),(644.,1725.5),(736.,1687.39235226168),(736.,2030.),(736.,1687.39235226168),(920.,1611.17705678503))); #71=IFCINDEXEDPOLYCURVE(#70,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9))),$); -#72=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#69,#71)); +#72=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#69,#71)); #73=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,2030.),(920.,2030.),(920.,0.))); #74=IFCINDEXEDPOLYCURVE(#73,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #75=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#74); @@ -102,7 +102,7 @@ DATA; #95=IFCINDEXEDPOLYCURVE(#94,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #96=IFCCARTESIANPOINTLIST2D(((0.,1725.5),(214.,1725.5),(214.,2030.),(214.,1725.5),(749.,1725.5),(856.,1681.17914882608),(856.,2030.),(856.,1681.17914882608),(1070.,1592.53744647824))); #97=IFCINDEXEDPOLYCURVE(#96,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9))),$); -#98=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#95,#97)); +#98=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#95,#97)); #99=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,2030.),(1070.,2030.),(1070.,0.))); #100=IFCINDEXEDPOLYCURVE(#99,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #101=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#100); @@ -128,7 +128,7 @@ DATA; #121=IFCINDEXEDPOLYCURVE(#120,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #122=IFCCARTESIANPOINTLIST2D(((0.,1598.),(276.,1598.),(276.,1880.),(276.,1598.),(966.,1598.),(1104.,1540.83852839251),(1104.,1880.),(1104.,1540.83852839251),(1380.,1426.51558517754))); #123=IFCINDEXEDPOLYCURVE(#122,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9))),$); -#124=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#121,#123)); +#124=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#121,#123)); #125=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,1880.),(1380.,1880.),(1380.,0.))); #126=IFCINDEXEDPOLYCURVE(#125,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #127=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#126); @@ -154,7 +154,7 @@ DATA; #147=IFCINDEXEDPOLYCURVE(#146,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #148=IFCCARTESIANPOINTLIST2D(((0.,1725.5),(306.,1725.5),(306.,2030.),(306.,1725.5),(1071.,1725.5),(1224.,1662.12532495692),(1224.,2030.),(1224.,1662.12532495692),(1530.,1535.37597487075))); #149=IFCINDEXEDPOLYCURVE(#148,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9))),$); -#150=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#147,#149)); +#150=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#147,#149)); #151=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,2030.),(1530.,2030.),(1530.,0.))); #152=IFCINDEXEDPOLYCURVE(#151,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #153=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#152); @@ -180,7 +180,7 @@ DATA; #173=IFCINDEXEDPOLYCURVE(#172,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #174=IFCCARTESIANPOINTLIST2D(((0.,1725.5),(366.,1725.5),(366.,2030.),(366.,1725.5),(1281.,1725.5),(1464.,1649.69891808572),(1464.,2030.),(1464.,1649.69891808572),(1830.,1498.09675425717))); #175=IFCINDEXEDPOLYCURVE(#174,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9))),$); -#176=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#173,#175)); +#176=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#173,#175)); #177=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,2030.),(1830.,2030.),(1830.,0.))); #178=IFCINDEXEDPOLYCURVE(#177,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #179=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#178); @@ -206,7 +206,7 @@ DATA; #199=IFCINDEXEDPOLYCURVE(#198,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #200=IFCCARTESIANPOINTLIST2D(((0.,1725.5),(406.,1725.5),(406.,2030.),(406.,1725.5),(1421.,1725.5),(1624.,1641.41464683826),(1624.,2030.),(1624.,1641.41464683826),(2030.,1473.24394051478))); #201=IFCINDEXEDPOLYCURVE(#200,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9))),$); -#202=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#199,#201)); +#202=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#199,#201)); #203=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,2030.),(2030.,2030.),(2030.,0.))); #204=IFCINDEXEDPOLYCURVE(#203,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #205=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#204); @@ -258,7 +258,7 @@ DATA; #251=IFCINDEXEDPOLYCURVE(#250,(IFCLINEINDEX((1,2))),$); #252=IFCCARTESIANPOINTLIST2D(((1700.,60.),(1700.,540.))); #253=IFCINDEXEDPOLYCURVE(#252,(IFCLINEINDEX((1,2))),$); -#254=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#235,#237,#239,#241,#243,#245,#247,#249,#251,#253)); +#254=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#235,#237,#239,#241,#243,#245,#247,#249,#251,#253)); #255=IFCFURNITURETYPE('0WGtGdz3L6kw6EpV_Y1ykb',$,'ADG Main Bedroom Wardrobe',$,$,$,(#260,#265),$,$,.NOTDEFINED.,.NOTDEFINED.); #256=IFCCARTESIANPOINT((0.,0.,0.)); #257=IFCDIRECTION((1.,0.,0.)); @@ -292,7 +292,7 @@ DATA; #285=IFCINDEXEDPOLYCURVE(#284,(IFCLINEINDEX((1,2))),$); #286=IFCCARTESIANPOINTLIST2D(((900.,60.),(900.,540.))); #287=IFCINDEXEDPOLYCURVE(#286,(IFCLINEINDEX((1,2))),$); -#288=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#277,#279,#281,#283,#285,#287)); +#288=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#277,#279,#281,#283,#285,#287)); #289=IFCFURNITURETYPE('3kmMjarNP2buFFE$Wfvc_G',$,'Neufert Single Person Wardrobe',$,$,$,(#294,#299),$,$,.NOTDEFINED.,.NOTDEFINED.); #290=IFCCARTESIANPOINT((0.,0.,0.)); #291=IFCDIRECTION((1.,0.,0.)); @@ -365,7 +365,7 @@ DATA; #358=IFCINDEXEDPOLYCURVE(#357,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #359=IFCCARTESIANPOINTLIST2D(((-260.,-400.),(-260.,-300.),(-183.847763061523,-116.152221679688),(0.,-40.),(183.847778320312,-116.152221679688),(260.,-300.),(260.,-400.))); #360=IFCINDEXEDPOLYCURVE(#359,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); -#361=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#356,#358,#360)); +#361=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#356,#358,#360)); #362=IFCFURNITURETYPE('3E02W0iJXEE8VtAtZO5v90',$,'Neufert Retail Dining Chair',$,$,$,(#367,#372),$,$,.NOTDEFINED.,.NOTDEFINED.); #363=IFCCARTESIANPOINT((0.,0.,0.)); #364=IFCDIRECTION((1.,0.,0.)); @@ -438,7 +438,7 @@ DATA; #431=IFCINDEXEDPOLYCURVE(#430,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #432=IFCCARTESIANPOINTLIST2D(((-120.,-300.),(-120.,-150.),(-84.8528137207031,-65.1471862792969),(0.,-30.),(84.8528137207031,-65.1471862792969),(120.,-150.),(120.,-300.))); #433=IFCINDEXEDPOLYCURVE(#432,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); -#434=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#429,#431,#433)); +#434=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#429,#431,#433)); #435=IFCFURNITURETYPE('0WHJugPWL8Pw0f9nWK09RM',$,'Neufert Retail Bar Stool',$,$,$,(#440,#445),$,$,.NOTDEFINED.,.NOTDEFINED.); #436=IFCCARTESIANPOINT((0.,0.,0.)); #437=IFCDIRECTION((1.,0.,0.)); @@ -462,7 +462,7 @@ DATA; #455=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#454)); #456=IFCCARTESIANPOINTLIST2D(((-350.,-250.),(-350.,250.),(350.,250.),(350.,-250.))); #457=IFCINDEXEDPOLYCURVE(#456,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#458=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#457)); +#458=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#457)); #459=IFCFURNITURETYPE('15pg2XkRzA698JaWQp2_GL',$,'Generic Large Bedside Table',$,$,$,(#464,#469),$,$,.NOTDEFINED.,.NOTDEFINED.); #460=IFCCARTESIANPOINT((0.,0.,0.)); #461=IFCDIRECTION((1.,0.,0.)); @@ -486,7 +486,7 @@ DATA; #479=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#478)); #480=IFCCARTESIANPOINTLIST2D(((-300.,-225.),(-300.,225.),(300.,225.),(300.,-225.))); #481=IFCINDEXEDPOLYCURVE(#480,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#482=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#481)); +#482=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#481)); #483=IFCFURNITURETYPE('3ICR3ZXKbFkviQSocD_GlP',$,'Generic Medium Bedside Table',$,$,$,(#488,#493),$,$,.NOTDEFINED.,.NOTDEFINED.); #484=IFCCARTESIANPOINT((0.,0.,0.)); #485=IFCDIRECTION((1.,0.,0.)); @@ -510,7 +510,7 @@ DATA; #503=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#502)); #504=IFCCARTESIANPOINTLIST2D(((-250.,-190.),(-250.,190.),(250.,190.),(250.,-190.))); #505=IFCINDEXEDPOLYCURVE(#504,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#506=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#505)); +#506=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#505)); #507=IFCFURNITURETYPE('0J3XRq_YH95u98Bc2Gb2rJ',$,'Generic Small Bedside Table',$,$,$,(#512,#517),$,$,.NOTDEFINED.,.NOTDEFINED.); #508=IFCCARTESIANPOINT((0.,0.,0.)); #509=IFCDIRECTION((1.,0.,0.)); @@ -570,7 +570,7 @@ DATA; #563=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#526,#544,#550,#556,#562)); #564=IFCCARTESIANPOINTLIST2D(((-375.,-375.),(-375.,375.),(375.,375.),(375.,-375.))); #565=IFCINDEXEDPOLYCURVE(#564,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#566=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#565)); +#566=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#565)); #567=IFCFURNITURETYPE('1KIUsPLoLA799a$yV05gDQ',$,'Generic Medium Coffee Table',$,$,$,(#572,#577),$,$,.NOTDEFINED.,.NOTDEFINED.); #568=IFCCARTESIANPOINT((0.,0.,0.)); #569=IFCDIRECTION((1.,0.,0.)); @@ -870,7 +870,7 @@ DATA; #863=IFCCARTESIANPOINTLIST2D(((-200.,-475.),(-200.,-675.),(-141.421356201172,-816.42138671875),(0.,-875.),(141.421356201172,-816.42138671875),(200.,-675.),(200.,-475.))); #864=IFCINDEXEDPOLYCURVE(#865,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #865=IFCCARTESIANPOINTLIST2D(((-160.,-475.),(-160.,-675.),(-113.137084960938,-788.137084960938),(0.,-835.),(113.137084960938,-788.137084960938),(160.,-675.),(160.,-475.))); -#866=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#624,#848,#850,#852,#854,#856,#858,#680,#682,#684,#860,#862,#864)); +#866=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#624,#848,#850,#852,#854,#856,#858,#680,#682,#684,#860,#862,#864)); #867=IFCFURNITURETYPE('1A9W95uivBFQnUOod0sOHh',$,'Neufert Retail 4-Seater Square Table',$,$,$,(#872,#877),$,$,.NOTDEFINED.,.NOTDEFINED.); #868=IFCCARTESIANPOINT((0.,0.,0.)); #869=IFCDIRECTION((1.,0.,0.)); @@ -1170,7 +1170,7 @@ DATA; #1163=IFCCARTESIANPOINTLIST2D(((66.6666564941406,-450.),(66.6666564941406,-675.),(132.567626953125,-834.098999023438),(291.666656494141,-900.),(450.765686035156,-834.098999023438),(516.666625976562,-675.),(516.666625976562,-450.))); #1164=IFCINDEXEDPOLYCURVE(#1165,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #1165=IFCCARTESIANPOINTLIST2D(((111.666656494141,-450.),(111.666656494141,-675.),(164.387435913086,-802.279235839844),(291.666656494141,-855.),(418.945892333984,-802.279235839844),(471.666656494141,-675.),(471.666656494141,-450.))); -#1166=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#924,#1148,#1150,#1152,#1154,#1156,#1158,#980,#982,#984,#1160,#1162,#1164)); +#1166=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#924,#1148,#1150,#1152,#1154,#1156,#1158,#980,#982,#984,#1160,#1162,#1164)); #1167=IFCFURNITURETYPE('35D$LP20n6Oetvik3Cu1qj',$,'Neufert Residential 4-Seater Rectangular Table',$,$,$,(#1172,#1177),$,$,.NOTDEFINED.,.NOTDEFINED.); #1168=IFCCARTESIANPOINT((0.,0.,0.)); #1169=IFCDIRECTION((1.,0.,0.)); @@ -1350,7 +1350,7 @@ DATA; #1343=IFCCARTESIANPOINTLIST2D(((-200.,-450.),(-200.,-650.),(-141.421356201172,-791.42138671875),(0.,-850.),(141.421356201172,-791.42138671875),(200.,-650.),(200.,-450.))); #1344=IFCINDEXEDPOLYCURVE(#1345,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #1345=IFCCARTESIANPOINTLIST2D(((-160.,-450.),(-160.,-650.),(-113.137084960938,-763.137084960938),(0.,-810.),(113.137084960938,-763.137084960938),(160.,-650.),(160.,-450.))); -#1346=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#1224,#1280,#1282,#1284,#1340,#1342,#1344)); +#1346=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#1224,#1280,#1282,#1284,#1340,#1342,#1344)); #1347=IFCFURNITURETYPE('3qB0HWoqnFiAwgEKJRzctp',$,'Neufert Retail 2-Seater Rectangular Table',$,$,$,(#1352,#1357),$,$,.NOTDEFINED.,.NOTDEFINED.); #1348=IFCCARTESIANPOINT((0.,0.,0.)); #1349=IFCDIRECTION((1.,0.,0.)); @@ -1650,7 +1650,7 @@ DATA; #1643=IFCCARTESIANPOINTLIST2D(((75.,-450.),(75.,-650.),(133.578643798828,-791.42138671875),(275.,-850.),(416.421356201172,-791.42138671875),(475.,-650.),(475.,-450.))); #1644=IFCINDEXEDPOLYCURVE(#1645,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #1645=IFCCARTESIANPOINTLIST2D(((115.,-450.),(115.,-650.),(161.862915039062,-763.137084960938),(275.,-810.),(388.137084960938,-763.137084960938),(435.,-650.),(435.,-450.))); -#1646=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#1404,#1628,#1630,#1632,#1634,#1636,#1638,#1460,#1462,#1464,#1640,#1642,#1644)); +#1646=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#1404,#1628,#1630,#1632,#1634,#1636,#1638,#1460,#1462,#1464,#1640,#1642,#1644)); #1647=IFCFURNITURETYPE('1vNBaBPOf4wf_5f6IfWK9L',$,'Neufert Retail 4-Seater Rectangular Table',$,$,$,(#1652,#1657),$,$,.NOTDEFINED.,.NOTDEFINED.); #1648=IFCCARTESIANPOINT((0.,0.,0.)); #1649=IFCDIRECTION((1.,0.,0.)); @@ -2070,7 +2070,7 @@ DATA; #2063=IFCCARTESIANPOINTLIST2D(((368.75,-450.),(368.75,-650.),(427.328643798828,-791.42138671875),(568.75,-850.),(710.17138671875,-791.42138671875),(768.75,-650.),(768.75,-450.))); #2064=IFCINDEXEDPOLYCURVE(#2065,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #2065=IFCCARTESIANPOINTLIST2D(((408.75,-450.),(408.75,-650.),(455.612915039062,-763.137084960938),(568.75,-810.),(681.887084960938,-763.137084960938),(728.75,-650.),(728.75,-450.))); -#2066=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#1704,#2036,#2038,#2040,#2042,#2044,#2046,#2048,#2050,#2052,#2054,#2056,#2058,#1760,#1762,#1764,#2060,#2062,#2064)); +#2066=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#1704,#2036,#2038,#2040,#2042,#2044,#2046,#2048,#2050,#2052,#2054,#2056,#2058,#1760,#1762,#1764,#2060,#2062,#2064)); #2067=IFCFURNITURETYPE('25_4HcIOr3hu$u1isekMhf',$,'Neufert Retail 6-Seater Rectangular Table',$,$,$,(#2072,#2077),$,$,.NOTDEFINED.,.NOTDEFINED.); #2068=IFCCARTESIANPOINT((0.,0.,0.)); #2069=IFCDIRECTION((1.,0.,0.)); @@ -2610,7 +2610,7 @@ DATA; #2603=IFCCARTESIANPOINTLIST2D(((670.,-450.),(670.,-650.),(728.57861328125,-791.42138671875),(870.,-850.),(1011.42138671875,-791.42138671875),(1070.,-650.),(1070.,-450.))); #2604=IFCINDEXEDPOLYCURVE(#2605,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #2605=IFCCARTESIANPOINTLIST2D(((710.,-450.),(710.,-650.),(756.862915039062,-763.137084960938),(870.,-810.),(983.137084960938,-763.137084960938),(1030.,-650.),(1030.,-450.))); -#2606=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#2124,#2564,#2566,#2568,#2570,#2572,#2574,#2576,#2578,#2580,#2582,#2584,#2586,#2588,#2590,#2592,#2594,#2596,#2598,#2180,#2182,#2184,#2600,#2602,#2604)); +#2606=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#2124,#2564,#2566,#2568,#2570,#2572,#2574,#2576,#2578,#2580,#2582,#2584,#2586,#2588,#2590,#2592,#2594,#2596,#2598,#2180,#2182,#2184,#2600,#2602,#2604)); #2607=IFCFURNITURETYPE('21Kr7P6EvEoBWUAhy_h6KK',$,'Neufert Retail 8-Seater Rectangular Table',$,$,$,(#2612,#2617),$,$,.NOTDEFINED.,.NOTDEFINED.); #2608=IFCCARTESIANPOINT((0.,0.,0.)); #2609=IFCDIRECTION((1.,0.,0.)); @@ -3390,7 +3390,7 @@ DATA; #3383=IFCCARTESIANPOINTLIST2D(((1282.14282226562,-450.),(1282.14282226562,-650.),(1340.72143554688,-791.42138671875),(1482.14282226562,-850.),(1623.56420898438,-791.42138671875),(1682.14282226562,-650.),(1682.14282226562,-450.))); #3384=IFCINDEXEDPOLYCURVE(#3385,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #3385=IFCCARTESIANPOINTLIST2D(((1322.14282226562,-450.),(1322.14282226562,-650.),(1369.00573730469,-763.137084960938),(1482.14282226562,-810.),(1595.27990722656,-763.137084960938),(1642.14282226562,-650.),(1642.14282226562,-450.))); -#3386=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#2664,#3320,#3322,#3324,#3326,#3328,#3330,#3332,#3334,#3336,#3338,#3340,#3342,#3344,#3346,#3348,#3350,#3352,#3354,#3356,#3358,#3360,#3362,#3364,#3366,#3368,#3370,#3372,#3374,#3376,#3378,#2720,#2722,#2724,#3380,#3382,#3384)); +#3386=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#2664,#3320,#3322,#3324,#3326,#3328,#3330,#3332,#3334,#3336,#3338,#3340,#3342,#3344,#3346,#3348,#3350,#3352,#3354,#3356,#3358,#3360,#3362,#3364,#3366,#3368,#3370,#3372,#3374,#3376,#3378,#2720,#2722,#2724,#3380,#3382,#3384)); #3387=IFCFURNITURETYPE('1d0tR0ut91kvoVzzPVdL7_',$,'Neufert Retail 12-Seater Rectangular Table',$,$,$,(#3392,#3397),$,$,.NOTDEFINED.,.NOTDEFINED.); #3388=IFCCARTESIANPOINT((0.,0.,0.)); #3389=IFCDIRECTION((1.,0.,0.)); @@ -3546,7 +3546,7 @@ DATA; #3539=IFCCARTESIANPOINTLIST2D(((-200.,350.),(-200.,550.),(-141.421356201172,691.42138671875),(0.,750.),(141.421356201172,691.42138671875),(200.,550.),(200.,350.))); #3540=IFCINDEXEDPOLYCURVE(#3541,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #3541=IFCCARTESIANPOINTLIST2D(((-160.,350.),(-160.,550.),(-113.137084960938,663.137084960938),(0.,710.),(113.137084960938,663.137084960938),(160.,550.),(160.,350.))); -#3542=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#3420,#3536,#3538,#3540,#3476,#3478,#3480)); +#3542=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#3420,#3536,#3538,#3540,#3476,#3478,#3480)); #3543=IFCFURNITURETYPE('2_cYfwbmbAIAYhNztt51A0',$,'Neufert Retail 2-Seater Circular Table',$,$,$,(#3548,#3553),$,$,.NOTDEFINED.,.NOTDEFINED.); #3544=IFCCARTESIANPOINT((0.,0.,0.)); #3545=IFCDIRECTION((1.,0.,0.)); @@ -3762,7 +3762,7 @@ DATA; #3755=IFCCARTESIANPOINTLIST2D(((489.71142578125,-51.7949523925781),(662.91650390625,-151.794952392578),(756.101684570312,-273.236267089844),(736.12158203125,-425.000061035156),(614.680297851562,-518.185241699219),(462.91650390625,-498.205108642578),(289.71142578125,-398.205108642578))); #3756=IFCINDEXEDPOLYCURVE(#3757,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #3757=IFCCARTESIANPOINTLIST2D(((469.71142578125,-86.4359741210938),(642.91650390625,-186.435974121094),(717.464660644531,-283.588989257812),(701.480590820312,-405.000061035156),(604.327575683594,-479.548156738281),(482.91650390625,-463.564086914062),(309.71142578125,-363.564086914062))); -#3758=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#3576,#3746,#3748,#3750,#3752,#3754,#3756,#3632,#3634,#3636)); +#3758=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#3576,#3746,#3748,#3750,#3752,#3754,#3756,#3632,#3634,#3636)); #3759=IFCFURNITURETYPE('2wzS9EDIvAihLagEm0vNSI',$,'Neufert Retail 3-Seater Circular Table',$,$,$,(#3764,#3769),$,$,.NOTDEFINED.,.NOTDEFINED.); #3760=IFCCARTESIANPOINT((0.,0.,0.)); #3761=IFCDIRECTION((1.,0.,0.)); @@ -4038,7 +4038,7 @@ DATA; #4031=IFCCARTESIANPOINTLIST2D(((199.999954223633,-500.000030517578),(199.999938964844,-700.),(141.421279907227,-841.42138671875),(-7.86804957897402E-05,-900.),(-141.421432495117,-841.42138671875),(-200.000061035156,-700.),(-200.000045776367,-499.999969482422))); #4032=IFCINDEXEDPOLYCURVE(#4033,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #4033=IFCCARTESIANPOINTLIST2D(((159.999954223633,-500.),(159.999938964844,-700.),(113.137016296387,-813.137084960938),(-7.51835905248299E-05,-860.),(-113.137153625488,-813.137084960938),(-160.000061035156,-700.),(-160.000045776367,-500.))); -#4034=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#3792,#4016,#4018,#4020,#4022,#4024,#4026,#4028,#4030,#4032,#3848,#3850,#3852)); +#4034=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#3792,#4016,#4018,#4020,#4022,#4024,#4026,#4028,#4030,#4032,#3848,#3850,#3852)); #4035=IFCFURNITURETYPE('10I6zGH7LFnukgtjGLEsVw',$,'Neufert Retail 4-Seater Circular Table',$,$,$,(#4040,#4045),$,$,.NOTDEFINED.,.NOTDEFINED.); #4036=IFCCARTESIANPOINT((0.,0.,0.)); #4037=IFCDIRECTION((1.,0.,0.)); @@ -4374,7 +4374,7 @@ DATA; #4367=IFCCARTESIANPOINTLIST2D(((-190.867553710938,-602.96728515625),(-308.424560546875,-764.770751953125),(-438.941101074219,-844.75146484375),(-587.785034179688,-809.017211914062),(-667.765686035156,-678.500732421875),(-632.031433105469,-529.65673828125),(-514.474426269531,-367.853302001953))); #4368=IFCINDEXEDPOLYCURVE(#4369,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #4369=IFCCARTESIANPOINTLIST2D(((-223.228240966797,-579.455932617188),(-340.785247802734,-741.259338378906),(-445.198425292969,-805.243896484375),(-564.273620605469,-776.656494140625),(-628.258117675781,-672.243286132812),(-599.670776367188,-553.168151855469),(-482.113739013672,-391.364715576172))); -#4370=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#4068,#4346,#4348,#4350,#4352,#4354,#4356,#4358,#4360,#4362,#4364,#4366,#4368,#4124,#4126,#4128)); +#4370=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#4068,#4346,#4348,#4350,#4352,#4354,#4356,#4358,#4360,#4362,#4364,#4366,#4368,#4124,#4126,#4128)); #4371=IFCFURNITURETYPE('1vdj6xqQfC6BaDIS7ZcA30',$,'Neufert Retail 5-Seater Circular Table',$,$,$,(#4376,#4381),$,$,.NOTDEFINED.,.NOTDEFINED.); #4372=IFCCARTESIANPOINT((0.,0.,0.)); #4373=IFCDIRECTION((1.,0.,0.)); @@ -4770,7 +4770,7 @@ DATA; #4763=IFCCARTESIANPOINTLIST2D(((-484.567230224609,-510.705017089844),(-657.772338867188,-610.704956054688),(-809.536193847656,-630.68505859375),(-930.977416992188,-537.499816894531),(-950.957458496094,-385.736022949219),(-857.772338867188,-264.294769287109),(-684.567138671875,-164.294799804688))); #4764=IFCINDEXEDPOLYCURVE(#4765,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #4765=IFCCARTESIANPOINTLIST2D(((-504.567230224609,-476.063995361328),(-677.772338867188,-576.06396484375),(-799.183349609375,-592.047973632812),(-896.33642578125,-517.499816894531),(-912.320434570312,-396.088806152344),(-837.772338867188,-298.935791015625),(-664.567199707031,-198.935821533203))); -#4766=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#4404,#4736,#4738,#4740,#4742,#4744,#4746,#4748,#4750,#4752,#4754,#4756,#4758,#4760,#4762,#4764,#4460,#4462,#4464)); +#4766=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#4404,#4736,#4738,#4740,#4742,#4744,#4746,#4748,#4750,#4752,#4754,#4756,#4758,#4760,#4762,#4764,#4460,#4462,#4464)); #4767=IFCFURNITURETYPE('0hLYzCdyPCaPaBaI5wFFh0',$,'Neufert Retail 6-Seater Circular Table',$,$,$,(#4772,#4777),$,$,.NOTDEFINED.,.NOTDEFINED.); #4768=IFCCARTESIANPOINT((0.,0.,0.)); #4769=IFCDIRECTION((1.,0.,0.)); @@ -5286,7 +5286,7 @@ DATA; #5279=IFCCARTESIANPOINTLIST2D(((-750.,-199.999938964844),(-950.,-199.999923706055),(-1091.42138671875,-141.421279907227),(-1150.,8.68225833983161E-05),(-1091.42138671875,141.421432495117),(-950.,200.000076293945),(-750.,200.000061035156))); #5280=IFCINDEXEDPOLYCURVE(#5281,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #5281=IFCCARTESIANPOINTLIST2D(((-750.,-159.999938964844),(-950.,-159.999923706055),(-1063.13708496094,-113.137001037598),(-1110.,8.38026680867188E-05),(-1063.13708496094,113.137168884277),(-950.,160.000076293945),(-750.,160.000061035156))); -#5282=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#4800,#5240,#5242,#5244,#5246,#5248,#5250,#5252,#5254,#5256,#5258,#5260,#5262,#5264,#5266,#5268,#5270,#5272,#5274,#5276,#5278,#5280,#4856,#4858,#4860)); +#5282=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#4800,#5240,#5242,#5244,#5246,#5248,#5250,#5252,#5254,#5256,#5258,#5260,#5262,#5264,#5266,#5268,#5270,#5272,#5274,#5276,#5278,#5280,#4856,#4858,#4860)); #5283=IFCFURNITURETYPE('0lYfDzV51BAOsDx2dSIMWd',$,'Neufert Retail 8-Seater Circular Table',$,$,$,(#5288,#5293),$,$,.NOTDEFINED.,.NOTDEFINED.); #5284=IFCCARTESIANPOINT((0.,0.,0.)); #5285=IFCDIRECTION((1.,0.,0.)); @@ -5922,7 +5922,7 @@ DATA; #5915=IFCCARTESIANPOINTLIST2D(((-846.425048828125,64.7278747558594),(-1036.63635253906,126.531311035156),(-1153.03430175781,225.944549560547),(-1165.04418945312,378.546051025391),(-1065.63098144531,494.943939208984),(-913.029418945312,506.953918457031),(-722.818115234375,445.150482177734))); #5916=IFCINDEXEDPOLYCURVE(#5917,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #5917=IFCCARTESIANPOINTLIST2D(((-834.064331054688,102.770141601562),(-1024.27563476562,164.573577880859),(-1117.39392089844,244.104156494141),(-1127.001953125,366.185363769531),(-1047.47131347656,459.303680419922),(-925.39013671875,468.911651611328),(-735.178833007812,407.108215332031))); -#5918=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#5316,#5864,#5866,#5868,#5870,#5872,#5874,#5876,#5878,#5880,#5882,#5884,#5886,#5888,#5890,#5892,#5894,#5896,#5898,#5900,#5902,#5904,#5906,#5908,#5910,#5912,#5914,#5916,#5372,#5374,#5376)); +#5918=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#5316,#5864,#5866,#5868,#5870,#5872,#5874,#5876,#5878,#5880,#5882,#5884,#5886,#5888,#5890,#5892,#5894,#5896,#5898,#5900,#5902,#5904,#5906,#5908,#5910,#5912,#5914,#5916,#5372,#5374,#5376)); #5919=IFCFURNITURETYPE('04xV538Or2081W91jdnOXw',$,'Neufert Retail 10-Seater Circular Table',$,$,$,(#5924,#5929),$,$,.NOTDEFINED.,.NOTDEFINED.); #5920=IFCCARTESIANPOINT((0.,0.,0.)); #5921=IFCDIRECTION((1.,0.,0.)); @@ -6678,7 +6678,7 @@ DATA; #6671=IFCCARTESIANPOINTLIST2D(((-944.374816894531,314.294860839844),(-1117.57983398438,414.294860839844),(-1210.76513671875,535.736145019531),(-1190.78503417969,687.499938964844),(-1069.34375,780.685119628906),(-917.579895019531,760.705017089844),(-744.374816894531,660.705078125))); #6672=IFCINDEXEDPOLYCURVE(#6673,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #6673=IFCCARTESIANPOINTLIST2D(((-924.374816894531,348.935913085938),(-1097.57983398438,448.935852050781),(-1172.1279296875,546.0888671875),(-1156.14392089844,667.499938964844),(-1058.99096679688,742.048095703125),(-937.579895019531,726.064025878906),(-764.374816894531,626.064025878906))); -#6674=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#5952,#6608,#6610,#6612,#6614,#6616,#6618,#6620,#6622,#6624,#6626,#6628,#6630,#6632,#6634,#6636,#6638,#6640,#6642,#6644,#6646,#6648,#6650,#6652,#6654,#6656,#6658,#6660,#6662,#6664,#6666,#6668,#6670,#6672,#6008,#6010,#6012)); +#6674=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#5952,#6608,#6610,#6612,#6614,#6616,#6618,#6620,#6622,#6624,#6626,#6628,#6630,#6632,#6634,#6636,#6638,#6640,#6642,#6644,#6646,#6648,#6650,#6652,#6654,#6656,#6658,#6660,#6662,#6664,#6666,#6668,#6670,#6672,#6008,#6010,#6012)); #6675=IFCFURNITURETYPE('1S$8PEk650og0Rwkws0z8L',$,'Neufert Retail 12-Seater Circular Table',$,$,$,(#6680,#6685),$,$,.NOTDEFINED.,.NOTDEFINED.); #6676=IFCCARTESIANPOINT((0.,0.,0.)); #6677=IFCDIRECTION((1.,0.,0.)); @@ -7554,7 +7554,7 @@ DATA; #7547=IFCCARTESIANPOINTLIST2D(((-1023.80450439453,560.646301269531),(-1180.1708984375,685.344177246094),(-1254.21545410156,819.317626953125),(-1211.83935546875,966.408447265625),(-1077.86608886719,1040.45300292969),(-930.775146484375,998.076965332031),(-774.408752441406,873.379089355469))); #7548=IFCINDEXEDPOLYCURVE(#7549,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #7549=IFCCARTESIANPOINTLIST2D(((-998.864929199219,591.919616699219),(-1155.23132324219,716.617492675781),(-1214.46704101562,823.796203613281),(-1180.56616210938,941.468872070312),(-1073.38745117188,1000.70452880859),(-955.714721679688,966.803649902344),(-799.348327636719,842.105773925781))); -#7550=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#6708,#7472,#7474,#7476,#7478,#7480,#7482,#7484,#7486,#7488,#7490,#7492,#7494,#7496,#7498,#7500,#7502,#7504,#7506,#7508,#7510,#7512,#7514,#7516,#7518,#7520,#7522,#7524,#7526,#7528,#7530,#7532,#7534,#7536,#7538,#7540,#7542,#7544,#7546,#7548,#6764,#6766,#6768)); +#7550=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#6708,#7472,#7474,#7476,#7478,#7480,#7482,#7484,#7486,#7488,#7490,#7492,#7494,#7496,#7498,#7500,#7502,#7504,#7506,#7508,#7510,#7512,#7514,#7516,#7518,#7520,#7522,#7524,#7526,#7528,#7530,#7532,#7534,#7536,#7538,#7540,#7542,#7544,#7546,#7548,#6764,#6766,#6768)); #7551=IFCFURNITURETYPE('2vygb0WHX9qu9bN9iyPLo5',$,'Neufert Retail 14-Seater Circular Table',$,$,$,(#7556,#7561),$,$,.NOTDEFINED.,.NOTDEFINED.); #7552=IFCCARTESIANPOINT((0.,0.,0.)); #7553=IFCDIRECTION((1.,0.,0.)); @@ -8550,7 +8550,7 @@ DATA; #8543=IFCCARTESIANPOINTLIST2D(((-1060.66040039062,777.817077636719),(-1202.08178710938,919.238403320312),(-1260.66052246094,1060.65979003906),(-1202.08190917969,1202.0810546875),(-1060.66052246094,1260.65979003906),(-919.239196777344,1202.08117675781),(-777.817810058594,1060.65991210938))); #8544=IFCINDEXEDPOLYCURVE(#8545,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #8545=IFCCARTESIANPOINTLIST2D(((-1032.37622070312,806.101318359375),(-1173.79760742188,947.522644042969),(-1220.66052246094,1060.65979003906),(-1173.79760742188,1173.796875),(-1060.66052246094,1220.65979003906),(-947.523498535156,1173.796875),(-806.102111816406,1032.37561035156))); -#8546=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#7584,#8456,#8458,#8460,#8462,#8464,#8466,#8468,#8470,#8472,#8474,#8476,#8478,#8480,#8482,#8484,#8486,#8488,#8490,#8492,#8494,#8496,#8498,#8500,#8502,#8504,#8506,#8508,#8510,#8512,#8514,#8516,#8518,#8520,#8522,#8524,#8526,#8528,#8530,#8532,#8534,#8536,#8538,#8540,#8542,#8544,#7640,#7642,#7644)); +#8546=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#7584,#8456,#8458,#8460,#8462,#8464,#8466,#8468,#8470,#8472,#8474,#8476,#8478,#8480,#8482,#8484,#8486,#8488,#8490,#8492,#8494,#8496,#8498,#8500,#8502,#8504,#8506,#8508,#8510,#8512,#8514,#8516,#8518,#8520,#8522,#8524,#8526,#8528,#8530,#8532,#8534,#8536,#8538,#8540,#8542,#8544,#7640,#7642,#7644)); #8547=IFCFURNITURETYPE('2QpMJ6K6r74AmhCsGNawqS',$,'Neufert Retail 16-Seater Circular Table',$,$,$,(#8552,#8557),$,$,.NOTDEFINED.,.NOTDEFINED.); #8548=IFCCARTESIANPOINT((0.,0.,0.)); #8549=IFCDIRECTION((1.,0.,0.)); @@ -8607,7 +8607,7 @@ DATA; #8600=IFCINDEXEDPOLYCURVE(#8599,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #8601=IFCCARTESIANPOINTLIST2D(((-275.,-175.),(-275.,0.),(275.,0.),(275.,-175.))); #8602=IFCINDEXEDPOLYCURVE(#8601,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#8603=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8596,#8597,#8600,#8602)); +#8603=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8596,#8597,#8600,#8602)); #8604=IFCFURNITURETYPE('3HNQSnuDP9XfWXj_QnAeHs',$,'Generic 1-Seater Sofa',$,$,$,(#8609,#8614),$,$,.NOTDEFINED.,.NOTDEFINED.); #8605=IFCCARTESIANPOINT((0.,0.,0.)); #8606=IFCDIRECTION((1.,0.,0.)); @@ -8675,7 +8675,7 @@ DATA; #8668=IFCINDEXEDPOLYCURVE(#8667,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #8669=IFCCARTESIANPOINTLIST2D(((-575.,-175.),(-575.,0.),(575.,0.),(575.,-175.))); #8670=IFCINDEXEDPOLYCURVE(#8669,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#8671=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8662,#8663,#8666,#8668,#8670)); +#8671=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8662,#8663,#8666,#8668,#8670)); #8672=IFCFURNITURETYPE('3Xep18LHH6yB6K$WWCrw1Y',$,'Generic 2-Seater Sofa',$,$,$,(#8677,#8682),$,$,.NOTDEFINED.,.NOTDEFINED.); #8673=IFCCARTESIANPOINT((0.,0.,0.)); #8674=IFCDIRECTION((1.,0.,0.)); @@ -8754,7 +8754,7 @@ DATA; #8747=IFCINDEXEDPOLYCURVE(#8746,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #8748=IFCCARTESIANPOINTLIST2D(((-875.,-175.),(-875.,0.),(875.,0.),(875.,-175.))); #8749=IFCINDEXEDPOLYCURVE(#8748,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#8750=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8739,#8740,#8743,#8745,#8747,#8749)); +#8750=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8739,#8740,#8743,#8745,#8747,#8749)); #8751=IFCFURNITURETYPE('2zWXC$94j8GgMofOcSbqex',$,'Generic 3-Seater Sofa',$,$,$,(#8756,#8761),$,$,.NOTDEFINED.,.NOTDEFINED.); #8752=IFCCARTESIANPOINT((0.,0.,0.)); #8753=IFCDIRECTION((1.,0.,0.)); @@ -8782,7 +8782,7 @@ DATA; #8775=IFCCARTESIANPOINT((775.,625.)); #8776=IFCAXIS2PLACEMENT2D(#8775,$); #8777=IFCCIRCLE(#8776,25.); -#8778=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8772,#8774,#8777)); +#8778=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8772,#8774,#8777)); #8779=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#8770)); #8780=IFCFURNITURETYPE('1jPzgPcBL1QPs239Lhocy9',$,'Neufert Shower 75x90',$,$,$,(#8785,#8790),$,$,.NOTDEFINED.,.NOTDEFINED.); #8781=IFCCARTESIANPOINT((0.,0.,0.)); @@ -8811,7 +8811,7 @@ DATA; #8804=IFCCARTESIANPOINT((675.,675.)); #8805=IFCAXIS2PLACEMENT2D(#8804,$); #8806=IFCCIRCLE(#8805,25.); -#8807=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8801,#8803,#8806)); +#8807=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8801,#8803,#8806)); #8808=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#8799)); #8809=IFCFURNITURETYPE('0nUSwm1Df4T9$pq1_tdzZE',$,'Neufert Shower 80x80',$,$,$,(#8814,#8819),$,$,.NOTDEFINED.,.NOTDEFINED.); #8810=IFCCARTESIANPOINT((0.,0.,0.)); @@ -8840,7 +8840,7 @@ DATA; #8833=IFCCARTESIANPOINT((775.,775.)); #8834=IFCAXIS2PLACEMENT2D(#8833,$); #8835=IFCCIRCLE(#8834,25.); -#8836=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8830,#8832,#8835)); +#8836=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8830,#8832,#8835)); #8837=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#8828)); #8838=IFCFURNITURETYPE('3vN7E4dWr5sh$ZTNDSI7np',$,'Neufert Shower 90x90',$,$,$,(#8843,#8848),$,$,.NOTDEFINED.,.NOTDEFINED.); #8839=IFCCARTESIANPOINT((0.,0.,0.)); @@ -8869,7 +8869,7 @@ DATA; #8862=IFCCARTESIANPOINT((1475.,350.)); #8863=IFCAXIS2PLACEMENT2D(#8862,$); #8864=IFCCIRCLE(#8863,25.); -#8865=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8859,#8861,#8864)); +#8865=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8859,#8861,#8864)); #8866=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#8857)); #8867=IFCFURNITURETYPE('0Wqv9oSjj6E8IyVngvNvnY',$,'Neufert Small Bathtub',$,$,$,(#8872,#8877),$,$,.NOTDEFINED.,.NOTDEFINED.); #8868=IFCCARTESIANPOINT((0.,0.,0.)); @@ -8898,7 +8898,7 @@ DATA; #8891=IFCCARTESIANPOINT((1575.,375.)); #8892=IFCAXIS2PLACEMENT2D(#8891,$); #8893=IFCCIRCLE(#8892,25.); -#8894=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8888,#8890,#8893)); +#8894=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8888,#8890,#8893)); #8895=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#8886)); #8896=IFCFURNITURETYPE('3bvY7AXBfErxED6Qit_DgR',$,'Neufert Medium Bathtub',$,$,$,(#8901,#8906),$,$,.NOTDEFINED.,.NOTDEFINED.); #8897=IFCCARTESIANPOINT((0.,0.,0.)); @@ -8927,7 +8927,7 @@ DATA; #8920=IFCCARTESIANPOINT((1675.,400.)); #8921=IFCAXIS2PLACEMENT2D(#8920,$); #8922=IFCCIRCLE(#8921,25.); -#8923=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8917,#8919,#8922)); +#8923=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8917,#8919,#8922)); #8924=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#8915)); #8925=IFCFURNITURETYPE('0I4LwzTAj6sAevoFg21qL_',$,'Neufert Large Bathtub',$,$,$,(#8930,#8935),$,$,.NOTDEFINED.,.NOTDEFINED.); #8926=IFCCARTESIANPOINT((0.,0.,0.)); @@ -8972,7 +8972,7 @@ DATA; #8965=IFCCARTESIANPOINT((-34.375,-452.)); #8966=IFCCARTESIANPOINT((34.375,-452.)); #8967=IFCTRIMMEDCURVE(#8964,(#8965),(#8966),.T.,.CARTESIAN.); -#8968=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#8941,#8945,#8952,#8953,#8958,#8960,#8967)); +#8968=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#8941,#8945,#8952,#8953,#8958,#8960,#8967)); #8969=IFCCARTESIANPOINTLIST2D(((-275.,-200.,0.),(-275.,-425.,0.),(-209.099029541016,-584.098999023438,0.),(-50.,-650.,0.),(50.,-650.,0.),(209.099029541016,-584.098999023438,0.),(275.,-425.,0.),(275.,-200.,0.))); #8970=IFCINDEXEDPOLYCURVE(#8969,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCLINEINDEX((4,5)),IFCARCINDEX((5,6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((1,8))),$); #8971=IFCCARTESIANPOINT((0.,-425.)); @@ -9052,7 +9052,7 @@ DATA; #9045=IFCCARTESIANPOINT((-25.,-296.799987792969)); #9046=IFCCARTESIANPOINT((25.,-296.799987792969)); #9047=IFCTRIMMEDCURVE(#9044,(#9045),(#9046),.T.,.CARTESIAN.); -#9048=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9023,#9025,#9032,#9033,#9038,#9040,#9047)); +#9048=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9023,#9025,#9032,#9033,#9038,#9040,#9047)); #9049=IFCCARTESIANPOINTLIST2D(((-200.,0.,0.),(-200.,-330.,0.),(-141.421356201172,-471.421356201172,0.),(0.,-530.,0.),(141.421356201172,-471.421356201172,0.),(200.,-330.,0.),(200.,0.,0.))); #9050=IFCINDEXEDPOLYCURVE(#9049,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((1,7))),$); #9051=IFCCARTESIANPOINT((0.,-330.)); @@ -9107,7 +9107,7 @@ DATA; #9100=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9099)); #9101=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,350.),(350.,350.),(350.,0.))); #9102=IFCINDEXEDPOLYCURVE(#9101,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#9103=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9102)); +#9103=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9102)); #9104=IFCCARTESIANPOINTLIST2D(((0.,0.,0.),(0.,650.,-5.68248033232521E-05),(350.,650.,-5.68248033232521E-05),(350.,0.,0.))); #9105=IFCINDEXEDPOLYCURVE(#9104,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #9106=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#9105); @@ -9178,7 +9178,7 @@ DATA; #9171=IFCINDEXEDPOLYCURVE(#9170,(IFCLINEINDEX((1,2))),$); #9172=IFCINDEXEDPOLYCURVE(#9173,(IFCARCINDEX((1,2,3))),$); #9173=IFCCARTESIANPOINTLIST2D(((105.,-35.),(105.01000213623,-35.),(140.,-70.))); -#9174=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9155,#9157,#9160,#9167,#9169,#9171,#9172)); +#9174=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9155,#9157,#9160,#9167,#9169,#9171,#9172)); #9175=IFCFURNITURETYPE('1x99j6mFbA$9U2$Z8XSHAt',$,'Neufert Small Urinal',$,$,$,(#9180,#9185),$,$,.NOTDEFINED.,.NOTDEFINED.); #9176=IFCCARTESIANPOINT((0.,0.,0.)); #9177=IFCDIRECTION((1.,0.,0.)); @@ -9202,7 +9202,7 @@ DATA; #9195=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9194)); #9196=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,400.),(400.,400.),(400.,0.))); #9197=IFCINDEXEDPOLYCURVE(#9196,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#9198=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9197)); +#9198=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9197)); #9199=IFCCARTESIANPOINTLIST2D(((0.,0.,0.),(0.,650.,-5.68248033232521E-05),(400.000030517578,650.,-5.68248033232521E-05),(400.000030517578,0.,0.))); #9200=IFCINDEXEDPOLYCURVE(#9199,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #9201=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#9200); @@ -9273,7 +9273,7 @@ DATA; #9266=IFCINDEXEDPOLYCURVE(#9265,(IFCLINEINDEX((1,2))),$); #9267=IFCINDEXEDPOLYCURVE(#9268,(IFCARCINDEX((1,2,3))),$); #9268=IFCCARTESIANPOINTLIST2D(((120.,-40.),(120.01000213623,-40.),(160.,-80.))); -#9269=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9250,#9252,#9255,#9262,#9264,#9266,#9267)); +#9269=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9250,#9252,#9255,#9262,#9264,#9266,#9267)); #9270=IFCFURNITURETYPE('3R9HS0eoTDdQk4_yDUXeYt',$,'Neufert Medium Urinal',$,$,$,(#9275,#9280),$,$,.NOTDEFINED.,.NOTDEFINED.); #9271=IFCCARTESIANPOINT((0.,0.,0.)); #9272=IFCDIRECTION((1.,0.,0.)); @@ -9297,7 +9297,7 @@ DATA; #9290=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9289)); #9291=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,450.),(450.,450.),(450.,0.))); #9292=IFCINDEXEDPOLYCURVE(#9291,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#9293=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9292)); +#9293=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9292)); #9294=IFCCARTESIANPOINTLIST2D(((0.,0.,0.),(0.,650.,-5.68248033232521E-05),(450.000030517578,650.,-5.68248033232521E-05),(450.000030517578,0.,0.))); #9295=IFCINDEXEDPOLYCURVE(#9294,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); #9296=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#9295); @@ -9368,7 +9368,7 @@ DATA; #9361=IFCINDEXEDPOLYCURVE(#9360,(IFCLINEINDEX((1,2))),$); #9362=IFCINDEXEDPOLYCURVE(#9363,(IFCARCINDEX((1,2,3))),$); #9363=IFCCARTESIANPOINTLIST2D(((135.,-45.),(135.009994506836,-45.),(180.,-90.))); -#9364=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9345,#9347,#9350,#9357,#9359,#9361,#9362)); +#9364=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9345,#9347,#9350,#9357,#9359,#9361,#9362)); #9365=IFCFURNITURETYPE('2rgouis$r4MBoyWkCPTN6C',$,'Neufert Large Urinal',$,$,$,(#9370,#9375),$,$,.NOTDEFINED.,.NOTDEFINED.); #9366=IFCCARTESIANPOINT((0.,0.,0.)); #9367=IFCDIRECTION((1.,0.,0.)); @@ -9390,7 +9390,7 @@ DATA; #9383=IFCCARTESIANPOINTLIST2D(((72.5,36.),(37.1446609406726,50.6446609406726),(22.5,86.),(22.5,166.),(66.4339828220179,272.066017177982),(172.5,316.),(277.5,316.),(383.566017177982,272.066017177982),(427.5,166.),(427.5,86.),(412.855339059327,50.6446609406726),(377.5,36.))); #9384=IFCCARTESIANPOINTLIST2D(((0.,-30.),(0.,-150.))); #9385=IFCINDEXEDPOLYCURVE(#9384,(IFCLINEINDEX((1,2))),$); -#9386=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9377,#9381,#9385)); +#9386=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9377,#9381,#9385)); #9387=IFCARBITRARYPROFILEDEFWITHVOIDS(.AREA.,$,#9378,(#9382)); #9388=IFCCARTESIANPOINT((-225.,-400.,100.)); #9389=IFCDIRECTION((0.,0.,1.)); @@ -9427,7 +9427,7 @@ DATA; #9420=IFCCARTESIANPOINTLIST2D(((75.,40.5),(39.6446609406726,55.1446609406726),(25.,90.5),(25.,205.5),(68.9339828220179,311.566017177982),(175.,355.5),(325.,355.5),(431.066017177982,311.566017177982),(475.,205.5),(475.,90.5),(460.355339059327,55.1446609406726),(425.,40.5))); #9421=IFCCARTESIANPOINTLIST2D(((0.,-33.75),(0.,-153.75))); #9422=IFCINDEXEDPOLYCURVE(#9421,(IFCLINEINDEX((1,2))),$); -#9423=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9414,#9418,#9422)); +#9423=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9414,#9418,#9422)); #9424=IFCARBITRARYPROFILEDEFWITHVOIDS(.AREA.,$,#9415,(#9419)); #9425=IFCCARTESIANPOINT((-250.,-450.,100.)); #9426=IFCDIRECTION((0.,0.,1.)); @@ -9464,7 +9464,7 @@ DATA; #9457=IFCCARTESIANPOINTLIST2D(((77.5,45.),(42.1446609406726,59.6446609406726),(27.5,95.),(27.5,245.),(71.4339828220179,351.066017177982),(177.5,395.),(372.5,395.),(478.566017177982,351.066017177982),(522.5,245.),(522.5,95.),(507.855339059327,59.6446609406726),(472.5,45.))); #9458=IFCCARTESIANPOINTLIST2D(((0.,-37.5),(0.,-157.5))); #9459=IFCINDEXEDPOLYCURVE(#9458,(IFCLINEINDEX((1,2))),$); -#9460=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9451,#9455,#9459)); +#9460=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9451,#9455,#9459)); #9461=IFCARBITRARYPROFILEDEFWITHVOIDS(.AREA.,$,#9452,(#9456)); #9462=IFCCARTESIANPOINT((-275.,-500.,100.)); #9463=IFCDIRECTION((0.,0.,1.)); @@ -9501,7 +9501,7 @@ DATA; #9494=IFCCARTESIANPOINTLIST2D(((80.,49.5),(44.6446609406726,64.1446609406726),(30.,99.5),(30.,284.5),(73.9339828220179,390.566017177982),(180.,434.5),(420.,434.5),(526.066017177982,390.566017177982),(570.,284.5),(570.,99.5),(555.355339059327,64.1446609406726),(520.,49.5))); #9495=IFCCARTESIANPOINTLIST2D(((0.,-41.25),(0.,-161.25))); #9496=IFCINDEXEDPOLYCURVE(#9495,(IFCLINEINDEX((1,2))),$); -#9497=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9488,#9492,#9496)); +#9497=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9488,#9492,#9496)); #9498=IFCARBITRARYPROFILEDEFWITHVOIDS(.AREA.,$,#9489,(#9493)); #9499=IFCCARTESIANPOINT((-300.,-550.,100.)); #9500=IFCDIRECTION((0.,0.,1.)); @@ -9567,7 +9567,7 @@ DATA; #9560=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9532,#9533,#9550,#9559)); #9561=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,780.),(1560.,780.),(1560.,0.))); #9562=IFCINDEXEDPOLYCURVE(#9561,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#9563=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9562)); +#9563=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9562)); #9564=IFCFURNITURETYPE('16DC0hlY1C$B_J$mu8KYZ3',$,'Neufert Commercial Writing Desk',$,$,$,(#9569,#9574),$,$,.NOTDEFINED.,.NOTDEFINED.); #9565=IFCCARTESIANPOINT((0.,0.,0.)); #9566=IFCDIRECTION((1.,0.,0.)); @@ -9618,7 +9618,7 @@ DATA; #9611=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9583,#9584,#9601,#9610)); #9612=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,700.),(1400.,700.),(1400.,0.))); #9613=IFCINDEXEDPOLYCURVE(#9612,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#9614=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9613)); +#9614=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9613)); #9615=IFCFURNITURETYPE('2WrQXe8kX6COMbjIcuBL8$',$,'Neufert Commercial Office Desk',$,$,$,(#9620,#9625),$,$,.NOTDEFINED.,.NOTDEFINED.); #9616=IFCCARTESIANPOINT((0.,0.,0.)); #9617=IFCDIRECTION((1.,0.,0.)); @@ -9669,7 +9669,7 @@ DATA; #9662=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9634,#9635,#9652,#9661)); #9663=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,600.),(1000.,600.),(1000.,0.))); #9664=IFCINDEXEDPOLYCURVE(#9663,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#9665=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9664)); +#9665=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9664)); #9666=IFCFURNITURETYPE('1Src7HntLCXxJCLXnLvswg',$,'Generic Small Desk',$,$,$,(#9671,#9676),$,$,.NOTDEFINED.,.NOTDEFINED.); #9667=IFCCARTESIANPOINT((0.,0.,0.)); #9668=IFCDIRECTION((1.,0.,0.)); @@ -9720,7 +9720,7 @@ DATA; #9713=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9685,#9686,#9703,#9712)); #9714=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,700.),(1200.,700.),(1200.,0.))); #9715=IFCINDEXEDPOLYCURVE(#9714,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#9716=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9715)); +#9716=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9715)); #9717=IFCFURNITURETYPE('0mYZXyYeXB5fXNpJXuSP_w',$,'Generic Medium Desk',$,$,$,(#9722,#9727),$,$,.NOTDEFINED.,.NOTDEFINED.); #9718=IFCCARTESIANPOINT((0.,0.,0.)); #9719=IFCDIRECTION((1.,0.,0.)); @@ -9771,7 +9771,7 @@ DATA; #9764=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9736,#9737,#9754,#9763)); #9765=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,800.),(1500.,800.),(1500.,0.))); #9766=IFCINDEXEDPOLYCURVE(#9765,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#9767=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9766)); +#9767=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9766)); #9768=IFCFURNITURETYPE('3fdUx6woXD0gMPZE1znEGj',$,'Generic Large Desk',$,$,$,(#9773,#9778),$,$,.NOTDEFINED.,.NOTDEFINED.); #9769=IFCCARTESIANPOINT((0.,0.,0.)); #9770=IFCDIRECTION((1.,0.,0.)); @@ -9882,7 +9882,7 @@ DATA; #9875=IFCCARTESIANPOINTLIST2D(((620.,400.),(620.,200.),(666.862915039062,86.8629150390625),(780.,40.),(893.137084960938,86.8629150390625),(940.,200.),(940.,400.))); #9876=IFCINDEXEDPOLYCURVE(#9875,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #9877=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9787,#9788,#9805,#9814,#9835,#9842,#9849,#9856,#9863,#9870)); -#9878=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9816,#9872,#9874,#9876)); +#9878=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9816,#9872,#9874,#9876)); #9879=IFCFURNITURETYPE('2NlI8A221FM8Kq1ePxkRcj',$,'Neufert Commercial Writing Desk and Chair',$,$,$,(#9884,#9889),$,$,.NOTDEFINED.,.NOTDEFINED.); #9880=IFCCARTESIANPOINT((0.,0.,0.)); #9881=IFCDIRECTION((1.,0.,0.)); @@ -9993,7 +9993,7 @@ DATA; #9986=IFCCARTESIANPOINTLIST2D(((540.,400.),(540.,200.),(586.862915039062,86.8629150390625),(700.,40.),(813.137084960938,86.8629150390625),(860.,200.),(860.,400.))); #9987=IFCINDEXEDPOLYCURVE(#9986,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCARCINDEX((4,5,6)),IFCLINEINDEX((6,7))),$); #9988=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#9898,#9899,#9916,#9925,#9946,#9953,#9960,#9967,#9974,#9981)); -#9989=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#9927,#9983,#9985,#9987)); +#9989=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#9927,#9983,#9985,#9987)); #9990=IFCFURNITURETYPE('2xHFOv90PDB8V8d9jfnSn4',$,'Neufert Commercial Office Desk and Chair',$,$,$,(#9995,#10000),$,$,.NOTDEFINED.,.NOTDEFINED.); #9991=IFCCARTESIANPOINT((0.,0.,0.)); #9992=IFCDIRECTION((1.,0.,0.)); @@ -10031,7 +10031,7 @@ DATA; #10024=IFCINDEXEDPOLYCURVE(#10025,(IFCLINEINDEX((1,2))),$); #10025=IFCCARTESIANPOINTLIST2D(((500.,570.),(348.915649414062,397.763854980469))); #10026=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10009)); -#10027=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10011,#10014,#10017,#10019,#10020,#10022,#10024)); +#10027=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10011,#10014,#10017,#10019,#10020,#10022,#10024)); #10028=IFCFURNITURETYPE('2w8YK_yEDAyOILW0BGluKY',$,'Neufert Dishwasher',$,$,$,(#10033,#10038),$,$,.NOTDEFINED.,.NOTDEFINED.); #10029=IFCCARTESIANPOINT((0.,0.,0.)); #10030=IFCDIRECTION((1.,0.,0.)); @@ -10067,7 +10067,7 @@ DATA; #10060=IFCAXIS2PLACEMENT2D(#10061,$); #10061=IFCCARTESIANPOINT((464.,408.)); #10062=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10047)); -#10063=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10049,#10052,#10053,#10056,#10059)); +#10063=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10049,#10052,#10053,#10056,#10059)); #10064=IFCFURNITURETYPE('3eEKCMvAH8jQqNEeVIAIVs',$,'Neufert Cooktop 58x51',$,$,$,(#10069,#10074),$,$,.NOTDEFINED.,.NOTDEFINED.); #10065=IFCCARTESIANPOINT((0.,0.,0.)); #10066=IFCDIRECTION((1.,0.,0.)); @@ -10103,7 +10103,7 @@ DATA; #10096=IFCAXIS2PLACEMENT2D(#10097,$); #10097=IFCCARTESIANPOINT((600.,408.)); #10098=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10083)); -#10099=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10085,#10088,#10089,#10092,#10095)); +#10099=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10085,#10088,#10089,#10092,#10095)); #10100=IFCFURNITURETYPE('01$fNgKNz9vBD_PFB2eSYD',$,'Neufert Cooktop 75x51',$,$,$,(#10105,#10110),$,$,.NOTDEFINED.,.NOTDEFINED.); #10101=IFCCARTESIANPOINT((0.,0.,0.)); #10102=IFCDIRECTION((1.,0.,0.)); @@ -10139,7 +10139,7 @@ DATA; #10132=IFCAXIS2PLACEMENT2D(#10133,$); #10133=IFCCARTESIANPOINT((712.,408.)); #10134=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10119)); -#10135=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10121,#10124,#10125,#10128,#10131)); +#10135=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10121,#10124,#10125,#10128,#10131)); #10136=IFCFURNITURETYPE('372FTeIjbB1R6DPg$eIP2B',$,'Neufert Cooktop 89x51',$,$,$,(#10141,#10146),$,$,.NOTDEFINED.,.NOTDEFINED.); #10137=IFCCARTESIANPOINT((0.,0.,0.)); #10138=IFCDIRECTION((1.,0.,0.)); @@ -10163,7 +10163,7 @@ DATA; #10156=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10155)); #10157=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,600.),(1750.,600.),(1750.,0.))); #10158=IFCINDEXEDPOLYCURVE(#10157,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10159=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10158)); +#10159=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10158)); #10160=IFCFURNITURETYPE('3bGRJqNJH3KPM0wZ1MwFPA',$,'Neufert Small Kitchen Bench',$,$,$,(#10165,#10170),$,$,.NOTDEFINED.,.NOTDEFINED.); #10161=IFCCARTESIANPOINT((0.,0.,0.)); #10162=IFCDIRECTION((1.,0.,0.)); @@ -10187,7 +10187,7 @@ DATA; #10180=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10179)); #10181=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,600.),(1950.,600.),(1950.,0.))); #10182=IFCINDEXEDPOLYCURVE(#10181,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10183=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10182)); +#10183=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10182)); #10184=IFCFURNITURETYPE('2Y00lIL1z2rfWNdvQl43sZ',$,'Neufert Medium Kitchen Bench',$,$,$,(#10189,#10194),$,$,.NOTDEFINED.,.NOTDEFINED.); #10185=IFCCARTESIANPOINT((0.,0.,0.)); #10186=IFCDIRECTION((1.,0.,0.)); @@ -10211,7 +10211,7 @@ DATA; #10204=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10203)); #10205=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,600.),(2200.,600.),(2200.,0.))); #10206=IFCINDEXEDPOLYCURVE(#10205,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10207=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10206)); +#10207=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10206)); #10208=IFCFURNITURETYPE('3lY3ResRrCdQkarPT2XdwX',$,'Neufert Large Kitchen Bench',$,$,$,(#10213,#10218),$,$,.NOTDEFINED.,.NOTDEFINED.); #10209=IFCCARTESIANPOINT((0.,0.,0.)); #10210=IFCDIRECTION((1.,0.,0.)); @@ -10235,7 +10235,7 @@ DATA; #10228=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10227)); #10229=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,400.),(450.,400.),(450.,0.))); #10230=IFCINDEXEDPOLYCURVE(#10229,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10231=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10230)); +#10231=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10230)); #10232=IFCFURNITURETYPE('3gxdZdqoDCRObZsZX3oNlc',$,'Neufert Small Full Height Cupboard',$,$,$,(#10237,#10242),$,$,.NOTDEFINED.,.NOTDEFINED.); #10233=IFCCARTESIANPOINT((0.,0.,0.)); #10234=IFCDIRECTION((1.,0.,0.)); @@ -10259,7 +10259,7 @@ DATA; #10252=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10251)); #10253=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,500.),(550.,500.),(550.,0.))); #10254=IFCINDEXEDPOLYCURVE(#10253,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10255=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10254)); +#10255=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10254)); #10256=IFCFURNITURETYPE('3FvkauIhz36xqWXGCmbu89',$,'Neufert Medium Full Height Cupboard',$,$,$,(#10261,#10266),$,$,.NOTDEFINED.,.NOTDEFINED.); #10257=IFCCARTESIANPOINT((0.,0.,0.)); #10258=IFCDIRECTION((1.,0.,0.)); @@ -10283,7 +10283,7 @@ DATA; #10276=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10275)); #10277=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,600.),(600.,600.),(600.,0.))); #10278=IFCINDEXEDPOLYCURVE(#10277,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10279=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10278)); +#10279=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10278)); #10280=IFCFURNITURETYPE('1TavY251XDNAdL6SQRKrSd',$,'Neufert Large Full Height Cupboard',$,$,$,(#10285,#10290),$,$,.NOTDEFINED.,.NOTDEFINED.); #10281=IFCCARTESIANPOINT((0.,0.,0.)); #10282=IFCDIRECTION((1.,0.,0.)); @@ -10307,7 +10307,7 @@ DATA; #10300=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10299)); #10301=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,700.),(600.,700.),(600.,0.))); #10302=IFCINDEXEDPOLYCURVE(#10301,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10303=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10302)); +#10303=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10302)); #10304=IFCFURNITURETYPE('2n54X4YJPAVOPedeZmT98U',$,'Generic Kitchen Floor Module',$,$,$,(#10309,#10314),$,$,.NOTDEFINED.,.NOTDEFINED.); #10305=IFCCARTESIANPOINT((0.,0.,0.)); #10306=IFCDIRECTION((1.,0.,0.)); @@ -10331,7 +10331,7 @@ DATA; #10324=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10323)); #10325=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,600.),(600.,600.),(600.,0.))); #10326=IFCINDEXEDPOLYCURVE(#10325,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10327=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10326)); +#10327=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10326)); #10328=IFCFURNITURETYPE('3lwEgqP_n2xhyTis4VNREK',$,'Generic Full Height Cupboard',$,$,$,(#10333,#10338),$,$,.NOTDEFINED.,.NOTDEFINED.); #10329=IFCCARTESIANPOINT((0.,0.,0.)); #10330=IFCDIRECTION((1.,0.,0.)); @@ -10355,7 +10355,7 @@ DATA; #10348=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10347)); #10349=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,650.),(750.,650.),(750.,0.))); #10350=IFCINDEXEDPOLYCURVE(#10349,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10351=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10350)); +#10351=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10350)); #10352=IFCFURNITURETYPE('1THu8hXwL6$f1dfAs0Z5W1',$,'Generic Small Fridge Zone',$,$,$,(#10357,#10362),$,$,.NOTDEFINED.,.NOTDEFINED.); #10353=IFCCARTESIANPOINT((0.,0.,0.)); #10354=IFCDIRECTION((1.,0.,0.)); @@ -10379,7 +10379,7 @@ DATA; #10372=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10371)); #10373=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,700.),(900.,700.),(900.,0.))); #10374=IFCINDEXEDPOLYCURVE(#10373,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10375=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10374)); +#10375=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10374)); #10376=IFCFURNITURETYPE('2l8U5d7RL7kwAVtGSmD7Gp',$,'Generic Medium Fridge Zone',$,$,$,(#10381,#10386),$,$,.NOTDEFINED.,.NOTDEFINED.); #10377=IFCCARTESIANPOINT((0.,0.,0.)); #10378=IFCDIRECTION((1.,0.,0.)); @@ -10403,7 +10403,7 @@ DATA; #10396=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10395)); #10397=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,750.),(1000.,750.),(1000.,0.))); #10398=IFCINDEXEDPOLYCURVE(#10397,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10399=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10398)); +#10399=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10398)); #10400=IFCFURNITURETYPE('2gPFVzLzD6Uf7T_Wri5gNI',$,'Generic Large Fridge Zone',$,$,$,(#10405,#10410),$,$,.NOTDEFINED.,.NOTDEFINED.); #10401=IFCCARTESIANPOINT((0.,0.,0.)); #10402=IFCDIRECTION((1.,0.,0.)); @@ -10442,7 +10442,7 @@ DATA; #10435=IFCAXIS2PLACEMENT3D(#10432,#10433,#10434); #10436=IFCDIRECTION((0.,0.,1.)); #10437=IFCEXTRUDEDAREASOLID(#10431,#10435,#10436,36.); -#10438=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10412,#10414,#10417,#10419)); +#10438=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10412,#10414,#10417,#10419)); #10439=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10430,#10437)); #10440=IFCFURNITURETYPE('3DxYzf8njBCgB$xzlxieGn',$,'Neufert Sink 86x44',$,$,$,(#10445,#10450),$,$,.NOTDEFINED.,.NOTDEFINED.); #10441=IFCCARTESIANPOINT((0.,0.,0.)); @@ -10491,7 +10491,7 @@ DATA; #10484=IFCAXIS2PLACEMENT3D(#10481,#10482,#10483); #10485=IFCDIRECTION((0.,0.,1.)); #10486=IFCEXTRUDEDAREASOLID(#10480,#10484,#10485,36.); -#10487=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10452,#10454,#10457,#10459)); +#10487=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10452,#10454,#10457,#10459)); #10488=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10468,#10479,#10486)); #10489=IFCFURNITURETYPE('1P3xWOrlvEfR263RdJ3DcA',$,'Neufert Sink 110x44',$,$,$,(#10494,#10499),$,$,.NOTDEFINED.,.NOTDEFINED.); #10490=IFCCARTESIANPOINT((0.,0.,0.)); @@ -10540,7 +10540,7 @@ DATA; #10533=IFCAXIS2PLACEMENT3D(#10530,#10531,#10532); #10534=IFCDIRECTION((0.,0.,1.)); #10535=IFCEXTRUDEDAREASOLID(#10529,#10533,#10534,36.); -#10536=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10501,#10503,#10506,#10508)); +#10536=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10501,#10503,#10506,#10508)); #10537=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10517,#10528,#10535)); #10538=IFCFURNITURETYPE('1p9JOB5N11CRQtR073k$lC',$,'Neufert Sink 124x44',$,$,$,(#10543,#10548),$,$,.NOTDEFINED.,.NOTDEFINED.); #10539=IFCCARTESIANPOINT((0.,0.,0.)); @@ -10580,7 +10580,7 @@ DATA; #10573=IFCAXIS2PLACEMENT3D(#10570,#10571,#10572); #10574=IFCDIRECTION((0.,0.,1.)); #10575=IFCEXTRUDEDAREASOLID(#10569,#10573,#10574,42.); -#10576=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10550,#10552,#10555,#10557)); +#10576=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10550,#10552,#10555,#10557)); #10577=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10568,#10575)); #10578=IFCFURNITURETYPE('2tiCW0y0TF_uVCrVaSezMH',$,'Generic Small Sink',$,$,$,(#10583,#10588),$,$,.NOTDEFINED.,.NOTDEFINED.); #10579=IFCCARTESIANPOINT((0.,0.,0.)); @@ -10629,7 +10629,7 @@ DATA; #10622=IFCAXIS2PLACEMENT3D(#10619,#10620,#10621); #10623=IFCDIRECTION((0.,0.,1.)); #10624=IFCEXTRUDEDAREASOLID(#10618,#10622,#10623,42.); -#10625=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10590,#10592,#10595,#10597)); +#10625=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10590,#10592,#10595,#10597)); #10626=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10606,#10617,#10624)); #10627=IFCFURNITURETYPE('1VWf6n2$9EW90yMRXFP3Nb',$,'Generic Medium Sink',$,$,$,(#10632,#10637),$,$,.NOTDEFINED.,.NOTDEFINED.); #10628=IFCCARTESIANPOINT((0.,0.,0.)); @@ -10678,7 +10678,7 @@ DATA; #10671=IFCAXIS2PLACEMENT3D(#10668,#10669,#10670); #10672=IFCDIRECTION((0.,0.,1.)); #10673=IFCEXTRUDEDAREASOLID(#10667,#10671,#10672,44.); -#10674=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10639,#10641,#10644,#10646)); +#10674=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10639,#10641,#10644,#10646)); #10675=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10655,#10666,#10673)); #10676=IFCFURNITURETYPE('1zpYASQLX7vuob7M11O9c5',$,'Generic Large Sink',$,$,$,(#10681,#10686),$,$,.NOTDEFINED.,.NOTDEFINED.); #10677=IFCCARTESIANPOINT((0.,0.,0.)); @@ -10703,7 +10703,7 @@ DATA; #10696=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10695)); #10697=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,600.),(2200.,600.),(2200.,0.))); #10698=IFCINDEXEDPOLYCURVE(#10697,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10699=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10698)); +#10699=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10698)); #10700=IFCFURNITURETYPE('0xGXkd4djDYxRzY0yBhR0s',$,'Generic 1-Bedroom Island Bench',$,$,$,(#10705,#10710),$,$,.NOTDEFINED.,.NOTDEFINED.); #10701=IFCCARTESIANPOINT((0.,0.,0.)); #10702=IFCDIRECTION((1.,0.,0.)); @@ -10727,7 +10727,7 @@ DATA; #10720=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10719)); #10721=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,700.),(2400.,700.),(2400.,0.))); #10722=IFCINDEXEDPOLYCURVE(#10721,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10723=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10722)); +#10723=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10722)); #10724=IFCFURNITURETYPE('2ZkyTuq9r0PejMk1x13oLO',$,'Generic 2-Bedroom Island Bench',$,$,$,(#10729,#10734),$,$,.NOTDEFINED.,.NOTDEFINED.); #10725=IFCCARTESIANPOINT((0.,0.,0.)); #10726=IFCDIRECTION((1.,0.,0.)); @@ -10751,7 +10751,7 @@ DATA; #10744=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10743)); #10745=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,700.),(3000.,700.),(3000.,0.))); #10746=IFCINDEXEDPOLYCURVE(#10745,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10747=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10746)); +#10747=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10746)); #10748=IFCFURNITURETYPE('1$9Aj9K9XBRu3kg_F5dWNX',$,'Generic 3-Bedroom Island Bench',$,$,$,(#10753,#10758),$,$,.NOTDEFINED.,.NOTDEFINED.); #10749=IFCCARTESIANPOINT((0.,0.,0.)); #10750=IFCDIRECTION((1.,0.,0.)); @@ -10775,7 +10775,7 @@ DATA; #10768=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10767)); #10769=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,500.),(400.,500.),(400.,0.))); #10770=IFCINDEXEDPOLYCURVE(#10769,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10771=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10770)); +#10771=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10770)); #10772=IFCFURNITURETYPE('0sGNIvuib3R9TtHjL1hS$4',$,'Generic Small Laundry Tub With Cupboard',$,$,$,(#10777,#10782),$,$,.NOTDEFINED.,.NOTDEFINED.); #10773=IFCCARTESIANPOINT((0.,0.,0.)); #10774=IFCDIRECTION((1.,0.,0.)); @@ -10799,7 +10799,7 @@ DATA; #10792=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10791)); #10793=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,500.),(600.,500.),(600.,0.))); #10794=IFCINDEXEDPOLYCURVE(#10793,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10795=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10794)); +#10795=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10794)); #10796=IFCFURNITURETYPE('1pZoHAhpb0xPEoHkbnHmI3',$,'Generic Medium Laundry Tub With Cupboard',$,$,$,(#10801,#10806),$,$,.NOTDEFINED.,.NOTDEFINED.); #10797=IFCCARTESIANPOINT((0.,0.,0.)); #10798=IFCDIRECTION((1.,0.,0.)); @@ -10829,7 +10829,7 @@ DATA; #10822=IFCAXIS2PLACEMENT2D(#10821,$); #10823=IFCCIRCLE(#10822,59.5); #10824=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10815)); -#10825=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10817,#10820,#10823)); +#10825=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10817,#10820,#10823)); #10826=IFCFURNITURETYPE('3ssmvtS7X3Tu3uDG3BTXCk',$,'Neufert Washing Machine',$,$,$,(#10831,#10836),$,$,.NOTDEFINED.,.NOTDEFINED.); #10827=IFCCARTESIANPOINT((0.,0.,0.)); #10828=IFCDIRECTION((1.,0.,0.)); @@ -10863,7 +10863,7 @@ DATA; #10856=IFCINDEXEDPOLYCURVE(#10857,(IFCLINEINDEX((1,2))),$); #10857=IFCCARTESIANPOINTLIST2D(((386.75,359.125),(312.375,626.12939453125))); #10858=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10845)); -#10859=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10847,#10850,#10853,#10855,#10856)); +#10859=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10847,#10850,#10853,#10855,#10856)); #10860=IFCFURNITURETYPE('3Fd5PJITz16OSasvIiWWg1',$,'Neufert Drier',$,$,$,(#10865,#10870),$,$,.NOTDEFINED.,.NOTDEFINED.); #10861=IFCCARTESIANPOINT((0.,0.,0.)); #10862=IFCDIRECTION((1.,0.,0.)); @@ -10887,7 +10887,7 @@ DATA; #10880=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10879)); #10881=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2100.,5400.),(2100.,0.))); #10882=IFCINDEXEDPOLYCURVE(#10881,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10883=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10882)); +#10883=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10882)); #10884=IFCSPACETYPE('3x3RBf5Bv8UhIO1JGJW1pr',$,'30 Deg Bay Class 1/1A No Overhang',$,$,$,(#10889,#10894),$,$,$,$); #10885=IFCCARTESIANPOINT((0.,0.,0.)); #10886=IFCDIRECTION((1.,0.,0.)); @@ -10911,7 +10911,7 @@ DATA; #10904=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10903)); #10905=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2100.,5400.),(2100.,0.))); #10906=IFCINDEXEDPOLYCURVE(#10905,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10907=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10906)); +#10907=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10906)); #10908=IFCSPACETYPE('1a6pNbCLHD4Am9mU9NvvLR',$,'30 Deg Bay Class 1/1A With Overhang',$,$,$,(#10913,#10918),$,$,$,$); #10909=IFCCARTESIANPOINT((0.,0.,0.)); #10910=IFCDIRECTION((1.,0.,0.)); @@ -10935,7 +10935,7 @@ DATA; #10928=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10927)); #10929=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2100.,5400.),(2100.,0.))); #10930=IFCINDEXEDPOLYCURVE(#10929,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10931=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10930)); +#10931=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10930)); #10932=IFCSPACETYPE('1OE2BMsObFQ9yXB0rLX$HG',$,'30 Deg Bay Class 1/1A With Wheelstop',$,$,$,(#10937,#10942),$,$,$,$); #10933=IFCCARTESIANPOINT((0.,0.,0.)); #10934=IFCDIRECTION((1.,0.,0.)); @@ -10959,7 +10959,7 @@ DATA; #10952=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10951)); #10953=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2300.,5400.),(2300.,0.))); #10954=IFCINDEXEDPOLYCURVE(#10953,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10955=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10954)); +#10955=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10954)); #10956=IFCSPACETYPE('16wLx93qTFcAr1Vs7oZJn8',$,'30 Deg Bay Class 2 No Overhang',$,$,$,(#10961,#10966),$,$,$,$); #10957=IFCCARTESIANPOINT((0.,0.,0.)); #10958=IFCDIRECTION((1.,0.,0.)); @@ -10983,7 +10983,7 @@ DATA; #10976=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10975)); #10977=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2300.,5400.),(2300.,0.))); #10978=IFCINDEXEDPOLYCURVE(#10977,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#10979=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#10978)); +#10979=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#10978)); #10980=IFCSPACETYPE('0iuAniuQHFX81D2OlkAAKx',$,'30 Deg Bay Class 2 With Overhang',$,$,$,(#10985,#10990),$,$,$,$); #10981=IFCCARTESIANPOINT((0.,0.,0.)); #10982=IFCDIRECTION((1.,0.,0.)); @@ -11007,7 +11007,7 @@ DATA; #11000=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#10999)); #11001=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2300.,5400.),(2300.,0.))); #11002=IFCINDEXEDPOLYCURVE(#11001,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11003=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11002)); +#11003=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11002)); #11004=IFCSPACETYPE('2oWRcjdDTEWOrHVTH_vtk$',$,'30 Deg Bay Class 2 With Wheelstop',$,$,$,(#11009,#11014),$,$,$,$); #11005=IFCCARTESIANPOINT((0.,0.,0.)); #11006=IFCDIRECTION((1.,0.,0.)); @@ -11031,7 +11031,7 @@ DATA; #11024=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11023)); #11025=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11026=IFCINDEXEDPOLYCURVE(#11025,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11027=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11026)); +#11027=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11026)); #11028=IFCSPACETYPE('2ui7AmBp92tPJtuml$HGXR',$,'30 Deg Bay Class 3 No Overhang',$,$,$,(#11033,#11038),$,$,$,$); #11029=IFCCARTESIANPOINT((0.,0.,0.)); #11030=IFCDIRECTION((1.,0.,0.)); @@ -11055,7 +11055,7 @@ DATA; #11048=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11047)); #11049=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11050=IFCINDEXEDPOLYCURVE(#11049,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11051=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11050)); +#11051=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11050)); #11052=IFCSPACETYPE('3vVoGMJy98dezWV1cb8Lzn',$,'30 Deg Bay Class 3 With Overhang',$,$,$,(#11057,#11062),$,$,$,$); #11053=IFCCARTESIANPOINT((0.,0.,0.)); #11054=IFCDIRECTION((1.,0.,0.)); @@ -11079,7 +11079,7 @@ DATA; #11072=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11071)); #11073=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11074=IFCINDEXEDPOLYCURVE(#11073,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11075=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11074)); +#11075=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11074)); #11076=IFCSPACETYPE('3V1JTi$_93Y8fY4g4sur_l',$,'30 Deg Bay Class 3 With Wheelstop',$,$,$,(#11081,#11086),$,$,$,$); #11077=IFCCARTESIANPOINT((0.,0.,0.)); #11078=IFCDIRECTION((1.,0.,0.)); @@ -11103,7 +11103,7 @@ DATA; #11096=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11095)); #11097=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11098=IFCINDEXEDPOLYCURVE(#11097,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11099=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11098)); +#11099=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11098)); #11100=IFCSPACETYPE('2pORfFWEr9qx8GIkrn0wWN',$,'30 Deg Bay Class 3A No Overhang',$,$,$,(#11105,#11110),$,$,$,$); #11101=IFCCARTESIANPOINT((0.,0.,0.)); #11102=IFCDIRECTION((1.,0.,0.)); @@ -11127,7 +11127,7 @@ DATA; #11120=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11119)); #11121=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11122=IFCINDEXEDPOLYCURVE(#11121,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11123=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11122)); +#11123=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11122)); #11124=IFCSPACETYPE('0_GZD4dM5DqgyUQ6ns2YZH',$,'30 Deg Bay Class 3A With Overhang',$,$,$,(#11129,#11134),$,$,$,$); #11125=IFCCARTESIANPOINT((0.,0.,0.)); #11126=IFCDIRECTION((1.,0.,0.)); @@ -11151,7 +11151,7 @@ DATA; #11144=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11143)); #11145=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11146=IFCINDEXEDPOLYCURVE(#11145,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11147=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11146)); +#11147=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11146)); #11148=IFCSPACETYPE('3eYOHUHNT1sQkIW4SbLSI$',$,'30 Deg Bay Class 3A With Wheelstop',$,$,$,(#11153,#11158),$,$,$,$); #11149=IFCCARTESIANPOINT((0.,0.,0.)); #11150=IFCDIRECTION((1.,0.,0.)); @@ -11175,7 +11175,7 @@ DATA; #11168=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11167)); #11169=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11170=IFCINDEXEDPOLYCURVE(#11169,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11171=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11170)); +#11171=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11170)); #11172=IFCSPACETYPE('2hLW7q6tP2LRCf_ucadoiq',$,'45 Deg Bay Class 1/1A No Overhang',$,$,$,(#11177,#11182),$,$,$,$); #11173=IFCCARTESIANPOINT((0.,0.,0.)); #11174=IFCDIRECTION((1.,0.,0.)); @@ -11199,7 +11199,7 @@ DATA; #11192=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11191)); #11193=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11194=IFCINDEXEDPOLYCURVE(#11193,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11195=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11194)); +#11195=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11194)); #11196=IFCSPACETYPE('2jYpB_k2j0vuJUXoM0rL$9',$,'45 Deg Bay Class 1/1A With Overhang',$,$,$,(#11201,#11206),$,$,$,$); #11197=IFCCARTESIANPOINT((0.,0.,0.)); #11198=IFCDIRECTION((1.,0.,0.)); @@ -11223,7 +11223,7 @@ DATA; #11216=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11215)); #11217=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11218=IFCINDEXEDPOLYCURVE(#11217,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11219=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11218)); +#11219=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11218)); #11220=IFCSPACETYPE('1XkEdP5Vf5mP9HBQ0gKAOr',$,'45 Deg Bay Class 1/1A With Wheelstop',$,$,$,(#11225,#11230),$,$,$,$); #11221=IFCCARTESIANPOINT((0.,0.,0.)); #11222=IFCDIRECTION((1.,0.,0.)); @@ -11247,7 +11247,7 @@ DATA; #11240=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11239)); #11241=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11242=IFCINDEXEDPOLYCURVE(#11241,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11243=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11242)); +#11243=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11242)); #11244=IFCSPACETYPE('3ZB_O8ZNDEyh90mIIiosw$',$,'45 Deg Bay Class 2 No Overhang',$,$,$,(#11249,#11254),$,$,$,$); #11245=IFCCARTESIANPOINT((0.,0.,0.)); #11246=IFCDIRECTION((1.,0.,0.)); @@ -11271,7 +11271,7 @@ DATA; #11264=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11263)); #11265=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11266=IFCINDEXEDPOLYCURVE(#11265,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11267=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11266)); +#11267=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11266)); #11268=IFCSPACETYPE('09bq0mBnv39vxIeAeSJZx9',$,'45 Deg Bay Class 2 With Overhang',$,$,$,(#11273,#11278),$,$,$,$); #11269=IFCCARTESIANPOINT((0.,0.,0.)); #11270=IFCDIRECTION((1.,0.,0.)); @@ -11295,7 +11295,7 @@ DATA; #11288=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11287)); #11289=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11290=IFCINDEXEDPOLYCURVE(#11289,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11291=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11290)); +#11291=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11290)); #11292=IFCSPACETYPE('0Mrncowv55mOF7pNFPJ0qc',$,'45 Deg Bay Class 2 With Wheelstop',$,$,$,(#11297,#11302),$,$,$,$); #11293=IFCCARTESIANPOINT((0.,0.,0.)); #11294=IFCDIRECTION((1.,0.,0.)); @@ -11319,7 +11319,7 @@ DATA; #11312=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11311)); #11313=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11314=IFCINDEXEDPOLYCURVE(#11313,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11315=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11314)); +#11315=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11314)); #11316=IFCSPACETYPE('3sqymatFTBKgamQdVFPpCM',$,'45 Deg Bay Class 3 No Overhang',$,$,$,(#11321,#11326),$,$,$,$); #11317=IFCCARTESIANPOINT((0.,0.,0.)); #11318=IFCDIRECTION((1.,0.,0.)); @@ -11343,7 +11343,7 @@ DATA; #11336=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11335)); #11337=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11338=IFCINDEXEDPOLYCURVE(#11337,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11339=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11338)); +#11339=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11338)); #11340=IFCSPACETYPE('2WHkz603X1f8bImuvlbJ_f',$,'45 Deg Bay Class 3 With Overhang',$,$,$,(#11345,#11350),$,$,$,$); #11341=IFCCARTESIANPOINT((0.,0.,0.)); #11342=IFCDIRECTION((1.,0.,0.)); @@ -11367,7 +11367,7 @@ DATA; #11360=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11359)); #11361=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11362=IFCINDEXEDPOLYCURVE(#11361,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11363=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11362)); +#11363=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11362)); #11364=IFCSPACETYPE('14nhimgKTB5g0dmk8yZTf_',$,'45 Deg Bay Class 3 With Wheelstop',$,$,$,(#11369,#11374),$,$,$,$); #11365=IFCCARTESIANPOINT((0.,0.,0.)); #11366=IFCDIRECTION((1.,0.,0.)); @@ -11391,7 +11391,7 @@ DATA; #11384=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11383)); #11385=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11386=IFCINDEXEDPOLYCURVE(#11385,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11387=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11386)); +#11387=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11386)); #11388=IFCSPACETYPE('3LoxuX9Pj4peQpoHtyiRT1',$,'45 Deg Bay Class 3A No Overhang',$,$,$,(#11393,#11398),$,$,$,$); #11389=IFCCARTESIANPOINT((0.,0.,0.)); #11390=IFCDIRECTION((1.,0.,0.)); @@ -11415,7 +11415,7 @@ DATA; #11408=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11407)); #11409=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11410=IFCINDEXEDPOLYCURVE(#11409,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11411=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11410)); +#11411=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11410)); #11412=IFCSPACETYPE('2HQeDSBEH1ExR718Ne_eLR',$,'45 Deg Bay Class 3A With Overhang',$,$,$,(#11417,#11422),$,$,$,$); #11413=IFCCARTESIANPOINT((0.,0.,0.)); #11414=IFCDIRECTION((1.,0.,0.)); @@ -11439,7 +11439,7 @@ DATA; #11432=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11431)); #11433=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11434=IFCINDEXEDPOLYCURVE(#11433,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11435=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11434)); +#11435=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11434)); #11436=IFCSPACETYPE('2dShVAVUH6ExI_2xhfSplC',$,'45 Deg Bay Class 3A With Wheelstop',$,$,$,(#11441,#11446),$,$,$,$); #11437=IFCCARTESIANPOINT((0.,0.,0.)); #11438=IFCDIRECTION((1.,0.,0.)); @@ -11463,7 +11463,7 @@ DATA; #11456=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11455)); #11457=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11458=IFCINDEXEDPOLYCURVE(#11457,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11459=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11458)); +#11459=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11458)); #11460=IFCSPACETYPE('1tQd39ODH82A64O5DpXTth',$,'60 Deg Bay Class 1/1A No Overhang',$,$,$,(#11465,#11470),$,$,$,$); #11461=IFCCARTESIANPOINT((0.,0.,0.)); #11462=IFCDIRECTION((1.,0.,0.)); @@ -11487,7 +11487,7 @@ DATA; #11480=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11479)); #11481=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11482=IFCINDEXEDPOLYCURVE(#11481,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11483=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11482)); +#11483=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11482)); #11484=IFCSPACETYPE('2cogb5bNDDTRHVLm$78Lhp',$,'60 Deg Bay Class 1/1A With Overhang',$,$,$,(#11489,#11494),$,$,$,$); #11485=IFCCARTESIANPOINT((0.,0.,0.)); #11486=IFCDIRECTION((1.,0.,0.)); @@ -11511,7 +11511,7 @@ DATA; #11504=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11503)); #11505=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11506=IFCINDEXEDPOLYCURVE(#11505,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11507=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11506)); +#11507=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11506)); #11508=IFCSPACETYPE('1opkPxEdz2Q9mHWHoSE65y',$,'60 Deg Bay Class 1/1A With Wheelstop',$,$,$,(#11513,#11518),$,$,$,$); #11509=IFCCARTESIANPOINT((0.,0.,0.)); #11510=IFCDIRECTION((1.,0.,0.)); @@ -11535,7 +11535,7 @@ DATA; #11528=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11527)); #11529=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11530=IFCINDEXEDPOLYCURVE(#11529,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11531=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11530)); +#11531=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11530)); #11532=IFCSPACETYPE('1bW0nGpa5B6h1vO8Y1csVM',$,'60 Deg Bay Class 2 No Overhang',$,$,$,(#11537,#11542),$,$,$,$); #11533=IFCCARTESIANPOINT((0.,0.,0.)); #11534=IFCDIRECTION((1.,0.,0.)); @@ -11559,7 +11559,7 @@ DATA; #11552=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11551)); #11553=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11554=IFCINDEXEDPOLYCURVE(#11553,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11555=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11554)); +#11555=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11554)); #11556=IFCSPACETYPE('3MzIRyt$z9kwxlUev$hZFc',$,'60 Deg Bay Class 2 With Overhang',$,$,$,(#11561,#11566),$,$,$,$); #11557=IFCCARTESIANPOINT((0.,0.,0.)); #11558=IFCDIRECTION((1.,0.,0.)); @@ -11583,7 +11583,7 @@ DATA; #11576=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11575)); #11577=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11578=IFCINDEXEDPOLYCURVE(#11577,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11579=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11578)); +#11579=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11578)); #11580=IFCSPACETYPE('3F9bDkW7935R9QwdW1b0oU',$,'60 Deg Bay Class 2 With Wheelstop',$,$,$,(#11585,#11590),$,$,$,$); #11581=IFCCARTESIANPOINT((0.,0.,0.)); #11582=IFCDIRECTION((1.,0.,0.)); @@ -11607,7 +11607,7 @@ DATA; #11600=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11599)); #11601=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11602=IFCINDEXEDPOLYCURVE(#11601,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11603=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11602)); +#11603=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11602)); #11604=IFCSPACETYPE('3sf5owQQb88hfxmWRxx4TC',$,'60 Deg Bay Class 3 No Overhang',$,$,$,(#11609,#11614),$,$,$,$); #11605=IFCCARTESIANPOINT((0.,0.,0.)); #11606=IFCDIRECTION((1.,0.,0.)); @@ -11631,7 +11631,7 @@ DATA; #11624=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11623)); #11625=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11626=IFCINDEXEDPOLYCURVE(#11625,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11627=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11626)); +#11627=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11626)); #11628=IFCSPACETYPE('2TUU6gAhH3AB6hup8L2NI7',$,'60 Deg Bay Class 3 With Overhang',$,$,$,(#11633,#11638),$,$,$,$); #11629=IFCCARTESIANPOINT((0.,0.,0.)); #11630=IFCDIRECTION((1.,0.,0.)); @@ -11655,7 +11655,7 @@ DATA; #11648=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11647)); #11649=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11650=IFCINDEXEDPOLYCURVE(#11649,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11651=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11650)); +#11651=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11650)); #11652=IFCSPACETYPE('3phfvcwuPDE9JQH94q78GC',$,'60 Deg Bay Class 3 With Wheelstop',$,$,$,(#11657,#11662),$,$,$,$); #11653=IFCCARTESIANPOINT((0.,0.,0.)); #11654=IFCDIRECTION((1.,0.,0.)); @@ -11679,7 +11679,7 @@ DATA; #11672=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11671)); #11673=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11674=IFCINDEXEDPOLYCURVE(#11673,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11675=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11674)); +#11675=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11674)); #11676=IFCSPACETYPE('0RzOJAnMnDfg4skr$b0d9y',$,'60 Deg Bay Class 3A No Overhang',$,$,$,(#11681,#11686),$,$,$,$); #11677=IFCCARTESIANPOINT((0.,0.,0.)); #11678=IFCDIRECTION((1.,0.,0.)); @@ -11703,7 +11703,7 @@ DATA; #11696=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11695)); #11697=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11698=IFCINDEXEDPOLYCURVE(#11697,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11699=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11698)); +#11699=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11698)); #11700=IFCSPACETYPE('0uH_EHhGP0veK$vl$k1Xid',$,'60 Deg Bay Class 3A With Overhang',$,$,$,(#11705,#11710),$,$,$,$); #11701=IFCCARTESIANPOINT((0.,0.,0.)); #11702=IFCDIRECTION((1.,0.,0.)); @@ -11727,7 +11727,7 @@ DATA; #11720=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11719)); #11721=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11722=IFCINDEXEDPOLYCURVE(#11721,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11723=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11722)); +#11723=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11722)); #11724=IFCSPACETYPE('21_QjJZwLB3eDiIu3MwXsh',$,'60 Deg Bay Class 3A With Wheelstop',$,$,$,(#11729,#11734),$,$,$,$); #11725=IFCCARTESIANPOINT((0.,0.,0.)); #11726=IFCDIRECTION((1.,0.,0.)); @@ -11751,7 +11751,7 @@ DATA; #11744=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11743)); #11745=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11746=IFCINDEXEDPOLYCURVE(#11745,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11747=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11746)); +#11747=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11746)); #11748=IFCSPACETYPE('1Ds59a9Lr4sOIlxnspOPeF',$,'90 Deg Bay Class 1 No Overhang',$,$,$,(#11753,#11758),$,$,$,$); #11749=IFCCARTESIANPOINT((0.,0.,0.)); #11750=IFCDIRECTION((1.,0.,0.)); @@ -11775,7 +11775,7 @@ DATA; #11768=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11767)); #11769=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,4800.),(2400.,4800.),(2400.,0.))); #11770=IFCINDEXEDPOLYCURVE(#11769,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11771=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11770)); +#11771=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11770)); #11772=IFCSPACETYPE('0s$txSGcj14OOtg_UuKBfb',$,'90 Deg Bay Class 1 With Overhang',$,$,$,(#11777,#11782),$,$,$,$); #11773=IFCCARTESIANPOINT((0.,0.,0.)); #11774=IFCDIRECTION((1.,0.,0.)); @@ -11799,7 +11799,7 @@ DATA; #11792=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11791)); #11793=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11794=IFCINDEXEDPOLYCURVE(#11793,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11795=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11794)); +#11795=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11794)); #11796=IFCSPACETYPE('0a5NzUKmj0MOa3iNkTROFF',$,'90 Deg Bay Class 1 With Wheelstop',$,$,$,(#11801,#11806),$,$,$,$); #11797=IFCCARTESIANPOINT((0.,0.,0.)); #11798=IFCDIRECTION((1.,0.,0.)); @@ -11823,7 +11823,7 @@ DATA; #11816=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11815)); #11817=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11818=IFCINDEXEDPOLYCURVE(#11817,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11819=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11818)); +#11819=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11818)); #11820=IFCSPACETYPE('0WEpOKDDTD$9wjGHmIYITR',$,'90 Deg Bay Class 1A No Overhang',$,$,$,(#11825,#11830),$,$,$,$); #11821=IFCCARTESIANPOINT((0.,0.,0.)); #11822=IFCDIRECTION((1.,0.,0.)); @@ -11847,7 +11847,7 @@ DATA; #11840=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11839)); #11841=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,4800.),(2400.,4800.),(2400.,0.))); #11842=IFCINDEXEDPOLYCURVE(#11841,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11843=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11842)); +#11843=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11842)); #11844=IFCSPACETYPE('0bC8sb15v0vuqyQaAMpuUy',$,'90 Deg Bay Class 1A With Overhang',$,$,$,(#11849,#11854),$,$,$,$); #11845=IFCCARTESIANPOINT((0.,0.,0.)); #11846=IFCDIRECTION((1.,0.,0.)); @@ -11871,7 +11871,7 @@ DATA; #11864=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11863)); #11865=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2400.,5400.),(2400.,0.))); #11866=IFCINDEXEDPOLYCURVE(#11865,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11867=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11866)); +#11867=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11866)); #11868=IFCSPACETYPE('2MRoX4J497muObP7i9WyE5',$,'90 Deg Bay Class 1A With Wheelstop',$,$,$,(#11873,#11878),$,$,$,$); #11869=IFCCARTESIANPOINT((0.,0.,0.)); #11870=IFCDIRECTION((1.,0.,0.)); @@ -11895,7 +11895,7 @@ DATA; #11888=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11887)); #11889=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11890=IFCINDEXEDPOLYCURVE(#11889,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11891=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11890)); +#11891=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11890)); #11892=IFCSPACETYPE('0_YSEmR$T5mRIB0pBU28uv',$,'90 Deg Bay Class 2 No Overhang',$,$,$,(#11897,#11902),$,$,$,$); #11893=IFCCARTESIANPOINT((0.,0.,0.)); #11894=IFCDIRECTION((1.,0.,0.)); @@ -11919,7 +11919,7 @@ DATA; #11912=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11911)); #11913=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,4800.),(2500.,4800.),(2500.,0.))); #11914=IFCINDEXEDPOLYCURVE(#11913,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11915=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11914)); +#11915=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11914)); #11916=IFCSPACETYPE('2$8gF_G4z579RkJ$FsM0kk',$,'90 Deg Bay Class 2 With Overhang',$,$,$,(#11921,#11926),$,$,$,$); #11917=IFCCARTESIANPOINT((0.,0.,0.)); #11918=IFCDIRECTION((1.,0.,0.)); @@ -11943,7 +11943,7 @@ DATA; #11936=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11935)); #11937=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2500.,5400.),(2500.,0.))); #11938=IFCINDEXEDPOLYCURVE(#11937,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11939=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11938)); +#11939=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11938)); #11940=IFCSPACETYPE('3U6CPpi$X0Gx_i8K83jOAg',$,'90 Deg Bay Class 2 With Wheelstop',$,$,$,(#11945,#11950),$,$,$,$); #11941=IFCCARTESIANPOINT((0.,0.,0.)); #11942=IFCDIRECTION((1.,0.,0.)); @@ -11967,7 +11967,7 @@ DATA; #11960=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11959)); #11961=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #11962=IFCINDEXEDPOLYCURVE(#11961,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11963=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11962)); +#11963=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11962)); #11964=IFCSPACETYPE('05DuugbA9BLBKKix23C_DJ',$,'90 Deg Bay Class 3 No Overhang',$,$,$,(#11969,#11974),$,$,$,$); #11965=IFCCARTESIANPOINT((0.,0.,0.)); #11966=IFCDIRECTION((1.,0.,0.)); @@ -11991,7 +11991,7 @@ DATA; #11984=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#11983)); #11985=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,4800.),(2600.,4800.),(2600.,0.))); #11986=IFCINDEXEDPOLYCURVE(#11985,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#11987=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#11986)); +#11987=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#11986)); #11988=IFCSPACETYPE('30Kd1ijoL9cgceMhsE6NKO',$,'90 Deg Bay Class 3 With Overhang',$,$,$,(#11993,#11998),$,$,$,$); #11989=IFCCARTESIANPOINT((0.,0.,0.)); #11990=IFCDIRECTION((1.,0.,0.)); @@ -12015,7 +12015,7 @@ DATA; #12008=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12007)); #12009=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #12010=IFCINDEXEDPOLYCURVE(#12009,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12011=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12010)); +#12011=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12010)); #12012=IFCSPACETYPE('01so97uKr7pveiBhvrHSqW',$,'90 Deg Bay Class 3 With Wheelstop',$,$,$,(#12017,#12022),$,$,$,$); #12013=IFCCARTESIANPOINT((0.,0.,0.)); #12014=IFCDIRECTION((1.,0.,0.)); @@ -12039,7 +12039,7 @@ DATA; #12032=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12031)); #12033=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #12034=IFCINDEXEDPOLYCURVE(#12033,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12035=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12034)); +#12035=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12034)); #12036=IFCSPACETYPE('2aXVzZiEbFuRm9xeHwaiFu',$,'90 Deg Bay Class 3A Option 1 No Overhang',$,$,$,(#12041,#12046),$,$,$,$); #12037=IFCCARTESIANPOINT((0.,0.,0.)); #12038=IFCDIRECTION((1.,0.,0.)); @@ -12063,7 +12063,7 @@ DATA; #12056=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12055)); #12057=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,4800.),(2600.,4800.),(2600.,0.))); #12058=IFCINDEXEDPOLYCURVE(#12057,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12059=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12058)); +#12059=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12058)); #12060=IFCSPACETYPE('3TKEOKXq956xmKr3NmAKI7',$,'90 Deg Bay Class 3A Option 1 With Overhang',$,$,$,(#12065,#12070),$,$,$,$); #12061=IFCCARTESIANPOINT((0.,0.,0.)); #12062=IFCDIRECTION((1.,0.,0.)); @@ -12087,7 +12087,7 @@ DATA; #12080=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12079)); #12081=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2600.,5400.),(2600.,0.))); #12082=IFCINDEXEDPOLYCURVE(#12081,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12083=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12082)); +#12083=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12082)); #12084=IFCSPACETYPE('3xuXqdehT71ulmktC2$t8g',$,'90 Deg Bay Class 3A Option 1 With Wheelstop',$,$,$,(#12089,#12094),$,$,$,$); #12085=IFCCARTESIANPOINT((0.,0.,0.)); #12086=IFCDIRECTION((1.,0.,0.)); @@ -12111,7 +12111,7 @@ DATA; #12104=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12103)); #12105=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2700.,5400.),(2700.,0.))); #12106=IFCINDEXEDPOLYCURVE(#12105,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12107=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12106)); +#12107=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12106)); #12108=IFCSPACETYPE('2T3o80_4X9qPs_A4890y43',$,'90 Deg Bay Class 3A Option 2 No Overhang',$,$,$,(#12113,#12118),$,$,$,$); #12109=IFCCARTESIANPOINT((0.,0.,0.)); #12110=IFCDIRECTION((1.,0.,0.)); @@ -12135,7 +12135,7 @@ DATA; #12128=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12127)); #12129=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,4800.),(2700.,4800.),(2700.,0.))); #12130=IFCINDEXEDPOLYCURVE(#12129,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12131=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12130)); +#12131=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12130)); #12132=IFCSPACETYPE('2oQ2ykEHz3FeIpOHqs60kM',$,'90 Deg Bay Class 3A Option 2 With Overhang',$,$,$,(#12137,#12142),$,$,$,$); #12133=IFCCARTESIANPOINT((0.,0.,0.)); #12134=IFCDIRECTION((1.,0.,0.)); @@ -12159,7 +12159,7 @@ DATA; #12152=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12151)); #12153=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5400.),(2700.,5400.),(2700.,0.))); #12154=IFCINDEXEDPOLYCURVE(#12153,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12155=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12154)); +#12155=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12154)); #12156=IFCSPACETYPE('2qFlMIc3zDjuSQeH6Arird',$,'90 Deg Bay Class 3A Option 2 With Wheelstop',$,$,$,(#12161,#12166),$,$,$,$); #12157=IFCCARTESIANPOINT((0.,0.,0.)); #12158=IFCDIRECTION((1.,0.,0.)); @@ -12183,7 +12183,7 @@ DATA; #12176=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12175)); #12177=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,2500.),(1200.,2500.),(1200.,0.))); #12178=IFCINDEXEDPOLYCURVE(#12177,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12179=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12178)); +#12179=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12178)); #12180=IFCSPACETYPE('2v5vVbmkDDjR6gqhAtaV1f',$,'90 Deg Bay Motorcycle',$,$,$,(#12185,#12190),$,$,$,$); #12181=IFCCARTESIANPOINT((0.,0.,0.)); #12182=IFCDIRECTION((1.,0.,0.)); @@ -12207,7 +12207,7 @@ DATA; #12200=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12199)); #12201=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,6300.),(2100.,6300.),(2100.,0.))); #12202=IFCINDEXEDPOLYCURVE(#12201,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12203=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12202)); +#12203=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12202)); #12204=IFCSPACETYPE('3PS6kAAYbDVBlETi4aKpId',$,'3000 Aisle Parallel Bay',$,$,$,(#12209,#12214),$,$,$,$); #12205=IFCCARTESIANPOINT((0.,0.,0.)); #12206=IFCDIRECTION((1.,0.,0.)); @@ -12231,7 +12231,7 @@ DATA; #12224=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12223)); #12225=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,6100.),(2100.,6100.),(2100.,0.))); #12226=IFCINDEXEDPOLYCURVE(#12225,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12227=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12226)); +#12227=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12226)); #12228=IFCSPACETYPE('1_i7luCzD5vgd0kquZOXu7',$,'3300 Aisle Parallel Bay',$,$,$,(#12233,#12238),$,$,$,$); #12229=IFCCARTESIANPOINT((0.,0.,0.)); #12230=IFCDIRECTION((1.,0.,0.)); @@ -12255,7 +12255,7 @@ DATA; #12248=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12247)); #12249=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5900.),(2100.,5900.),(2100.,0.))); #12250=IFCINDEXEDPOLYCURVE(#12249,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12251=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12250)); +#12251=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12250)); #12252=IFCSPACETYPE('2Rp59aAY91VOswCed9qUgQ',$,'3600 Aisle Parallel Bay',$,$,$,(#12257,#12262),$,$,$,$); #12253=IFCCARTESIANPOINT((0.,0.,0.)); #12254=IFCDIRECTION((1.,0.,0.)); @@ -12279,7 +12279,7 @@ DATA; #12272=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12271)); #12273=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,6600.),(2100.,6600.),(2100.,0.))); #12274=IFCINDEXEDPOLYCURVE(#12273,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12275=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12274)); +#12275=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12274)); #12276=IFCSPACETYPE('3H$lfzI15BHxaERd5pN5wz',$,'3000 Aisle Parallel Obstructed End Bay',$,$,$,(#12281,#12286),$,$,$,$); #12277=IFCCARTESIANPOINT((0.,0.,0.)); #12278=IFCDIRECTION((1.,0.,0.)); @@ -12303,7 +12303,7 @@ DATA; #12296=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12295)); #12297=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,6400.),(2100.,6400.),(2100.,0.))); #12298=IFCINDEXEDPOLYCURVE(#12297,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12299=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12298)); +#12299=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12298)); #12300=IFCSPACETYPE('3L$5K2RozDEQvE0D_5SR8G',$,'3300 Aisle Parallel Obstructed End Bay',$,$,$,(#12305,#12310),$,$,$,$); #12301=IFCCARTESIANPOINT((0.,0.,0.)); #12302=IFCDIRECTION((1.,0.,0.)); @@ -12327,7 +12327,7 @@ DATA; #12320=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12319)); #12321=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,6200.),(2100.,6200.),(2100.,0.))); #12322=IFCINDEXEDPOLYCURVE(#12321,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12323=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12322)); +#12323=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12322)); #12324=IFCSPACETYPE('32SIeXrHn6EO6uw$pCwV5p',$,'3600 Aisle Parallel Obstructed End Bay',$,$,$,(#12329,#12334),$,$,$,$); #12325=IFCCARTESIANPOINT((0.,0.,0.)); #12326=IFCDIRECTION((1.,0.,0.)); @@ -12351,7 +12351,7 @@ DATA; #12344=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12343)); #12345=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5000.),(2100.,5000.),(2100.,0.))); #12346=IFCINDEXEDPOLYCURVE(#12345,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12347=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12346)); +#12347=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12346)); #12348=IFCSPACETYPE('0SYQ_S7zf4YeJ9yxcx31fV',$,'3000 Aisle Parallel Unobstructed End Bay',$,$,$,(#12353,#12358),$,$,$,$); #12349=IFCCARTESIANPOINT((0.,0.,0.)); #12350=IFCDIRECTION((1.,0.,0.)); @@ -12375,7 +12375,7 @@ DATA; #12368=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12367)); #12369=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5000.),(2100.,5000.),(2100.,0.))); #12370=IFCINDEXEDPOLYCURVE(#12369,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12371=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12370)); +#12371=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12370)); #12372=IFCSPACETYPE('0t3q_audX0tgOztN7wTOpH',$,'3300 Aisle Parallel Unobstructed End Bay',$,$,$,(#12377,#12382),$,$,$,$); #12373=IFCCARTESIANPOINT((0.,0.,0.)); #12374=IFCDIRECTION((1.,0.,0.)); @@ -12399,7 +12399,7 @@ DATA; #12392=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#12391)); #12393=IFCCARTESIANPOINTLIST2D(((0.,0.),(0.,5000.),(2100.,5000.),(2100.,0.))); #12394=IFCINDEXEDPOLYCURVE(#12393,(IFCLINEINDEX((1,2)),IFCLINEINDEX((2,3)),IFCLINEINDEX((3,4)),IFCLINEINDEX((4,1))),$); -#12395=IFCSHAPEREPRESENTATION(#16,'Annotation','Curve2D',(#12394)); +#12395=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#12394)); #12396=IFCSPACETYPE('1SE9nks$f1cO6$rE4L7hjw',$,'3600 Aisle Parallel Unobstructed End Bay',$,$,$,(#12401,#12406),$,$,$,$); #12397=IFCCARTESIANPOINT((0.,0.,0.)); #12398=IFCDIRECTION((1.,0.,0.)); diff --git a/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Demo Library.ifc b/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Demo Library.ifc index dbfff3db4e..045a9e4ef0 100644 --- a/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Demo Library.ifc +++ b/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Demo Library.ifc @@ -1,13 +1,13 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); -FILE_NAME('/dev/null','2022-10-14T18:00:26+11:00',(),(),'IfcOpenShell v0.7.0-dc67287d','IfcOpenShell v0.7.0-dc67287d','Nobody'); +FILE_NAME('/dev/null','2023-02-04T13:08:05+11:00',(),(),'IfcOpenShell v0.7.0-07ee62eb9','IfcOpenShell v0.7.0-07ee62eb9','Nobody'); FILE_SCHEMA(('IFC4')); ENDSEC; DATA; -#1=IFCPROJECT('0yOx2IKFL4HAbf$IjzE0Kp',$,'BlenderBIM Demo',$,$,$,$,(#12,#16),#7); -#2=IFCPROJECTLIBRARY('2jUXWJsnH2pxWl9Bl3Ljhd',$,'BlenderBIM Demo Library',$,$,$,$,$,$); -#3=IFCRELDECLARES('0Rn4fWoen7xB9hskGGEfEy',$,$,$,#1,(#2)); +#1=IFCPROJECT('3ubSuEuavEPfXTf4v0gmbA',$,'BlenderBIM Demo',$,$,$,$,(#12,#16),#7); +#2=IFCPROJECTLIBRARY('1Qq43hq0v3B9Ko7EGW0hJ5',$,'BlenderBIM Demo Library',$,$,$,$,$,$); +#3=IFCRELDECLARES('0hU2lTJfX70AKkhyURrbam',$,$,$,#1,(#2)); #4=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); #5=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); #6=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); @@ -17,89 +17,89 @@ DATA; #10=IFCDIRECTION((1.,0.,0.)); #11=IFCAXIS2PLACEMENT3D(#8,#9,#10); #12=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#11,$); -#13=IFCCARTESIANPOINT((0.,0.,0.)); -#14=IFCDIRECTION((1.,0.,0.)); +#13=IFCCARTESIANPOINT((0.,0.)); +#14=IFCDIRECTION((1.,0.)); #15=IFCAXIS2PLACEMENT2D(#13,#14); #16=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Plan',2,1.E-05,#15,$); #17=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#12,$,.MODEL_VIEW.,$); -#18=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Plan',*,*,*,*,#16,$,.PLAN_VIEW.,$); +#18=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Plan',*,*,*,*,#16,$,.PLAN_VIEW.,$); #19=IFCMATERIAL('Unknown',$,$); -#20=IFCWALLTYPE('0D2QFqmA18fvA6TUteIRXc',$,'WAL50',$,$,$,$,$,$,.NOTDEFINED.); +#20=IFCWALLTYPE('3yGmcLQT96CPWJXcV3vNPJ',$,'WAL50',$,$,$,$,$,$,.NOTDEFINED.); #21=IFCMATERIALLAYERSET((#23),$,$); -#22=IFCRELASSOCIATESMATERIAL('0WbN7alqv8ix3w4MOdyl8F',$,$,$,(#20),#21); +#22=IFCRELASSOCIATESMATERIAL('0JMzROKjj7i8EKtMLZ2nXy',$,$,$,(#20),#21); #23=IFCMATERIALLAYER(#19,0.05,$,$,$,$,$); -#24=IFCRELDECLARES('13kodoVGr08Bn7WfGWndV_',$,$,$,#2,(#37,#41,#76,#47,#58,#91,#25,#225,#71,#159,#29,#62,#95,#20,#53,#86,#33,#66,#81)); -#25=IFCWALLTYPE('0qRxb2OqjDEfFI9i7b6qAw',$,'WAL100',$,$,$,$,$,$,.NOTDEFINED.); +#24=IFCRELDECLARES('1TTgyh7ynBQ8XpgpGSU6ao',$,$,$,#2,(#41,#76,#47,#58,#91,#25,#159,#225,#71,#29,#62,#95,#20,#53,#86,#33,#66,#81,#37)); +#25=IFCWALLTYPE('20jY5HfLH4LBwMrDEoTdML',$,'WAL100',$,$,$,$,$,$,.NOTDEFINED.); #26=IFCMATERIALLAYERSET((#28),$,$); -#27=IFCRELASSOCIATESMATERIAL('3BDm6HH553QhwCW7FPmjrR',$,$,$,(#25),#26); +#27=IFCRELASSOCIATESMATERIAL('2sICOUhur5WgrNUOi1pvhV',$,$,$,(#25),#26); #28=IFCMATERIALLAYER(#19,0.1,$,$,$,$,$); -#29=IFCWALLTYPE('1KMENjmzj7cf_am9SYEaXW',$,'WAL200',$,$,$,$,$,$,.NOTDEFINED.); +#29=IFCWALLTYPE('0xhGqQenH5Ov9L_CiLywqN',$,'WAL200',$,$,$,$,$,$,.NOTDEFINED.); #30=IFCMATERIALLAYERSET((#32),$,$); -#31=IFCRELASSOCIATESMATERIAL('1$36L06DrDYx1sZ9tBQ_WE',$,$,$,(#29),#30); +#31=IFCRELASSOCIATESMATERIAL('2pOhWSsWT4bQwtduxS8HNJ',$,$,$,(#29),#30); #32=IFCMATERIALLAYER(#19,0.2,$,$,$,$,$); -#33=IFCWALLTYPE('2y5Y19etz3rhrt8P45fuGA',$,'WAL300',$,$,$,$,$,$,.NOTDEFINED.); +#33=IFCWALLTYPE('1HrJFcNVH4XQJIRrEmUD6Z',$,'WAL300',$,$,$,$,$,$,.NOTDEFINED.); #34=IFCMATERIALLAYERSET((#36),$,$); -#35=IFCRELASSOCIATESMATERIAL('1WSONmheTD9xhiluqtfktr',$,$,$,(#33),#34); +#35=IFCRELASSOCIATESMATERIAL('0cAK6yBnXAnO$5LYcU3QQl',$,$,$,(#33),#34); #36=IFCMATERIALLAYER(#19,0.3,$,$,$,$,$); -#37=IFCCOVERINGTYPE('1pAuiYopL5hxCATiIPV8QG',$,'COV10',$,$,$,$,$,$,.NOTDEFINED.); +#37=IFCCOVERINGTYPE('11MVutxgn20fTEibOhUiS8',$,'COV10',$,$,$,$,$,$,.NOTDEFINED.); #38=IFCMATERIALLAYERSET((#40),$,$); -#39=IFCRELASSOCIATESMATERIAL('0ysRf97LT8fw28mDwt2vop',$,$,$,(#37),#38); +#39=IFCRELASSOCIATESMATERIAL('1$dvrpTAn6oPSVqcMtsvmV',$,$,$,(#37),#38); #40=IFCMATERIALLAYER(#19,0.01,$,$,$,$,$); -#41=IFCCOVERINGTYPE('00LbT8PQf3XwImYkj_i_$4',$,'COV20',$,$,(#45),$,$,$,.NOTDEFINED.); +#41=IFCCOVERINGTYPE('1DWvr7poP3ggxFE7vxOot2',$,'COV20',$,$,(#45),$,$,$,.NOTDEFINED.); #42=IFCMATERIALLAYERSET((#44),$,$); -#43=IFCRELASSOCIATESMATERIAL('0Kvr3quG19xw6$528t4NQi',$,$,$,(#41),#42); +#43=IFCRELASSOCIATESMATERIAL('2uf2C_54501xFgLlk_jqMG',$,$,$,(#41),#42); #44=IFCMATERIALLAYER(#19,0.02,$,$,$,$,$); -#45=IFCPROPERTYSET('1IZqsXecj8NQZcNAIAY48P',$,'EPset_Parametric',$,(#46)); +#45=IFCPROPERTYSET('0fSGHPSBH9U8H_ph5xpH65',$,'EPset_Parametric',$,(#46)); #46=IFCPROPERTYSINGLEVALUE('LayerSetDirection',$,IFCLABEL('AXIS2'),$); -#47=IFCCOVERINGTYPE('10YNsLMi9409CbEVFmDkJt',$,'COV30',$,$,(#51),$,$,$,.NOTDEFINED.); +#47=IFCCOVERINGTYPE('1ayqDfj8XDxB$G7ZFyRagM',$,'COV30',$,$,(#51),$,$,$,.NOTDEFINED.); #48=IFCMATERIALLAYERSET((#50),$,$); -#49=IFCRELASSOCIATESMATERIAL('2jZVWXllT9ugYrdBaIBAnt',$,$,$,(#47),#48); +#49=IFCRELASSOCIATESMATERIAL('01vVE$oHTA3BLmh2imRGuu',$,$,$,(#47),#48); #50=IFCMATERIALLAYER(#19,0.03,$,$,$,$,$); -#51=IFCPROPERTYSET('2M2_M1eSXFYR8vFE96Ecy1',$,'EPset_Parametric',$,(#52)); +#51=IFCPROPERTYSET('3v7cOUGgT0qxrxlQkzwSIR',$,'EPset_Parametric',$,(#52)); #52=IFCPROPERTYSINGLEVALUE('LayerSetDirection',$,IFCLABEL('AXIS3'),$); -#53=IFCRAMPTYPE('09P6PVRiT44vIjup23Olfq',$,'RAM200',$,$,$,$,$,$,.NOTDEFINED.); +#53=IFCRAMPTYPE('0VEv7VZVnDzxHXC$QE2Crm',$,'RAM200',$,$,$,$,$,$,.NOTDEFINED.); #54=IFCMATERIALLAYERSET((#56),$,$); -#55=IFCRELASSOCIATESMATERIAL('2Ghy1OMS1FLAOmdzrFp4rp',$,$,$,(#53),#54); +#55=IFCRELASSOCIATESMATERIAL('0ToQjR2aLAdgGPuqu6UH1o',$,$,$,(#53),#54); #56=IFCMATERIALLAYER(#19,0.2,$,$,$,$,$); #57=IFCCIRCLEPROFILEDEF(.AREA.,$,$,0.3); -#58=IFCPILETYPE('0X0OrCsUnDUPVeAu90N_K$',$,'P1',$,$,$,$,$,$,.NOTDEFINED.); +#58=IFCPILETYPE('26kmCVC0H4lOhCGn6cCLSQ',$,'P1',$,$,$,$,$,$,.NOTDEFINED.); #59=IFCMATERIALPROFILESET($,$,(#61),$); -#60=IFCRELASSOCIATESMATERIAL('1FiRvXL$nBkuT8B3FfiGT9',$,$,$,(#58),#59); +#60=IFCRELASSOCIATESMATERIAL('2Ev3ucMBPDtwntRLG_4cBU',$,$,$,(#58),#59); #61=IFCMATERIALPROFILE($,$,#19,#57,$,$); -#62=IFCSLABTYPE('1helZ086v1o8JD3Ow1eWAy',$,'FLR150',$,$,$,$,$,$,.NOTDEFINED.); +#62=IFCSLABTYPE('3cLRr85lHDAPjHswaO7574',$,'FLR150',$,$,$,$,$,$,.NOTDEFINED.); #63=IFCMATERIALLAYERSET((#65),$,$); -#64=IFCRELASSOCIATESMATERIAL('3BbM02xKH6h97dBaMJp$Rr',$,$,$,(#62),#63); +#64=IFCRELASSOCIATESMATERIAL('07afdGZLHCFej$qXPfCLn9',$,$,$,(#62),#63); #65=IFCMATERIALLAYER(#19,0.2,$,$,$,$,$); -#66=IFCSLABTYPE('1YAagoi$9D_hPiWtssbkcG',$,'FLR250',$,$,$,$,$,$,.NOTDEFINED.); +#66=IFCSLABTYPE('2WiuelwGf3Ah3gnVgDGEAn',$,'FLR250',$,$,$,$,$,$,.NOTDEFINED.); #67=IFCMATERIALLAYERSET((#69),$,$); -#68=IFCRELASSOCIATESMATERIAL('0m1oulHjT1u889pxJG$XG_',$,$,$,(#66),#67); +#68=IFCRELASSOCIATESMATERIAL('03XoY4bYD4ZwZgvg3JqIIK',$,$,$,(#66),#67); #69=IFCMATERIALLAYER(#19,0.3,$,$,$,$,$); #70=IFCRECTANGLEPROFILEDEF(.AREA.,$,$,0.5,0.6); -#71=IFCCOLUMNTYPE('1lzPzyyFfFYRgjqMHnKZLx',$,'C1',$,$,$,$,$,$,.NOTDEFINED.); +#71=IFCCOLUMNTYPE('187MdL9O13_OzlwsOaT0zY',$,'C1',$,$,$,$,$,$,.NOTDEFINED.); #72=IFCMATERIALPROFILESET($,$,(#74),$); -#73=IFCRELASSOCIATESMATERIAL('26fuP2VpfEnhlUsk0K1i4y',$,$,$,(#71),#72); +#73=IFCRELASSOCIATESMATERIAL('1CMVTn08P2Tu8afsZHQiUk',$,$,$,(#71),#72); #74=IFCMATERIALPROFILE($,$,#19,#70,$,$); #75=IFCCIRCLEHOLLOWPROFILEDEF(.AREA.,$,$,0.25,0.005); -#76=IFCCOLUMNTYPE('1qqu_K2Az3yvZSOapZmUrZ',$,'C2',$,$,$,$,$,$,.NOTDEFINED.); +#76=IFCCOLUMNTYPE('3e6tIcskjDOuj1_UAWcT87',$,'C2',$,$,$,$,$,$,.NOTDEFINED.); #77=IFCMATERIALPROFILESET($,$,(#79),$); -#78=IFCRELASSOCIATESMATERIAL('2YQz9JCGXAogjkmN3RZeKI',$,$,$,(#76),#77); +#78=IFCRELASSOCIATESMATERIAL('0ahT30pYb7zQ968gWY9q1A',$,$,$,(#76),#77); #79=IFCMATERIALPROFILE($,$,#19,#75,$,$); #80=IFCRECTANGLEHOLLOWPROFILEDEF(.AREA.,$,$,0.075,0.15,0.005,0.005,0.005); -#81=IFCCOLUMNTYPE('1rnXRgQ3X6pfk5O9j4HCLm',$,'C3',$,$,$,$,$,$,.NOTDEFINED.); +#81=IFCCOLUMNTYPE('0ZxXYg0BTFg8sbqXr50qPW',$,'C3',$,$,$,$,$,$,.NOTDEFINED.); #82=IFCMATERIALPROFILESET($,$,(#84),$); -#83=IFCRELASSOCIATESMATERIAL('2CQLZ1qlzA9uN2eRrpg99c',$,$,$,(#81),#82); +#83=IFCRELASSOCIATESMATERIAL('0ul_xSpIH2MxsZcv$ZFXG7',$,$,$,(#81),#82); #84=IFCMATERIALPROFILE($,$,#19,#80,$,$); #85=IFCISHAPEPROFILEDEF(.AREA.,'DEMO-I',$,0.1,0.2,0.005,0.01,0.005,$,$); -#86=IFCBEAMTYPE('1xjrF860f2H9zb04Ui98Rt',$,'B1',$,$,$,$,$,$,.NOTDEFINED.); +#86=IFCBEAMTYPE('06Td_2IhD5OgyKW34Ikv$Z',$,'B1',$,$,$,$,$,$,.NOTDEFINED.); #87=IFCMATERIALPROFILESET($,$,(#89),$); -#88=IFCRELASSOCIATESMATERIAL('03i9c81690fx2ZTBBXcqkL',$,$,$,(#86),#87); +#88=IFCRELASSOCIATESMATERIAL('2cT5kDtU11jv2sFtIKVfJa',$,$,$,(#86),#87); #89=IFCMATERIALPROFILE($,$,#19,#85,$,$); #90=IFCCSHAPEPROFILEDEF(.AREA.,'DEMO-C',$,0.2,0.1,0.0015,0.03,0.005); -#91=IFCBEAMTYPE('3mAc_7AGP06w4CzYOlYVL2',$,'B2',$,$,$,$,$,$,.NOTDEFINED.); +#91=IFCBEAMTYPE('1JyktsoBP8DgMbJiECPZ6d',$,'B2',$,$,$,$,$,$,.NOTDEFINED.); #92=IFCMATERIALPROFILESET($,$,(#94),$); -#93=IFCRELASSOCIATESMATERIAL('2xvXgaSvL7KPR25fXz0fSE',$,$,$,(#91),#92); +#93=IFCRELASSOCIATESMATERIAL('2$_YKuP914sBZmflM_8l1s',$,$,$,(#91),#92); #94=IFCMATERIALPROFILE($,$,#19,#90,$,$); -#95=IFCWINDOWTYPE('1kxjrhA4P2dwwueZ0_nSuu',$,'WT01',$,$,$,(#136,#158),$,$,.NOTDEFINED.,.NOTDEFINED.,$,$); +#95=IFCWINDOWTYPE('0g10V5zVP8c96j3mPV0Xvn',$,'WT01',$,$,$,(#136,#158),$,$,.NOTDEFINED.,.NOTDEFINED.,$,$); #96=IFCINDEXEDPOLYGONALFACE((13,17,18,14)); #97=IFCINDEXEDPOLYGONALFACE((5,6,3,4)); #98=IFCINDEXEDPOLYGONALFACE((7,8,2,1)); @@ -157,13 +157,13 @@ DATA; #150=IFCINDEXEDPOLYCURVE(#137,(IFCLINEINDEX((5,11))),$); #151=IFCINDEXEDPOLYCURVE(#137,(IFCLINEINDEX((6,12))),$); #152=IFCGEOMETRICCURVESET((#138,#139,#140,#141,#142,#143,#144,#145,#146,#147,#148,#149,#150,#151)); -#153=IFCSHAPEREPRESENTATION(#18,'Annotation','Annotation2D',(#152)); +#153=IFCSHAPEREPRESENTATION(#18,'Body','Annotation2D',(#152)); #154=IFCCARTESIANPOINT((0.,0.,0.)); #155=IFCDIRECTION((1.,0.,0.)); #156=IFCDIRECTION((0.,0.,1.)); #157=IFCAXIS2PLACEMENT3D(#154,#156,#155); #158=IFCREPRESENTATIONMAP(#157,#153); -#159=IFCDOORTYPE('0s370BWH51r8Xg03pJ5OBE',$,'DT01',$,$,$,(#204,#224),$,$,.NOTDEFINED.,.NOTDEFINED.,$,$); +#159=IFCDOORTYPE('0nu4v3oPPFmQIz2RA1Vp_t',$,'DT01',$,$,$,(#204,#224),$,$,.NOTDEFINED.,.NOTDEFINED.,$,$); #160=IFCINDEXEDPOLYGONALFACE((17,16,15,14)); #161=IFCINDEXEDPOLYGONALFACE((2,3,29,28)); #162=IFCINDEXEDPOLYGONALFACE((27,28,29,30,32,31)); @@ -223,13 +223,13 @@ DATA; #216=IFCINDEXEDPOLYCURVE(#205,(IFCLINEINDEX((11,15))),$); #217=IFCINDEXEDPOLYCURVE(#205,(IFCLINEINDEX((17,18)),IFCLINEINDEX((18,19)),IFCLINEINDEX((19,20)),IFCLINEINDEX((20,21)),IFCLINEINDEX((21,22)),IFCLINEINDEX((22,23)),IFCLINEINDEX((23,24)),IFCLINEINDEX((24,25)),IFCLINEINDEX((25,26)),IFCLINEINDEX((26,27)),IFCLINEINDEX((27,28)),IFCLINEINDEX((28,29))),$); #218=IFCGEOMETRICCURVESET((#206,#207,#208,#209,#210,#211,#212,#213,#214,#215,#216,#217)); -#219=IFCSHAPEREPRESENTATION(#18,'Annotation','Annotation2D',(#218)); +#219=IFCSHAPEREPRESENTATION(#18,'Body','Annotation2D',(#218)); #220=IFCCARTESIANPOINT((0.,0.,0.)); #221=IFCDIRECTION((1.,0.,0.)); #222=IFCDIRECTION((0.,0.,1.)); #223=IFCAXIS2PLACEMENT3D(#220,#222,#221); #224=IFCREPRESENTATIONMAP(#223,#219); -#225=IFCFURNITURETYPE('227RrM$yD30RGzlTgbBH3c',$,'BUN01',$,$,$,(#946,#988),$,$,.NOTDEFINED.,.NOTDEFINED.); +#225=IFCFURNITURETYPE('2YuVxsKJL9URJtwIhHY2GN',$,'BUN01',$,$,$,(#946,#988),$,$,.NOTDEFINED.,.NOTDEFINED.); #226=IFCINDEXEDPOLYGONALFACE((187,278,44)); #227=IFCINDEXEDPOLYGONALFACE((21,52,60)); #228=IFCINDEXEDPOLYGONALFACE((91,100,31)); @@ -987,7 +987,7 @@ DATA; #980=IFCINDEXEDPOLYCURVE(#947,(IFCLINEINDEX((60,61)),IFCLINEINDEX((61,62)),IFCLINEINDEX((62,63))),$); #981=IFCINDEXEDPOLYCURVE(#947,(IFCLINEINDEX((64,31))),$); #982=IFCGEOMETRICCURVESET((#948,#949,#950,#951,#952,#953,#954,#955,#956,#957,#958,#959,#960,#961,#962,#963,#964,#965,#966,#967,#968,#969,#970,#971,#972,#973,#974,#975,#976,#977,#978,#979,#980,#981)); -#983=IFCSHAPEREPRESENTATION(#18,'Annotation','Annotation2D',(#982)); +#983=IFCSHAPEREPRESENTATION(#18,'Body','Annotation2D',(#982)); #984=IFCCARTESIANPOINT((0.,0.,0.)); #985=IFCDIRECTION((1.,0.,0.)); #986=IFCDIRECTION((0.,0.,1.)); diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 21a825f859..b9bfd3ee70 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -381,7 +381,9 @@ class CreateDrawing(bpy.types.Operator): for body_context in body_contexts: with profile("Processing body context"): if body_context and elements: - geom_settings = ifcopenshell.geom.settings(DISABLE_TRIANGULATION=True, STRICT_TOLERANCE=True) + geom_settings = ifcopenshell.geom.settings( + DISABLE_TRIANGULATION=True, STRICT_TOLERANCE=True, INCLUDE_CURVES=True + ) geom_settings.set_context_ids(body_context) it = ifcopenshell.geom.iterator(geom_settings, ifc, multiprocessing.cpu_count(), include=elements) it.set_cache(cache) diff --git a/src/blenderbim/blenderbim/core/project.py b/src/blenderbim/blenderbim/core/project.py index 56a20731f9..c14068c2b0 100644 --- a/src/blenderbim/blenderbim/core/project.py +++ b/src/blenderbim/blenderbim/core/project.py @@ -47,19 +47,22 @@ def create_project(ifc, project, schema=None, template=None): project.run_context_add_context( context_type="Model", context_identifier="Box", target_view="MODEL_VIEW", parent=model ) + project.run_context_add_context( + context_type="Model", context_identifier="Annotation", target_view="SECTION_VIEW", parent=model + ) + project.run_context_add_context( + context_type="Model", context_identifier="Annotation", target_view="ELEVATION_VIEW", parent=model + ) plan = project.run_context_add_context(context_type="Plan", context_identifier="", target_view="", parent=0) project.run_context_add_context( context_type="Plan", context_identifier="Axis", target_view="GRAPH_VIEW", parent=plan ) + project.run_context_add_context( + context_type="Plan", context_identifier="Body", target_view="PLAN_VIEW", parent=plan + ) project.run_context_add_context( context_type="Plan", context_identifier="Annotation", target_view="PLAN_VIEW", parent=plan ) - project.run_context_add_context( - context_type="Plan", context_identifier="Annotation", target_view="SECTION_VIEW", parent=plan - ) - project.run_context_add_context( - context_type="Plan", context_identifier="Annotation", target_view="ELEVATION_VIEW", parent=plan - ) project.run_root_assign_class(obj=site, ifc_class="IfcSite", context=body) project.run_root_assign_class(obj=building, ifc_class="IfcBuilding", context=body) diff --git a/src/blenderbim/scripts/generate_au_library.py b/src/blenderbim/scripts/generate_au_library.py index 7dab03c45f..14f3cf0beb 100644 --- a/src/blenderbim/scripts/generate_au_library.py +++ b/src/blenderbim/scripts/generate_au_library.py @@ -48,7 +48,7 @@ class LibraryGenerator: model = ifcopenshell.api.run("context.add_context", self.file, context_type="Model") plan = ifcopenshell.api.run("context.add_context", self.file, context_type="Plan") self.representations = { - "body": ifcopenshell.api.run( + "model_body": ifcopenshell.api.run( "context.add_context", self.file, context_type="Model", @@ -56,7 +56,7 @@ class LibraryGenerator: target_view="MODEL_VIEW", parent=model, ), - "annotation": ifcopenshell.api.run( + "plan_body": ifcopenshell.api.run( "context.add_context", self.file, context_type="Plan", @@ -179,9 +179,9 @@ class LibraryGenerator: ) self.create_profile_type("IfcBeamType", "DEMO2", profile) - self.create_type("IfcWindowType", "DEMO1", {"body": "Window", "annotation": "Window-Annotation"}) - self.create_type("IfcDoorType", "DEMO1", {"body": "Door", "annotation": "Door-Annotation"}) - self.create_type("IfcFurnitureType", "BUNNY", {"body": "Bunny", "annotation": "Bunny-Annotation"}) + self.create_type("IfcWindowType", "DEMO1", {"model_body": "Window", "plan_body": "Window-Annotation"}) + self.create_type("IfcDoorType", "DEMO1", {"model_body": "Door", "plan_body": "Door-Annotation"}) + self.create_type("IfcFurnitureType", "BUNNY", {"model_body": "Bunny", "plan_body": "Bunny-Annotation"}) self.file.write("blenderbim-au-library.ifc") diff --git a/src/blenderbim/scripts/generate_demo_library.py b/src/blenderbim/scripts/generate_demo_library.py index fbf2b80449..3c60e49d73 100644 --- a/src/blenderbim/scripts/generate_demo_library.py +++ b/src/blenderbim/scripts/generate_demo_library.py @@ -41,7 +41,7 @@ class LibraryGenerator: model = ifcopenshell.api.run("context.add_context", self.file, context_type="Model") plan = ifcopenshell.api.run("context.add_context", self.file, context_type="Plan") self.representations = { - "body": ifcopenshell.api.run( + "model_body": ifcopenshell.api.run( "context.add_context", self.file, context_type="Model", @@ -49,11 +49,11 @@ class LibraryGenerator: target_view="MODEL_VIEW", parent=model, ), - "annotation": ifcopenshell.api.run( + "plan_body": ifcopenshell.api.run( "context.add_context", self.file, context_type="Plan", - context_identifier="Annotation", + context_identifier="Body", target_view="PLAN_VIEW", parent=plan, ), @@ -127,9 +127,9 @@ class LibraryGenerator: ) self.create_profile_type("IfcBeamType", "B2", profile) - self.create_type("IfcWindowType", "WT01", {"body": "Window", "annotation": "Window-Annotation"}) - self.create_type("IfcDoorType", "DT01", {"body": "Door", "annotation": "Door-Annotation"}) - self.create_type("IfcFurnitureType", "BUN01", {"body": "Bunny", "annotation": "Bunny-Annotation"}) + self.create_type("IfcWindowType", "WT01", {"model_body": "Window", "plan_body": "Window-Plan"}) + self.create_type("IfcDoorType", "DT01", {"model_body": "Door", "plan_body": "Door-Plan"}) + self.create_type("IfcFurnitureType", "BUN01", {"model_body": "Bunny", "plan_body": "Bunny-Plan"}) self.file.write("IFC4 Demo Library.ifc") diff --git a/src/blenderbim/scripts/generate_furniture_library.py b/src/blenderbim/scripts/generate_furniture_library.py index 60ec17afe5..64dbdf37bb 100644 --- a/src/blenderbim/scripts/generate_furniture_library.py +++ b/src/blenderbim/scripts/generate_furniture_library.py @@ -16,9 +16,6 @@ # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . -# fmt: off -# pylint: skip-file - import ifcopenshell import ifcopenshell.api import boltspy as bolts @@ -31,6 +28,7 @@ from ifcopenshell.util.shape_builder import ShapeBuilder V = lambda *x: Vector([float(i) for i in x]) + def get_simple_2dcurve_data(coords, fillets=[], fillet_radius=[], closed=True, ifc_file=None): """ Creates simple 2D curve from set of 2d coords and list of points with fillets. @@ -47,11 +45,11 @@ def get_simple_2dcurve_data(coords, fillets=[], fillet_radius=[], closed=True, i < returns (points, segments, ifc_curve) for the created simple curve if both points in e are equally far from pt, then v1 is returned.""" - + # option to use same fillet radius for all fillets if isinstance(fillet_radius, float): fillet_radius = [fillet_radius] * len(fillets) - + fillets = dict(zip(fillets, fillet_radius)) segments = [] points = [] @@ -60,11 +58,11 @@ def get_simple_2dcurve_data(coords, fillets=[], fillet_radius=[], closed=True, i if co_i in fillets: r = fillets[co_i] - rsb = r * cos(pi/4) # radius shift big - rss = r - rsb # radius shift small - - next_co = coords[(co_i+1) % len(coords)] - previous_co = coords[co_i-1] + rsb = r * cos(pi / 4) # radius shift big + rss = r - rsb # radius shift small + + next_co = coords[(co_i + 1) % len(coords)] + previous_co = coords[co_i - 1] # identify fillet type (1 of 4 possible types) x_direction = 1 if coords[co_i][0] < previous_co[0] or coords[co_i][0] < next_co[0] else -1 @@ -76,19 +74,19 @@ def get_simple_2dcurve_data(coords, fillets=[], fillet_radius=[], closed=True, i # identify fillet direction if co[1] == previous_co[1]: - points.extend( (xshift_point, middle_point, yshift_point) ) + points.extend((xshift_point, middle_point, yshift_point)) else: - points.extend( (yshift_point, middle_point, xshift_point) ) - - segments.append( [current_point-1, current_point] ) - segments.append( [current_point, current_point+1, current_point+2] ) + points.extend((yshift_point, middle_point, xshift_point)) + + segments.append([current_point - 1, current_point]) + segments.append([current_point, current_point + 1, current_point + 2]) else: - points.append( co ) + points.append(co) if co_i != 0: - segments.append( [current_point-1, current_point] ) + segments.append([current_point - 1, current_point]) if closed: - segments.append( [0, len(points)-1] ) + segments.append([0, len(points) - 1]) # replace negative index if segments[0][0] == -1: @@ -102,15 +100,16 @@ def get_simple_2dcurve_data(coords, fillets=[], fillet_radius=[], closed=True, i ifc_points = ifc_file.createIfcCartesianPointList2D(points) ifc_segments = [] for segment in segments: - segment = [i+1 for i in segment] + segment = [i + 1 for i in segment] if len(segment) == 2: - ifc_segments.append( ifc_file.createIfcLineIndex( segment )) + ifc_segments.append(ifc_file.createIfcLineIndex(segment)) elif len(segment) == 3: - ifc_segments.append( ifc_file.createIfcArcIndex( segment )) + ifc_segments.append(ifc_file.createIfcArcIndex(segment)) ifc_curve = ifc_file.createIfcIndexedPolyCurve(Points=ifc_points, Segments=ifc_segments) return (points, segments, ifc_curve) + def remove_redundant_points(points, segments): # prevent mutating points = [tuple(p) for p in points] @@ -130,11 +129,11 @@ def remove_redundant_points(points, segments): s = [ps if ps != i else prev_point for ps in s] valid_segments.append(s) segments = valid_segments - points_to_remove.append(i) + points_to_remove.append(i) # remove duplicate segments valid_segments = [segment for segment in segments if len(set(segment)) != 1] - points = [point for i, point in enumerate(points) if i not in points_to_remove] + points = [point for i, point in enumerate(points) if i not in points_to_remove] # correct the order in segments unique_points = sorted(set(chain(*valid_segments))) unique_points_translation = {prev: i for i, prev in enumerate(unique_points)} @@ -143,8 +142,9 @@ def remove_redundant_points(points, segments): return points, valid_segments - -def create_z_profile_lips_curve(ifc_file, FirstFlangeWidth, SecondFlangeWidth, Depth, Girth, WallThickness, FilletRadius): +def create_z_profile_lips_curve( + ifc_file, FirstFlangeWidth, SecondFlangeWidth, Depth, Girth, WallThickness, FilletRadius +): x1 = FirstFlangeWidth x2 = SecondFlangeWidth y = Depth / 2 @@ -153,29 +153,33 @@ def create_z_profile_lips_curve(ifc_file, FirstFlangeWidth, SecondFlangeWidth, D r = FilletRadius coords = ( - (-t/2, y), - (x2, y), - (x2, y-g), - (x2-t, y-g), - (x2-t, y-t), - (t/2, y-t), - (t/2, -y), - (-x1, -y), - (-x1, -y+g), - (-x1+t, -y+g), - (-x1+t, -y+t), - (-t/2, -y+t) + (-t / 2, y), + (x2, y), + (x2, y - g), + (x2 - t, y - g), + (x2 - t, y - t), + (t / 2, y - t), + (t / 2, -y), + (-x1, -y), + (-x1, -y + g), + (-x1 + t, -y + g), + (-x1 + t, -y + t), + (-t / 2, -y + t), ) # no additional thickness in outer radius option # points, segments, ifc_curve = create_curve_from_coords(coords, fillets = (0, 1, 4, 5, 6, 7, 10, 11), fillet_radius=r, closed=True, ifc_file=ifc_file) - points, segments, ifc_curve = get_simple_2dcurve_data(coords, - fillets = (0, 1, 4, 5, 6, 7, 10, 11), - fillet_radius=(r+t, r+t, r, r, r+t, r+t, r, r), - closed=True, ifc_file=ifc_file) + points, segments, ifc_curve = get_simple_2dcurve_data( + coords, + fillets=(0, 1, 4, 5, 6, 7, 10, 11), + fillet_radius=(r + t, r + t, r, r, r + t, r + t, r, r), + closed=True, + ifc_file=ifc_file, + ) return ifc_curve + def create_transition_arc_ifc(width, height, ifc_file=None): # create an arc in the rectangle with specified width and height # if it's not possible to make a complete arc @@ -183,30 +187,32 @@ def create_transition_arc_ifc(width, height, ifc_file=None): # and straight segment in the middle fillet_size = (width / 2) / height if fillet_size <= 1: - fillet_radius = height*fillet_size + fillet_radius = height * fillet_size curve_coords = [ - (0., 0.), - (0., height), - (width*0.5, height), + (0.0, 0.0), + (0.0, height), + (width * 0.5, height), (width, height), - (width, 0.), + (width, 0.0), ] fillets = (1, 3) else: fillet_radius = height curve_coords = [ - (0., 0.0), - (0., height), + (0.0, 0.0), + (0.0, height), (fillet_radius, height), - (width-fillet_radius, height), + (width - fillet_radius, height), (width, height), (width, 0.0), ] fillets = (1, 4) points, segments, transition_arc = get_simple_2dcurve_data( - curve_coords, fillets, fillet_radius, closed=False, ifc_file=ifc_file) + curve_coords, fillets, fillet_radius, closed=False, ifc_file=ifc_file + ) return points, segments, transition_arc + class LibraryGenerator: def generate(self, output_filename="IFC4 EU Steel.ifc"): ifcopenshell.api.pre_listeners = {} @@ -230,7 +236,7 @@ class LibraryGenerator: model = ifcopenshell.api.run("context.add_context", self.file, context_type="Model") plan = ifcopenshell.api.run("context.add_context", self.file, context_type="Plan") self.representations = { - "body": ifcopenshell.api.run( + "model_body": ifcopenshell.api.run( "context.add_context", self.file, context_type="Model", @@ -238,11 +244,11 @@ class LibraryGenerator: target_view="MODEL_VIEW", parent=model, ), - "annotation": ifcopenshell.api.run( + "plan_body": ifcopenshell.api.run( "context.add_context", self.file, context_type="Plan", - context_identifier="Annotation", + context_identifier="Body", target_view="PLAN_VIEW", parent=plan, ), @@ -250,112 +256,100 @@ class LibraryGenerator: builder = ShapeBuilder(self.file) - def create_box_objects(width, depth, height, - shift_to_center=False, return_representations=False): + def create_box_objects(width, depth, height, shift_to_center=False, return_representations=False): output = [] rectangle = builder.rectangle(size=V(width, depth)) box = builder.extrude(builder.profile(rectangle), height) - + if return_representations: - representation_3d = builder.get_representation( - context=self.representations['body'], - items=box - ) + representation_3d = builder.get_representation(context=self.representations["model_body"], items=box) output.append(representation_3d) else: output.append([box]) rectangle = builder.rectangle(size=V(width, depth)) if return_representations: - representation_2d = builder.get_representation(self.representations["annotation"], rectangle) + representation_2d = builder.get_representation(self.representations["plan_body"], rectangle) output.append(representation_2d) else: output.append([rectangle]) if shift_to_center: - shift_to_center = V(-width/2, -depth/2) + shift_to_center = V(-width / 2, -depth / 2) builder.translate(output[0], shift_to_center.to_3d()) builder.translate(output[1], shift_to_center) return output - def create_fillet_rectangle(size=None, position=None, fillet_radius=50.): + def create_fillet_rectangle(size=None, position=None, fillet_radius=50.0): kwargs = dict() if size: - kwargs['size'] = size + kwargs["size"] = size if position: - kwargs['position'] = position - + kwargs["position"] = position + _, _, rectangle = get_simple_2dcurve_data( coords=builder.get_rectangle_coords(**kwargs), - fillets=(0,1,2,3), + fillets=(0, 1, 2, 3), fillet_radius=fillet_radius, closed=True, - ifc_file=self.file + ifc_file=self.file, ) return rectangle - # beds - representation_3d, representation_2d = create_box_objects(680., 1300., 550., return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Cot mattress", representation_3d, representation_2d) + representation_3d, representation_2d = create_box_objects(680.0, 1300.0, 550.0, return_representations=True) + self.create_explicit_type("IfcFurnitureType", "Cot mattress", representation_3d, representation_2d) - def create_fancy_bed_representations(overall_width, overall_depth, overall_height, blanket_tan = tan(pi/8)): + def create_fancy_bed_representations(overall_width, overall_depth, overall_height, blanket_tan=tan(pi / 8)): # 0.85h - blanket starts # 0.7w - blanket shifts # 0.25h - blanket shift ends # o.2w - pillow starts bed = builder.rectangle(size=V(overall_width, overall_depth)) - blanket_pillow = builder.polyline(( - [0., overall_depth*0.85], - # pillow - [overall_width*0.2, overall_depth*0.85], - [overall_width*0.2, overall_depth], - [overall_width*0.2, overall_depth*0.85], - - [overall_width*0.7, overall_depth*0.85], - - # pillow - [overall_width*0.8, overall_depth*0.85-overall_width*(0.8-0.7)*blanket_tan], - [overall_width*0.8, overall_depth], - [overall_width*0.8, overall_depth*0.85-overall_width*(0.8-0.7)*blanket_tan], - - [overall_width, overall_depth*0.85-overall_width*(1-0.7)*blanket_tan], - )) - representation_2d = builder.get_representation(self.representations["annotation"], [bed, blanket_pillow]) + blanket_pillow = builder.polyline( + ( + [0.0, overall_depth * 0.85], + # pillow + [overall_width * 0.2, overall_depth * 0.85], + [overall_width * 0.2, overall_depth], + [overall_width * 0.2, overall_depth * 0.85], + [overall_width * 0.7, overall_depth * 0.85], + # pillow + [overall_width * 0.8, overall_depth * 0.85 - overall_width * (0.8 - 0.7) * blanket_tan], + [overall_width * 0.8, overall_depth], + [overall_width * 0.8, overall_depth * 0.85 - overall_width * (0.8 - 0.7) * blanket_tan], + [overall_width, overall_depth * 0.85 - overall_width * (1 - 0.7) * blanket_tan], + ) + ) + representation_2d = builder.get_representation(self.representations["plan_body"], [bed, blanket_pillow]) curve = builder.rectangle(size=V(overall_width, overall_depth)) mesh = builder.extrude(builder.profile(curve), overall_height) - representation_3d = builder.get_representation( - context=self.representations['body'], - items=mesh - ) + representation_3d = builder.get_representation(context=self.representations["model_body"], items=mesh) return representation_3d, representation_2d - representation_3d, representation_2d = create_fancy_bed_representations(920., 1880., 550.) - self.create_explicit_type('IfcFurnitureType', "Single bed", representation_3d, representation_2d) - representation_3d, representation_2d = create_fancy_bed_representations(920., 2030., 550.) - self.create_explicit_type('IfcFurnitureType', "Long single bed", representation_3d, representation_2d) - representation_3d, representation_2d = create_fancy_bed_representations(1070., 2030., 550.) - self.create_explicit_type('IfcFurnitureType', "King single bed", representation_3d, representation_2d) - representation_3d, representation_2d = create_fancy_bed_representations(1380., 1880., 550.) - self.create_explicit_type('IfcFurnitureType', "Double bed", representation_3d, representation_2d) - representation_3d, representation_2d = create_fancy_bed_representations(1530., 2030., 550.) - self.create_explicit_type('IfcFurnitureType', "Queen bed", representation_3d, representation_2d) - representation_3d, representation_2d = create_fancy_bed_representations(1830., 2030., 550.) - self.create_explicit_type('IfcFurnitureType', "King bed", representation_3d, representation_2d) - representation_3d, representation_2d = create_fancy_bed_representations(2030., 2030., 550.) - self.create_explicit_type('IfcFurnitureType', "Super King bed", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_bed_representations(920.0, 1880.0, 550.0) + self.create_explicit_type("IfcFurnitureType", "Single bed", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_bed_representations(920.0, 2030.0, 550.0) + self.create_explicit_type("IfcFurnitureType", "Long single bed", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_bed_representations(1070.0, 2030.0, 550.0) + self.create_explicit_type("IfcFurnitureType", "King single bed", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_bed_representations(1380.0, 1880.0, 550.0) + self.create_explicit_type("IfcFurnitureType", "Double bed", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_bed_representations(1530.0, 2030.0, 550.0) + self.create_explicit_type("IfcFurnitureType", "Queen bed", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_bed_representations(1830.0, 2030.0, 550.0) + self.create_explicit_type("IfcFurnitureType", "King bed", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_bed_representations(2030.0, 2030.0, 550.0) + self.create_explicit_type("IfcFurnitureType", "Super King bed", representation_3d, representation_2d) # wardrobes def create_fancy_wardrobe_representations(overall_width, overall_depth, overall_height): curve = builder.rectangle(size=V(overall_width, overall_depth)) mesh = builder.extrude(builder.profile(curve), overall_height) - representation_3d = builder.get_representation( - context=self.representations['body'], - items=mesh - ) + representation_3d = builder.get_representation(context=self.representations["model_body"], items=mesh) rect = builder.rectangle(size=V(overall_width, overall_depth)) cloth = [] @@ -364,30 +358,31 @@ class LibraryGenerator: # cloth step = 200m # cloth height offset = 0.1h # cloth width offset = 0.5step - cloths_amount = int(overall_width)//200 + ((int(overall_width) % 200) > 200*(0.5+0.1+0.05)) + cloths_amount = int(overall_width) // 200 + ((int(overall_width) % 200) > 200 * (0.5 + 0.1 + 0.05)) for i in range(cloths_amount): - tilt_offset = 0 if i % 2 == 0 else 200*0.2 - c = builder.polyline([ - (i * 200 + 200*0.5 - tilt_offset, 0.1*overall_depth), - (i * 200 + 200*0.5 + tilt_offset, (1-0.1)*overall_depth), - ]) + tilt_offset = 0 if i % 2 == 0 else 200 * 0.2 + c = builder.polyline( + [ + (i * 200 + 200 * 0.5 - tilt_offset, 0.1 * overall_depth), + (i * 200 + 200 * 0.5 + tilt_offset, (1 - 0.1) * overall_depth), + ] + ) cloth.append(c) - representation_2d = builder.get_representation(self.representations["annotation"], - items=[rect, *cloth] - ) + representation_2d = builder.get_representation(self.representations["plan_body"], items=[rect, *cloth]) return representation_3d, representation_2d - - representation_3d, representation_2d = create_fancy_wardrobe_representations(1800., 600., 2100.) - self.create_explicit_type('IfcFurnitureType', "ADG Main Bedroom Wardrobe", representation_3d, representation_2d) - representation_3d, representation_2d = create_fancy_wardrobe_representations(1000., 600., 2500.) - self.create_explicit_type('IfcFurnitureType', "Neufert Single Person Wardrobe", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_wardrobe_representations(1800.0, 600.0, 2100.0) + self.create_explicit_type("IfcFurnitureType", "ADG Main Bedroom Wardrobe", representation_3d, representation_2d) + + representation_3d, representation_2d = create_fancy_wardrobe_representations(1000.0, 600.0, 2500.0) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Single Person Wardrobe", representation_3d, representation_2d + ) # chairs - def create_fancy_chair(width, depth, height, seat_level, - return_representations=False): - thickness = 50. - shift_to_center = V(-width/2, 0) + def create_fancy_chair(width, depth, height, seat_level, return_representations=False): + thickness = 50.0 + shift_to_center = V(-width / 2, 0) mirror_axis = V(0, 1) output = [] @@ -395,41 +390,34 @@ class LibraryGenerator: chair_back = builder.rectangle(size=V(width, thickness)) leg = builder.rectangle(size=V(thickness, thickness)) legs = [leg] + builder.mirror( - leg, - mirror_axes=[V(1, 0), V(0, 1), V(1, 1)], - mirror_point=V(width / 2, depth / 2), - create_copy=True + leg, mirror_axes=[V(1, 0), V(0, 1), V(1, 1)], mirror_point=V(width / 2, depth / 2), create_copy=True ) builder.translate([seat, chair_back] + legs, shift_to_center) builder.mirror([seat, chair_back] + legs, mirror_axis) - seat = builder.extrude(builder.profile(seat), thickness, - position=V(0, 0, seat_level), - extrusion_vector=V(0, 0, -1)) - chair_back = builder.extrude(builder.profile(chair_back), height-seat_level, - position=V(0, 0, height), - extrusion_vector=V(0, 0, -1) + seat = builder.extrude( + builder.profile(seat), thickness, position=V(0, 0, seat_level), extrusion_vector=V(0, 0, -1) ) - legs = [builder.extrude(leg, seat_level-thickness) for leg in legs] + chair_back = builder.extrude( + builder.profile(chair_back), height - seat_level, position=V(0, 0, height), extrusion_vector=V(0, 0, -1) + ) + legs = [builder.extrude(leg, seat_level - thickness) for leg in legs] items_3d = [seat, chair_back] + legs if return_representations: representation_3d = builder.get_representation( - context=self.representations['body'], - items=items_3d + context=self.representations["model_body"], items=items_3d ) output.append(representation_3d) else: output.append(items_3d) - second_arc_depth = depth*(1-0.10) - second_arc_width = width - (depth-second_arc_depth)*2 - polyline = builder.polyline( (V(0,0), V(width, 0) ) ) - _, _, first_semicircle = create_transition_arc_ifc( - width, depth, ifc_file=self.file) + second_arc_depth = depth * (1 - 0.10) + second_arc_width = width - (depth - second_arc_depth) * 2 + polyline = builder.polyline((V(0, 0), V(width, 0))) + _, _, first_semicircle = create_transition_arc_ifc(width, depth, ifc_file=self.file) - _, _, second_semicircle = create_transition_arc_ifc( - second_arc_width, second_arc_depth, ifc_file=self.file) - builder.translate(second_semicircle, V((width-second_arc_width)/2, 0)) + _, _, second_semicircle = create_transition_arc_ifc(second_arc_width, second_arc_depth, ifc_file=self.file) + builder.translate(second_semicircle, V((width - second_arc_width) / 2, 0)) builder.translate([polyline, first_semicircle, second_semicircle], shift_to_center) builder.translate([polyline, first_semicircle, second_semicircle], V(0, -depth)) @@ -437,88 +425,97 @@ class LibraryGenerator: items_2d = [polyline, first_semicircle, second_semicircle] if return_representations: - representation_2d = builder.get_representation( - self.representations["annotation"], - items_2d - ) + representation_2d = builder.get_representation(self.representations["plan_body"], items_2d) output.append(representation_2d) else: output.append(items_2d) return output + representation_3d, representation_2d = create_fancy_chair(600.0, 400.0, 900.0, 450.0, True) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail Dining Chair", representation_3d, representation_2d + ) - representation_3d, representation_2d = create_fancy_chair(600., 400., 900., 450., True) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail Dining Chair", representation_3d, representation_2d) - - representation_3d, representation_2d = create_fancy_chair(300., 300., 800., 800., True) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail Bar Stool", representation_3d, representation_2d) + representation_3d, representation_2d = create_fancy_chair(300.0, 300.0, 800.0, 800.0, True) + self.create_explicit_type("IfcFurnitureType", "Neufert Retail Bar Stool", representation_3d, representation_2d) # table representation_3d, representation_2d = create_box_objects( - 700., 500., 550., - shift_to_center=True, return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Large Bedside Table", representation_3d, representation_2d) + 700.0, 500.0, 550.0, shift_to_center=True, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic Large Bedside Table", representation_3d, representation_2d + ) representation_3d, representation_2d = create_box_objects( - 600., 450., 550., - shift_to_center=True, return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Medium Bedside Table", representation_3d, representation_2d) + 600.0, 450.0, 550.0, shift_to_center=True, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic Medium Bedside Table", representation_3d, representation_2d + ) representation_3d, representation_2d = create_box_objects( - 500., 380., 500., - shift_to_center=True, return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Small Bedside Table", representation_3d, representation_2d) - + 500.0, 380.0, 500.0, shift_to_center=True, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic Small Bedside Table", representation_3d, representation_2d + ) def create_fancy_rectangle_table(width, depth, height, return_representations=False): output = [] - leg_size = 50. - countertop_thickness = 50. - shift_to_center = V(-width/2, -depth/2) + leg_size = 50.0 + countertop_thickness = 50.0 + shift_to_center = V(-width / 2, -depth / 2) rectangle = builder.rectangle(size=V(width, depth)) countertop = builder.extrude( - builder.profile(rectangle), countertop_thickness, - V(0, 0, height-countertop_thickness)) + builder.profile(rectangle), countertop_thickness, V(0, 0, height - countertop_thickness) + ) leg_curve = builder.rectangle(size=V(leg_size, leg_size)) legs_curves = [leg_curve] + builder.mirror( leg_curve, mirror_axes=[V(1, 0), V(0, 1), V(1, 1)], - mirror_point=V(width/2, depth/2), - create_copy=True) + mirror_point=V(width / 2, depth / 2), + create_copy=True, + ) legs_profiles = [builder.profile(leg) for leg in legs_curves] - legs = [builder.extrude(leg, height-countertop_thickness) for leg in legs_profiles] + legs = [builder.extrude(leg, height - countertop_thickness) for leg in legs_profiles] items = [countertop] + legs builder.translate(items, shift_to_center.to_3d()) if return_representations: - representation_3d = builder.get_representation( - context=self.representations['body'], - items=items - ) + representation_3d = builder.get_representation(context=self.representations["model_body"], items=items) output.append(representation_3d) else: output.append(items) rectangle = builder.rectangle(position=shift_to_center, size=V(width, depth)) if return_representations: - representation_2d = builder.get_representation(self.representations["annotation"], rectangle) + representation_2d = builder.get_representation(self.representations["plan_body"], rectangle) output.append(representation_2d) else: output.append([rectangle]) return output - representation_3d, representation_2d = create_fancy_rectangle_table(750., 750., 450., True) - self.create_explicit_type('IfcFurnitureType', "Generic Medium Coffee Table", representation_3d, representation_2d) - + representation_3d, representation_2d = create_fancy_rectangle_table(750.0, 750.0, 450.0, True) + self.create_explicit_type( + "IfcFurnitureType", "Generic Medium Coffee Table", representation_3d, representation_2d + ) # tables def create_rectangle_table_with_chairs( - table_width, table_depth, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats, side_seats = False + table_width, + table_depth, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats, + side_seats=False, ): items_table_3d, items_table_2d = create_fancy_rectangle_table(table_width, table_depth, table_height) items_chair_3d, items_chair_2d = create_fancy_chair(chair_width, chair_depth, chair_height, seat_level) @@ -526,184 +523,235 @@ class LibraryGenerator: if side_seats: number_of_seats -= 2 seats_per_side = number_of_seats // 2 - per_chair_gap = (table_width - chair_width * seats_per_side)/(seats_per_side+1) + per_chair_gap = (table_width - chair_width * seats_per_side) / (seats_per_side + 1) # 3d representation items_chairs_3d = [] if side_seats: items_chair_3d_transformed = builder.rotate(items_chair_3d, angle=90, create_copy=True) - builder.translate(items_chair_3d_transformed, V(table_width/2+table_chair_gap+chair_depth, 0, 0)) + builder.translate(items_chair_3d_transformed, V(table_width / 2 + table_chair_gap + chair_depth, 0, 0)) items_chairs_3d.append(items_chair_3d_transformed) - items_chairs_3d.append(builder.mirror(items_chair_3d_transformed, mirror_axes=V(1, 0), create_copy=True)) + items_chairs_3d.append( + builder.mirror(items_chair_3d_transformed, mirror_axes=V(1, 0), create_copy=True) + ) # create_copy condiition is needed to avoid having one unused chair in ifc for i in range(seats_per_side): coords = V( - -table_width/2 + per_chair_gap + i*(chair_width+per_chair_gap) + chair_width/2, - table_depth/2+table_chair_gap+chair_depth, 0) - cur_items_chair_3d = builder.translate( - items_chair_3d, - coords, - create_copy = i != seats_per_side - 1) + -table_width / 2 + per_chair_gap + i * (chair_width + per_chair_gap) + chair_width / 2, + table_depth / 2 + table_chair_gap + chair_depth, + 0, + ) + cur_items_chair_3d = builder.translate(items_chair_3d, coords, create_copy=i != seats_per_side - 1) items_chairs_3d.append(cur_items_chair_3d) items_chairs_3d.append(builder.mirror(cur_items_chair_3d, mirror_axes=V(0, 1), create_copy=True)) items_chairs_3d = list(chain(*items_chairs_3d)) representation_3d = builder.get_representation( - self.representations["body"], items=items_table_3d+items_chairs_3d) + self.representations["model_body"], items=items_table_3d + items_chairs_3d + ) # 2d representation items_chairs_2d = [] if side_seats: items_chair_2d_transformed = builder.rotate(items_chair_2d, angle=90, create_copy=True) - builder.translate(items_chair_2d_transformed, V(table_width/2+table_chair_gap+chair_depth, 0)) + builder.translate(items_chair_2d_transformed, V(table_width / 2 + table_chair_gap + chair_depth, 0)) items_chairs_2d.append(items_chair_2d_transformed) - items_chairs_2d.append(builder.mirror(items_chair_2d_transformed, mirror_axes=V(1, 0), create_copy=True)) + items_chairs_2d.append( + builder.mirror(items_chair_2d_transformed, mirror_axes=V(1, 0), create_copy=True) + ) # create_copy condiition is needed to avoid having one unused chair in ifc for i in range(seats_per_side): coords = V( - -table_width/2 + per_chair_gap + i*(chair_width+per_chair_gap) + chair_width/2, - table_depth/2+table_chair_gap+chair_depth) - cur_items_chair_2d = builder.translate( - items_chair_2d, - coords, - create_copy = i != seats_per_side - 1) + -table_width / 2 + per_chair_gap + i * (chair_width + per_chair_gap) + chair_width / 2, + table_depth / 2 + table_chair_gap + chair_depth, + ) + cur_items_chair_2d = builder.translate(items_chair_2d, coords, create_copy=i != seats_per_side - 1) items_chairs_2d.append(cur_items_chair_2d) items_chairs_2d.append(builder.mirror(cur_items_chair_2d, mirror_axes=V(0, 1), create_copy=True)) items_chairs_2d = list(chain(*items_chairs_2d)) representation_2d = builder.get_representation( - self.representations["annotation"], items=items_table_2d+items_chairs_2d) + self.representations["plan_body"], items=items_table_2d + items_chairs_2d + ) return representation_3d, representation_2d # short 4-seater table - overall_width, overall_depth, overall_height = (1750., 1750., 900.) - table_width, table_depth, table_height = (850., 850., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (1750.0, 1750.0, 900.0) + table_width, table_depth, table_height = (850.0, 850.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_rectangle_table_with_chairs( - table_width, table_depth, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 4, side_seats=True + table_width, + table_depth, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=4, + side_seats=True, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 4-Seater Square Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 4-Seater Square Table", - representation_3d, representation_2d) # wide 4-seater table - overall_width, overall_depth, overall_height = (1300., 2000., 900.) - table_width, table_depth, table_height = (1300., 800., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (450., 450., 900., 450.) + overall_width, overall_depth, overall_height = (1300.0, 2000.0, 900.0) + table_width, table_depth, table_height = (1300.0, 800.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (450.0, 450.0, 900.0, 450.0) representation_3d, representation_2d = create_rectangle_table_with_chairs( - table_width, table_depth, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 4, side_seats=False + table_width, + table_depth, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=4, + side_seats=False, ) - self.create_explicit_type('IfcFurnitureType', "Neufert Residential 4-Seater Rectangular Table", - representation_3d, representation_2d) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Residential 4-Seater Rectangular Table", representation_3d, representation_2d + ) # 2-seater table - overall_width, overall_depth, overall_height = (625., 1750., 900.) - table_width, table_depth, table_height = (625., 800., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (625.0, 1750.0, 900.0) + table_width, table_depth, table_height = (625.0, 800.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_rectangle_table_with_chairs( - table_width, table_depth, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 2 + table_width, + table_depth, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=2, ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 2-Seater Rectangular Table", - representation_3d, representation_2d) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 2-Seater Rectangular Table", representation_3d, representation_2d + ) # 4-seater table - overall_width, overall_depth, overall_height = (1250., 1750., 900.) - table_width, table_depth, table_height = (1250., 800., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (1250.0, 1750.0, 900.0) + table_width, table_depth, table_height = (1250.0, 800.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_rectangle_table_with_chairs( - table_width, table_depth, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 4 + table_width, + table_depth, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=4, ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 4-Seater Rectangular Table", - representation_3d, representation_2d) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 4-Seater Rectangular Table", representation_3d, representation_2d + ) # 6-seater table - overall_width, overall_depth, overall_height = (1875., 1750., 900.) - table_width, table_depth, table_height = (1875., 800., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (1875.0, 1750.0, 900.0) + table_width, table_depth, table_height = (1875.0, 800.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_rectangle_table_with_chairs( - table_width, table_depth, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 6 + table_width, + table_depth, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=6, ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 6-Seater Rectangular Table", - representation_3d, representation_2d) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 6-Seater Rectangular Table", representation_3d, representation_2d + ) # 8-seater table - overall_width, overall_depth, overall_height = (2500., 1750., 900.) - table_width, table_depth, table_height = (2500., 800., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (2500.0, 1750.0, 900.0) + table_width, table_depth, table_height = (2500.0, 800.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_rectangle_table_with_chairs( - table_width, table_depth, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 8 + table_width, + table_depth, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=8, ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 8-Seater Rectangular Table", - representation_3d, representation_2d) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 8-Seater Rectangular Table", representation_3d, representation_2d + ) # 12-seater table - overall_width, overall_depth, overall_height = (3750., 1750., 900.) - table_width, table_depth, table_height = (3750., 800., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (3750.0, 1750.0, 900.0) + table_width, table_depth, table_height = (3750.0, 800.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_rectangle_table_with_chairs( - table_width, table_depth, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 12 + table_width, + table_depth, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=12, ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 12-Seater Rectangular Table", - representation_3d, representation_2d) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 12-Seater Rectangular Table", representation_3d, representation_2d + ) def create_fancy_circular_table(diameter, height, return_representations=False): radius = diameter / 2 width, depth = radius, radius output = [] - leg_size = 50. - countertop_thickness = 50. - shift_to_center = V(-width/2, -depth/2) + leg_size = 50.0 + countertop_thickness = 50.0 + shift_to_center = V(-width / 2, -depth / 2) circle = builder.circle(radius=radius) countertop = builder.extrude( - builder.profile(circle), countertop_thickness, - V(0, 0, height-countertop_thickness)) + builder.profile(circle), countertop_thickness, V(0, 0, height - countertop_thickness) + ) leg_curve = builder.circle(radius=leg_size) - leg = builder.extrude(builder.profile(leg_curve), height-countertop_thickness) + leg = builder.extrude(builder.profile(leg_curve), height - countertop_thickness) items = [countertop, leg] if return_representations: - representation_3d = builder.get_representation( - context=self.representations['body'], - items=items - ) + representation_3d = builder.get_representation(context=self.representations["model_body"], items=items) output.append(representation_3d) else: output.append(items) circle = builder.circle(radius=radius) if return_representations: - representation_2d = builder.get_representation(self.representations["annotation"], circle) + representation_2d = builder.get_representation(self.representations["plan_body"], circle) output.append(representation_2d) else: output.append([circle]) @@ -711,9 +759,15 @@ class LibraryGenerator: return output def create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats, side_seats = False + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats, + side_seats=False, ): items_table_3d, items_table_2d = create_fancy_circular_table(table_diameter, table_height) items_chair_3d, items_chair_2d = create_fancy_chair(chair_width, chair_depth, chair_height, seat_level) @@ -728,17 +782,15 @@ class LibraryGenerator: for i in range(number_of_seats): last_seat = i == number_of_seats - 1 cur_items_chair_3d = builder.translate( - items_chair_3d, - V(0, table_radius + table_chair_gap + chair_depth, 0), - create_copy=not last_seat) - builder.rotate( - cur_items_chair_3d, - per_chair_angle*i) + items_chair_3d, V(0, table_radius + table_chair_gap + chair_depth, 0), create_copy=not last_seat + ) + builder.rotate(cur_items_chair_3d, per_chair_angle * i) items_chairs_3d.append(cur_items_chair_3d) items_chairs_3d = list(chain(*items_chairs_3d)) representation_3d = builder.get_representation( - self.representations["body"], items=items_table_3d+items_chairs_3d) + self.representations["model_body"], items=items_table_3d + items_chairs_3d + ) # 2d representation items_chairs_2d = [] @@ -747,300 +799,344 @@ class LibraryGenerator: for i in range(number_of_seats): last_seat = i == number_of_seats - 1 cur_items_chair_2d = builder.translate( - items_chair_2d, - V(0, table_radius + table_chair_gap + chair_depth), - create_copy=not last_seat) - builder.rotate( - cur_items_chair_2d, - per_chair_angle*i) + items_chair_2d, V(0, table_radius + table_chair_gap + chair_depth), create_copy=not last_seat + ) + builder.rotate(cur_items_chair_2d, per_chair_angle * i) items_chairs_2d.append(cur_items_chair_2d) items_chairs_2d = list(chain(*items_chairs_2d)) representation_2d = builder.get_representation( - self.representations["annotation"], items=items_table_2d+items_chairs_2d) + self.representations["plan_body"], items=items_table_2d + items_chairs_2d + ) return representation_3d, representation_2d # circular 2-seater table - overall_width, overall_depth, overall_height = (1500., 1500., 900.) - table_diameter, table_height = (600., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (1500.0, 1500.0, 900.0) + table_diameter, table_height = (600.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 2 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=2, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 2-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 2-Seater Circular Table", - representation_3d, representation_2d) # circular 3-seater table - overall_width, overall_depth, overall_height = (1700., 1700., 900.) - table_diameter, table_height = (800., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (1700.0, 1700.0, 900.0) + table_diameter, table_height = (800.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 3 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=3, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 3-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 3-Seater Circular Table", - representation_3d, representation_2d) # circular 4-seater table - overall_width, overall_depth, overall_height = (1800., 1800., 900.) - table_diameter, table_height = (900., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (1800.0, 1800.0, 900.0) + table_diameter, table_height = (900.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 4 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=4, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 4-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 4-Seater Circular Table", - representation_3d, representation_2d) # circular 5-seater table - overall_width, overall_depth, overall_height = (2000., 2000., 900.) - table_diameter, table_height = (1100., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (2000.0, 2000.0, 900.0) + table_diameter, table_height = (1100.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 5 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=5, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 5-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 5-Seater Circular Table", - representation_3d, representation_2d) # circular 6-seater table - overall_width, overall_depth, overall_height = (2150., 2150., 900.) - table_diameter, table_height = (1250., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (2150.0, 2150.0, 900.0) + table_diameter, table_height = (1250.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 6 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=6, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 6-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 6-Seater Circular Table", - representation_3d, representation_2d) # circular 8-seater table - overall_width, overall_depth, overall_height = (2300., 2300., 900.) - table_diameter, table_height = (1400., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (2300.0, 2300.0, 900.0) + table_diameter, table_height = (1400.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 8 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=8, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 8-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 8-Seater Circular Table", - representation_3d, representation_2d) # circular 10-seater table - overall_width, overall_depth, overall_height = (2450., 2450., 900.) - table_diameter, table_height = (1550., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (2450.0, 2450.0, 900.0) + table_diameter, table_height = (1550.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 10 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=10, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 10-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 10-Seater Circular Table", - representation_3d, representation_2d) # circular 12-seater table - overall_width, overall_depth, overall_height = (2750., 2750., 900.) - table_diameter, table_height = (1850., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (2750.0, 2750.0, 900.0) + table_diameter, table_height = (1850.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 12 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=12, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 12-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 12-Seater Circular Table", - representation_3d, representation_2d) # circular 14-seater table - overall_width, overall_depth, overall_height = (3100., 3100., 900.) - table_diameter, table_height = (2200., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (3100.0, 3100.0, 900.0) + table_diameter, table_height = (2200.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 14 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=14, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 14-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 14-Seater Circular Table", - representation_3d, representation_2d) # circular 16-seater table - overall_width, overall_depth, overall_height = (3400., 3400., 900.) - table_diameter, table_height = (2500., 780.) - table_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) + overall_width, overall_depth, overall_height = (3400.0, 3400.0, 900.0) + table_diameter, table_height = (2500.0, 780.0) + table_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) representation_3d, representation_2d = create_circular_table_with_chairs( - table_diameter, table_height, - chair_width, chair_depth, chair_height, seat_level, - table_chair_gap, number_of_seats = 16 + table_diameter, + table_height, + chair_width, + chair_depth, + chair_height, + seat_level, + table_chair_gap, + number_of_seats=16, + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Retail 16-Seater Circular Table", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Retail 16-Seater Circular Table", - representation_3d, representation_2d) # sofas - + def create_sofa(width, depth, height, seat_level, number_of_seats=1): thickness = 175 armrest_height = height * 0.7 - shift_to_center = V(-width/2, -depth) + shift_to_center = V(-width / 2, -depth) mirror_axis = V(0, 1) - seat_width = (width-thickness*2)/number_of_seats + seat_width = (width - thickness * 2) / number_of_seats # 3d representation armrest = builder.rectangle(size=V(thickness, depth)) armrest = builder.extrude(armrest, armrest_height) - armrests = [armrest, builder.translate(armrest, V(width-thickness, 0, 0), create_copy=True)] + armrests = [armrest, builder.translate(armrest, V(width - thickness, 0, 0), create_copy=True)] seats = [] for i in range(number_of_seats): seat = builder.rectangle( - size=V(seat_width, depth-thickness), - position=V(thickness + seat_width*i, 0) + size=V(seat_width, depth - thickness), position=V(thickness + seat_width * i, 0) ) seat = builder.extrude(seat, seat_level) seats.append(seat) seat_back = builder.rectangle( - size=V(width - thickness*2, thickness), - position=V(thickness, depth-thickness) + size=V(width - thickness * 2, thickness), position=V(thickness, depth - thickness) ) seat_back = builder.extrude(seat_back, height) items = armrests + seats + [seat_back] builder.translate(items, shift_to_center.to_3d()) # builder.mirror(items, mirror_axis) - representation_3d = builder.get_representation( - self.representations["body"], items=items) + representation_3d = builder.get_representation(self.representations["model_body"], items=items) # 2d representation armrest = builder.rectangle(size=V(thickness, depth)) - armrests = [armrest, builder.translate(armrest, V(width-thickness, 0), create_copy=True)] + armrests = [armrest, builder.translate(armrest, V(width - thickness, 0), create_copy=True)] seats = [] for i in range(number_of_seats): seat = builder.rectangle( - size=V(seat_width, depth-thickness), - position=V(thickness + seat_width*i, 0) + size=V(seat_width, depth - thickness), position=V(thickness + seat_width * i, 0) ) seats.append(seat) seat_back = builder.rectangle( - size=V(width - thickness*2, thickness), - position=V(thickness, depth-thickness) + size=V(width - thickness * 2, thickness), position=V(thickness, depth - thickness) ) items = armrests + seats + [seat_back] builder.translate(items, shift_to_center) - representation_2d = builder.get_representation( - self.representations["annotation"], items=items) + representation_2d = builder.get_representation(self.representations["plan_body"], items=items) return representation_3d, representation_2d - - overall_width, overall_depth, overall_height, seat_level = (900., 900., 900., 450.) + overall_width, overall_depth, overall_height, seat_level = (900.0, 900.0, 900.0, 450.0) representation_3d, representation_2d = create_sofa(overall_width, overall_depth, overall_height, seat_level) - self.create_explicit_type('IfcFurnitureType', "Generic 1-Seater Sofa", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Generic 1-Seater Sofa", representation_3d, representation_2d) - overall_width, overall_depth, overall_height, seat_level, number_of_seats = (1500., 900., 900., 450., 2) - representation_3d, representation_2d = create_sofa(overall_width, overall_depth, overall_height, seat_level, number_of_seats) - self.create_explicit_type('IfcFurnitureType', "Generic 2-Seater Sofa", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, seat_level, number_of_seats = (1500.0, 900.0, 900.0, 450.0, 2) + representation_3d, representation_2d = create_sofa( + overall_width, overall_depth, overall_height, seat_level, number_of_seats + ) + self.create_explicit_type("IfcFurnitureType", "Generic 2-Seater Sofa", representation_3d, representation_2d) - overall_width, overall_depth, overall_height, seat_level, number_of_seats = (2100., 900., 900., 450., 3) - representation_3d, representation_2d = create_sofa(overall_width, overall_depth, overall_height, seat_level, number_of_seats) - self.create_explicit_type('IfcFurnitureType', "Generic 3-Seater Sofa", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, seat_level, number_of_seats = (2100.0, 900.0, 900.0, 450.0, 3) + representation_3d, representation_2d = create_sofa( + overall_width, overall_depth, overall_height, seat_level, number_of_seats + ) + self.create_explicit_type("IfcFurnitureType", "Generic 3-Seater Sofa", representation_3d, representation_2d) # showers def create_shower_or_bathtube(width, depth, height, bathtube=False): items_box, items_rectangle = create_box_objects(width, depth, height) - rect_offset = 50. - fillets_radius = 50. - sink_radius = 25. + rect_offset = 50.0 + fillets_radius = 50.0 + sink_radius = 25.0 coords = [ (rect_offset, rect_offset), - (rect_offset, depth-rect_offset), - (width-rect_offset, depth-rect_offset), - (width-rect_offset, rect_offset) + (rect_offset, depth - rect_offset), + (width - rect_offset, depth - rect_offset), + (width - rect_offset, rect_offset), ] if bathtube: - fillets_radius = [fillets_radius*5] * 2 + [fillets_radius] * 2 + fillets_radius = [fillets_radius * 5] * 2 + [fillets_radius] * 2 else: fillets_radius = [fillets_radius] * 4 _, _, fillet_rectangle = get_simple_2dcurve_data( - coords=coords, - fillets=(0, 1, 2, 3), - fillet_radius=fillets_radius, - closed=True, - ifc_file=self.file + coords=coords, fillets=(0, 1, 2, 3), fillet_radius=fillets_radius, closed=True, ifc_file=self.file ) circle_position = V( - width-rect_offset*2-sink_radius, - (depth-rect_offset*2-sink_radius) if not bathtube else depth / 2 + width - rect_offset * 2 - sink_radius, + (depth - rect_offset * 2 - sink_radius) if not bathtube else depth / 2, ) - sink_circle = builder.circle( - circle_position, - radius=sink_radius) + sink_circle = builder.circle(circle_position, radius=sink_radius) items_2d = items_rectangle + [fillet_rectangle, sink_circle] - representation_2d = builder.get_representation( - self.representations["annotation"], items=items_2d) - representation_3d = builder.get_representation( - self.representations["body"], items=items_box) + representation_2d = builder.get_representation(self.representations["plan_body"], items=items_2d) + representation_3d = builder.get_representation(self.representations["model_body"], items=items_box) return representation_3d, representation_2d - overall_width, overall_depth, overall_height = (900., 750., 2100.) + overall_width, overall_depth, overall_height = (900.0, 750.0, 2100.0) representation_3d, representation_2d = create_shower_or_bathtube(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Shower 75x90", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Shower 75x90", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (800., 800., 2100.) + overall_width, overall_depth, overall_height = (800.0, 800.0, 2100.0) representation_3d, representation_2d = create_shower_or_bathtube(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Shower 80x80", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Shower 80x80", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (900., 900., 2100.) + overall_width, overall_depth, overall_height = (900.0, 900.0, 2100.0) representation_3d, representation_2d = create_shower_or_bathtube(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Shower 90x90", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Shower 90x90", representation_3d, representation_2d) # bathtubs - overall_width, overall_depth, overall_height = (1600., 700., 550.) - representation_3d, representation_2d = create_shower_or_bathtube(overall_width, overall_depth, overall_height, bathtube=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Small Bathtub", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (1600.0, 700.0, 550.0) + representation_3d, representation_2d = create_shower_or_bathtube( + overall_width, overall_depth, overall_height, bathtube=True + ) + self.create_explicit_type("IfcFurnitureType", "Neufert Small Bathtub", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (1700., 750., 550.) - representation_3d, representation_2d = create_shower_or_bathtube(overall_width, overall_depth, overall_height, bathtube=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Medium Bathtub", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (1700.0, 750.0, 550.0) + representation_3d, representation_2d = create_shower_or_bathtube( + overall_width, overall_depth, overall_height, bathtube=True + ) + self.create_explicit_type("IfcFurnitureType", "Neufert Medium Bathtub", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (1800., 800., 550.) - representation_3d, representation_2d = create_shower_or_bathtube(overall_width, overall_depth, overall_height, bathtube=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Large Bathtub", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (1800.0, 800.0, 550.0) + representation_3d, representation_2d = create_shower_or_bathtube( + overall_width, overall_depth, overall_height, bathtube=True + ) + self.create_explicit_type("IfcFurnitureType", "Neufert Large Bathtub", representation_3d, representation_2d) - def create_toilet(width, depth, height, seat_level = 0): - shift_to_center = V(-width/2, 0) + def create_toilet(width, depth, height, seat_level=0): + shift_to_center = V(-width / 2, 0) mirror_axis = V(0, 1) cistern_used = not bool(seat_level) @@ -1050,7 +1146,7 @@ class LibraryGenerator: seat_level = height else: cistern_height = height - seat_level - cistern_depth = 200. + cistern_depth = 200.0 # 2d representation depth_offset = depth * 0.1 @@ -1058,25 +1154,25 @@ class LibraryGenerator: items_2d = [] items_2d_to_mirror = [] coords = [ - (0., 0.), - (0., depth-depth_offset-cistern_depth), - (width_offset, depth-depth_offset-cistern_depth), - (width_offset, depth-cistern_depth), - (width-width_offset, depth-cistern_depth), - (width-width_offset, depth-depth_offset-cistern_depth), - (width, depth-depth_offset-cistern_depth), - (width, 0.) + (0.0, 0.0), + (0.0, depth - depth_offset - cistern_depth), + (width_offset, depth - depth_offset - cistern_depth), + (width_offset, depth - cistern_depth), + (width - width_offset, depth - cistern_depth), + (width - width_offset, depth - depth_offset - cistern_depth), + (width, depth - depth_offset - cistern_depth), + (width, 0.0), ] fillets = (0, 1, 6, 7) - fillet_radius = (width/2, width/5, width/5, width/2) + fillet_radius = (width / 2, width / 5, width / 5, width / 2) _, _, seat = get_simple_2dcurve_data( - coords, fillets, fillet_radius=fillet_radius, - closed=True, ifc_file=self.file) + coords, fillets, fillet_radius=fillet_radius, closed=True, ifc_file=self.file + ) seat_first_part = ifcopenshell.util.element.copy_deep(self.file, seat) - seat_depth_offset = (depth-cistern_depth)*0.3 - seat_width_offset = 0.7*width/2 if cistern_depth else width/2 - seat_start_width_offset = 0.6*width + seat_depth_offset = (depth - cistern_depth) * 0.3 + seat_width_offset = 0.7 * width / 2 if cistern_depth else width / 2 + seat_start_width_offset = 0.6 * width if cistern_height: cistern = builder.rectangle(size=V(width, cistern_depth), position=shift_to_center) @@ -1084,54 +1180,50 @@ class LibraryGenerator: items_2d_to_mirror.append(cistern) else: back_wall_polyline = builder.polyline( - ((-seat_start_width_offset/2, 0.), (seat_start_width_offset/2, 0.)) + ((-seat_start_width_offset / 2, 0.0), (seat_start_width_offset / 2, 0.0)) ) items_2d.append(back_wall_polyline) - + # seat seat_polyline = builder.polyline( - ((seat_start_width_offset/2, 0.), (seat_width_offset, seat_depth_offset)), - position_offset=V(0, cistern_depth)) + ((seat_start_width_offset / 2, 0.0), (seat_width_offset, seat_depth_offset)), + position_offset=V(0, cistern_depth), + ) seat_curve = builder.create_ellipse_curve( - seat_width_offset, depth-seat_depth_offset-cistern_depth, - trim_points_mask=(0,2)) - builder.translate(seat_curve, V(0, cistern_depth+seat_depth_offset)) + seat_width_offset, depth - seat_depth_offset - cistern_depth, trim_points_mask=(0, 2) + ) + builder.translate(seat_curve, V(0, cistern_depth + seat_depth_offset)) items_2d_to_mirror.extend([seat_polyline, seat_curve]) items_2d_to_mirror.append(builder.mirror(seat_polyline, mirror_axes=V(1, 0), create_copy=True)) # seat_second_line - second_line_height = (depth-cistern_depth)*0.7 - second_line_width = (width-cistern_depth)*0.75 - second_curve_y = cistern_depth+second_line_height/2*1.6 - seat_second_curve = builder.create_ellipse_curve(second_line_width/2, second_line_height/2) + second_line_height = (depth - cistern_depth) * 0.7 + second_line_width = (width - cistern_depth) * 0.75 + second_curve_y = cistern_depth + second_line_height / 2 * 1.6 + seat_second_curve = builder.create_ellipse_curve(second_line_width / 2, second_line_height / 2) builder.translate(seat_second_curve, V(0, second_curve_y)) items_2d_to_mirror.append(seat_second_curve) # bowl - bowl_width = width/2*0.25 - bowl_depth = (depth-cistern_depth)*0.1 + bowl_width = width / 2 * 0.25 + bowl_depth = (depth - cistern_depth) * 0.1 bowl_points = ( - (-bowl_width/2, 0.), - (-bowl_width/2, -bowl_depth/2), - (bowl_width/2, -bowl_depth/2), - (bowl_width/2, 0.), + (-bowl_width / 2, 0.0), + (-bowl_width / 2, -bowl_depth / 2), + (bowl_width / 2, -bowl_depth / 2), + (bowl_width / 2, 0.0), ) bowl_polyline = builder.polyline(bowl_points) - bowl_curve = builder.create_ellipse_curve( - bowl_width/2, bowl_depth/2, - trim_points_mask=(0,2)) + bowl_curve = builder.create_ellipse_curve(bowl_width / 2, bowl_depth / 2, trim_points_mask=(0, 2)) builder.translate([bowl_polyline, bowl_curve], V(0, second_curve_y)) items_2d_to_mirror.extend([bowl_polyline, bowl_curve]) builder.mirror(items_2d_to_mirror, mirror_axes=mirror_axis) items_2d += items_2d_to_mirror - - representation_2d = builder.get_representation( - context=self.representations['annotation'], - items=items_2d - ) + + representation_2d = builder.get_representation(context=self.representations["plan_body"], items=items_2d) # 3d representation items_3d = [] @@ -1139,48 +1231,34 @@ class LibraryGenerator: # seat seat_main_curve_points = builder.get_rectangle_coords( - size=V(width, depth-cistern_depth), - position=V(0, cistern_depth) + shift_to_center + size=V(width, depth - cistern_depth), position=V(0, cistern_depth) + shift_to_center ) - fillet_radius = min(width/2, (depth-cistern_depth)/2) + fillet_radius = min(width / 2, (depth - cistern_depth) / 2) _, _, seat_main_curve = get_simple_2dcurve_data( - seat_main_curve_points, - fillets=(1, 2), - fillet_radius=fillet_radius, - closed=True, - ifc_file=self.file + seat_main_curve_points, fillets=(1, 2), fillet_radius=fillet_radius, closed=True, ifc_file=self.file ) - seat_main_curve_mask = builder.circle( - center=V(0, depth-fillet_radius), - radius=fillet_radius*0.75) - seat_main_curve_profile = builder.profile( - seat_main_curve, - inner_curves=seat_main_curve_mask) + seat_main_curve_mask = builder.circle(center=V(0, depth - fillet_radius), radius=fillet_radius * 0.75) + seat_main_curve_profile = builder.profile(seat_main_curve, inner_curves=seat_main_curve_mask) - seat_level_offset = seat_level/2 / 4 + seat_level_offset = seat_level / 2 / 4 seat_first_part = builder.extrude( - seat_main_curve_profile, seat_level/2-seat_level_offset, - V(0, 0, seat_level/2+seat_level_offset)) + seat_main_curve_profile, seat_level / 2 - seat_level_offset, V(0, 0, seat_level / 2 + seat_level_offset) + ) seat_main_curve = ifcopenshell.util.element.copy_deep(self.file, seat_main_curve) - seat_second_part = builder.extrude( - seat_main_curve, seat_level_offset, - V(0, 0, seat_level/2)) - + seat_second_part = builder.extrude(seat_main_curve, seat_level_offset, V(0, 0, seat_level / 2)) + items_3d_to_mirror.extend([seat_first_part, seat_second_part]) - seat_leg = builder.rectangle( - size=V(width, depth/3), - position=V(0, depth/3)+shift_to_center - ) - seat_leg = builder.extrude(seat_leg, seat_level/2) + seat_leg = builder.rectangle(size=V(width, depth / 3), position=V(0, depth / 3) + shift_to_center) + seat_leg = builder.extrude(seat_leg, seat_level / 2) items_3d_to_mirror.append(seat_leg) # cistern if cistern_height: cistern_3d = builder.extrude( - cistern_3d, cistern_height+seat_level/2, - position=V(0, 0, seat_level/2)) + cistern_3d, cistern_height + seat_level / 2, position=V(0, 0, seat_level / 2) + ) items_3d_to_mirror.append(cistern_3d) builder.translate(items_3d, shift_to_center.to_3d()) @@ -1188,141 +1266,133 @@ class LibraryGenerator: builder.mirror(items_3d_to_mirror, mirror_axes=mirror_axis) items_3d += items_3d_to_mirror - representation_3d = builder.get_representation( - context=self.representations['body'], - items=items_3d - ) + representation_3d = builder.get_representation(context=self.representations["model_body"], items=items_3d) return representation_3d, representation_2d - overall_width, overall_depth, overall_height, seat_level = (550., 650., 770., 400) + overall_width, overall_depth, overall_height, seat_level = (550.0, 650.0, 770.0, 400) representation_3d, representation_2d = create_toilet(overall_width, overall_depth, overall_height, seat_level) - self.create_explicit_type('IfcFurnitureType', "Neufert Toilet with Cistern", - representation_3d, representation_2d) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Toilet with Cistern", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (400., 530., 400.) + overall_width, overall_depth, overall_height = (400.0, 530.0, 400.0) representation_3d, representation_2d = create_toilet(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Generic Toilet without Cistern", - representation_3d, representation_2d) + self.create_explicit_type( + "IfcFurnitureType", "Generic Toilet without Cistern", representation_3d, representation_2d + ) def create_urinal(width, depth, height): - shift_to_center = V(-width/2, 0) + shift_to_center = V(-width / 2, 0) mirror_axis = V(0, 1) representation_3d, representation_2d = create_box_objects(width, depth, height, return_representations=True) - back_wall_depth = depth*0.1 + back_wall_depth = depth * 0.1 back_wall_border_mask_height = height * 0.1 back_wall_border_mask_depth = depth * 0.1 back_wall_border_mask_width = width * 0.2 bottom_height = back_wall_border_mask_height / 2 - bottom_mask_depth = depth*0.1 - bottom_mask_width = width*0.2 - bottom_mask_height = height*0.2 - + bottom_mask_depth = depth * 0.1 + bottom_mask_width = width * 0.2 + bottom_mask_height = height * 0.2 + items_3d_to_center = [] # back wall back_wall = builder.rectangle(V(width, height)) # example of rotating and extruding by Y axis btw back_wall_extruded = builder.extrude( - back_wall, back_wall_depth+back_wall_border_mask_depth, + back_wall, + back_wall_depth + back_wall_border_mask_depth, position_z_axis=V(0, -1, 0), - extrusion_vector=V(0, 0, -1)) + extrusion_vector=V(0, 0, -1), + ) items_3d_to_center.append(back_wall_extruded) # bottom part base_curve = builder.create_ellipse_curve( - width/2, depth-(back_wall_depth+bottom_mask_depth), - trim_points_mask=(0,2) + width / 2, depth - (back_wall_depth + bottom_mask_depth), trim_points_mask=(0, 2) ) - builder.translate(base_curve, V(0, back_wall_depth+bottom_mask_depth)) + builder.translate(base_curve, V(0, back_wall_depth + bottom_mask_depth)) triangle_bottom_extruded = builder.extrude(base_curve, bottom_height) second_curve = builder.create_ellipse_curve( - (width-bottom_mask_width)/2, depth-(back_wall_depth+bottom_mask_depth)-bottom_mask_depth, - trim_points_mask=(0,2) + (width - bottom_mask_width) / 2, + depth - (back_wall_depth + bottom_mask_depth) - bottom_mask_depth, + trim_points_mask=(0, 2), ) - builder.translate(second_curve, V(0, back_wall_depth+bottom_mask_depth)) + builder.translate(second_curve, V(0, back_wall_depth + bottom_mask_depth)) base_curve = ifcopenshell.util.element.copy_deep(self.file, base_curve) mask_curve_profile = builder.profile(base_curve, inner_curves=second_curve) triangle_bottom_wall_mask = builder.extrude( - mask_curve_profile, bottom_mask_height, - position=V(0, 0, bottom_height)) - + mask_curve_profile, bottom_mask_height, position=V(0, 0, bottom_height) + ) builder.translate(items_3d_to_center, shift_to_center.to_3d()) items_3d = items_3d_to_center + [triangle_bottom_extruded, triangle_bottom_wall_mask] builder.mirror(items_3d, mirror_axis) - representation_3d = builder.get_representation( - self.representations['body'], - items_3d - ) + representation_3d = builder.get_representation(self.representations["model_body"], items_3d) # 2d representation curve_offset_depth = depth * 0.1 curve_offset_width = width * 0.2 items_2d = [] - trim_points = builder.get_trim_points_from_mask(width/2, 0., (0, 2)) + trim_points = builder.get_trim_points_from_mask(width / 2, 0.0, (0, 2)) - base_curve = builder.create_ellipse_curve(width/2, depth, - trim_points=((width/2, 0.), (-width/2, 0.)) + base_curve = builder.create_ellipse_curve( + width / 2, depth, trim_points=((width / 2, 0.0), (-width / 2, 0.0)) ) items_2d.append(base_curve) items_2d.append(builder.polyline(trim_points)) - items_2d.append(builder.circle(radius=back_wall_depth*0.5, center=V(0, back_wall_depth*2.5))) + items_2d.append(builder.circle(radius=back_wall_depth * 0.5, center=V(0, back_wall_depth * 2.5))) second_curve = builder.create_ellipse_curve( - (width-bottom_mask_width)/2, depth-(back_wall_depth+bottom_mask_depth)-bottom_mask_depth, - trim_points_mask=(0,2) + (width - bottom_mask_width) / 2, + depth - (back_wall_depth + bottom_mask_depth) - bottom_mask_depth, + trim_points_mask=(0, 2), ) - builder.translate(second_curve, V(0, 2*curve_offset_depth)) + builder.translate(second_curve, V(0, 2 * curve_offset_depth)) items_2d.append(second_curve) - curve_coords = builder.get_trim_points_from_mask(curve_offset_width/2, curve_offset_depth, (3, 2)) + curve_coords = builder.get_trim_points_from_mask(curve_offset_width / 2, curve_offset_depth, (3, 2)) second_curve = builder.curve_between_two_points(curve_coords) - builder.translate(second_curve, V(-width/2+curve_offset_width, 2*curve_offset_depth)) + builder.translate(second_curve, V(-width / 2 + curve_offset_width, 2 * curve_offset_depth)) polyline = builder.polyline( - ((-width/2+curve_offset_width, 0.), (width/2-curve_offset_width, 0.)), - position_offset=V(0, curve_offset_depth) + ((-width / 2 + curve_offset_width, 0.0), (width / 2 - curve_offset_width, 0.0)), + position_offset=V(0, curve_offset_depth), ) items_2d.extend([second_curve, polyline]) - items_2d.append(builder.mirror(second_curve, V(1,0), create_copy=True)) + items_2d.append(builder.mirror(second_curve, V(1, 0), create_copy=True)) builder.mirror(items_2d, mirror_axis) - representation_2d = builder.get_representation( - self.representations['annotation'], - items_2d - ) + representation_2d = builder.get_representation(self.representations["plan_body"], items_2d) return representation_3d, representation_2d - overall_width, overall_depth, overall_height = (350., 350., 650.) + overall_width, overall_depth, overall_height = (350.0, 350.0, 650.0) representation_3d, representation_2d = create_urinal(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Small Urinal", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Small Urinal", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (400., 400., 650.) + overall_width, overall_depth, overall_height = (400.0, 400.0, 650.0) representation_3d, representation_2d = create_urinal(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Medium Urinal", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Medium Urinal", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (450., 450., 650.) + overall_width, overall_depth, overall_height = (450.0, 450.0, 650.0) representation_3d, representation_2d = create_urinal(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Large Urinal", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Large Urinal", representation_3d, representation_2d) def create_basin(width, depth, height): second_width = 0.9 * width second_depth = 0.7 * depth - faucet_depth = depth - (depth - second_depth)/2/2 - faucet_length = 120. - shift_to_center = V(-width/2, -depth) + faucet_depth = depth - (depth - second_depth) / 2 / 2 + faucet_length = 120.0 + shift_to_center = V(-width / 2, -depth) # representation 2d rectangle_main = create_fillet_rectangle(size=V(width, depth)) @@ -1330,76 +1400,75 @@ class LibraryGenerator: rectangle_second = create_fillet_rectangle( size=V(second_width, second_depth), - position=V((width-second_width)/2, (depth-second_depth)*0.3), - fillet_radius=(50., 150., 150., 50.) + position=V((width - second_width) / 2, (depth - second_depth) * 0.3), + fillet_radius=(50.0, 150.0, 150.0, 50.0), ) rectangle_second_3d = ifcopenshell.util.element.copy_deep(self.file, rectangle_second) - faucet = builder.polyline( ( - (width/2, faucet_depth), - (width/2, faucet_depth-faucet_length)) ) + faucet = builder.polyline(((width / 2, faucet_depth), (width / 2, faucet_depth - faucet_length))) items_2d = [rectangle_main, rectangle_second, faucet] builder.translate(items_2d, shift_to_center) - representation_2d = builder.get_representation(self.representations['annotation'], items_2d) + representation_2d = builder.get_representation(self.representations["plan_body"], items_2d) # representation 3d - basin_downside_thickness = 100. + basin_downside_thickness = 100.0 rectangle_profile = builder.profile(rectangle_main_3d, inner_curves=rectangle_second_3d) - main_basin = builder.extrude(rectangle_profile, height-basin_downside_thickness, position=V(0, 0, basin_downside_thickness)) + main_basin = builder.extrude( + rectangle_profile, height - basin_downside_thickness, position=V(0, 0, basin_downside_thickness) + ) basin_downside = builder.extrude(rectangle_second_3d, basin_downside_thickness) items_3d = [main_basin, basin_downside] builder.translate(items_3d, shift_to_center.to_3d()) - representation_3d = builder.get_representation(self.representations['body'], items_3d) + representation_3d = builder.get_representation(self.representations["model_body"], items_3d) return representation_3d, representation_2d - overall_width, overall_depth, overall_height = (450., 400., 250.) + overall_width, overall_depth, overall_height = (450.0, 400.0, 250.0) representation_3d, representation_2d = create_basin(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Extra Small Basin", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Extra Small Basin", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (500., 450., 250.) + overall_width, overall_depth, overall_height = (500.0, 450.0, 250.0) representation_3d, representation_2d = create_basin(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Small Basin", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Small Basin", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (550., 500., 250.) + overall_width, overall_depth, overall_height = (550.0, 500.0, 250.0) representation_3d, representation_2d = create_basin(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Medium Basin", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Medium Basin", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (600., 550., 250.) + overall_width, overall_depth, overall_height = (600.0, 550.0, 250.0) representation_3d, representation_2d = create_basin(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Large Basin", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Large Basin", representation_3d, representation_2d) def create_desk(width, depth, height, return_representations=False): - leg_width = 50. - countertop_height = 50. - backside_offset = 50. - back_side_height = 0.6*height + leg_width = 50.0 + countertop_height = 50.0 + backside_offset = 50.0 + back_side_height = 0.6 * height output = [] # 3d representation items_3d = [] leg = builder.rectangle(size=V(leg_width, depth)) - leg = builder.extrude(leg, height-countertop_height) + leg = builder.extrude(leg, height - countertop_height) items_3d.append(leg) - items_3d.append(builder.translate(leg, V(width-leg_width, 0, 0), create_copy=True)) + items_3d.append(builder.translate(leg, V(width - leg_width, 0, 0), create_copy=True)) countertop = builder.rectangle(size=V(width, depth)) - countertop = builder.extrude(countertop, countertop_height, V(0, 0, height-countertop_height)) + countertop = builder.extrude(countertop, countertop_height, V(0, 0, height - countertop_height)) items_3d.append(countertop) backside = builder.rectangle( - size=V(width-leg_width*2, backside_offset), - position=V(backside_offset, height-backside_offset*4)) - backside = builder.extrude(backside, back_side_height, position=V(0, 0, height-back_side_height-backside_offset)) + size=V(width - leg_width * 2, backside_offset), + position=V(backside_offset, height - backside_offset * 4), + ) + backside = builder.extrude( + backside, back_side_height, position=V(0, 0, height - back_side_height - backside_offset) + ) items_3d.append(backside) if return_representations: - representation_3d = builder.get_representation(self.representations['body'], items_3d) + representation_3d = builder.get_representation(self.representations["model_body"], items_3d) output.append(representation_3d) else: output.append(items_3d) @@ -1407,251 +1476,267 @@ class LibraryGenerator: # 2d representation rectangle = builder.rectangle(V(width, depth)) if return_representations: - representation_2d = builder.get_representation(self.representations['annotation'], rectangle) + representation_2d = builder.get_representation(self.representations["plan_body"], rectangle) output.append(representation_2d) else: output.append([rectangle]) return output - overall_width, overall_depth, overall_height = (1560., 780., 780.) - representation_3d, representation_2d = create_desk(overall_width, overall_depth, overall_height, return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Commercial Writing Desk", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (1560.0, 780.0, 780.0) + representation_3d, representation_2d = create_desk( + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Commercial Writing Desk", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (1400., 700., 760.) - representation_3d, representation_2d = create_desk(overall_width, overall_depth, overall_height, return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Commercial Office Desk", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (1400.0, 700.0, 760.0) + representation_3d, representation_2d = create_desk( + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Commercial Office Desk", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (1000., 600., 730.) - representation_3d, representation_2d = create_desk(overall_width, overall_depth, overall_height, return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Small Desk", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (1000.0, 600.0, 730.0) + representation_3d, representation_2d = create_desk( + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type("IfcFurnitureType", "Generic Small Desk", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (1200., 700., 750.) - representation_3d, representation_2d = create_desk(overall_width, overall_depth, overall_height, return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Medium Desk", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (1200.0, 700.0, 750.0) + representation_3d, representation_2d = create_desk( + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type("IfcFurnitureType", "Generic Medium Desk", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (1500., 800., 750.) - representation_3d, representation_2d = create_desk(overall_width, overall_depth, overall_height, return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Large Desk", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (1500.0, 800.0, 750.0) + representation_3d, representation_2d = create_desk( + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type("IfcFurnitureType", "Generic Large Desk", representation_3d, representation_2d) - def create_desk_with_chair(desk_width, desk_depth, desk_height, - chair_width, chair_depth, chair_height, seat_level, - desk_chair_gap): + def create_desk_with_chair( + desk_width, desk_depth, desk_height, chair_width, chair_depth, chair_height, seat_level, desk_chair_gap + ): desk_items_3d, desk_items_2d = create_desk(desk_width, desk_depth, desk_height) chair_items_3d, chair_items_2d = create_fancy_chair(chair_width, chair_depth, chair_height, seat_level) # 2d representation - builder.translate(desk_items_2d, V(0, chair_depth+desk_chair_gap)) - builder.translate(chair_items_2d, V(desk_width/2, 0)) + builder.translate(desk_items_2d, V(0, chair_depth + desk_chair_gap)) + builder.translate(chair_items_2d, V(desk_width / 2, 0)) builder.mirror(chair_items_2d, mirror_axes=V(0, 1)) items_2d = desk_items_2d + chair_items_2d # 3d representation - builder.translate(desk_items_3d, V(0, chair_depth+desk_chair_gap, 0)) - builder.translate(chair_items_3d, V(desk_width/2, 0, 0)) + builder.translate(desk_items_3d, V(0, chair_depth + desk_chair_gap, 0)) + builder.translate(chair_items_3d, V(desk_width / 2, 0, 0)) builder.mirror(chair_items_3d, mirror_axes=V(0, 1)) items_3d = desk_items_3d + chair_items_3d - representation_3d = builder.get_representation(self.representations['body'], items_3d) - representation_2d = builder.get_representation(self.representations['annotation'], items_2d) + representation_3d = builder.get_representation(self.representations["model_body"], items_3d) + representation_2d = builder.get_representation(self.representations["plan_body"], items_2d) return representation_3d, representation_2d - overall_width, overall_depth, overall_height = (1560., 1630., 900.,) - desk_width, desk_depth, desk_height = (1560., 780., 780.,) - desk_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) - representation_3d, representation_2d = create_desk_with_chair( - desk_width, desk_depth, desk_height, - chair_width, chair_depth, chair_height, seat_level, - desk_chair_gap + overall_width, overall_depth, overall_height = ( + 1560.0, + 1630.0, + 900.0, + ) + desk_width, desk_depth, desk_height = ( + 1560.0, + 780.0, + 780.0, + ) + desk_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) + representation_3d, representation_2d = create_desk_with_chair( + desk_width, desk_depth, desk_height, chair_width, chair_depth, chair_height, seat_level, desk_chair_gap + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Commercial Writing Desk and Chair", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Commercial Writing Desk and Chair", - representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (1400., 1450., 900.) - desk_width, desk_depth, desk_height = (1400., 700., 760.,) - desk_chair_gap = 50. - chair_width, chair_depth, chair_height, seat_level = (400., 400., 900., 450.) - representation_3d, representation_2d = create_desk_with_chair( - desk_width, desk_depth, desk_height, - chair_width, chair_depth, chair_height, seat_level, - desk_chair_gap + overall_width, overall_depth, overall_height = (1400.0, 1450.0, 900.0) + desk_width, desk_depth, desk_height = ( + 1400.0, + 700.0, + 760.0, + ) + desk_chair_gap = 50.0 + chair_width, chair_depth, chair_height, seat_level = (400.0, 400.0, 900.0, 450.0) + representation_3d, representation_2d = create_desk_with_chair( + desk_width, desk_depth, desk_height, chair_width, chair_depth, chair_height, seat_level, desk_chair_gap + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Commercial Office Desk and Chair", representation_3d, representation_2d ) - self.create_explicit_type('IfcFurnitureType', "Neufert Commercial Office Desk and Chair", - representation_3d, representation_2d) def create_dishwasher(width, depth, height): items_3d, items_2d = create_box_objects(width, depth, height) - circle_first_r = width*0.1 - circle_second_r = width*0.3 - center = V(width/2, depth/2) + circle_first_r = width * 0.1 + circle_second_r = width * 0.3 + center = V(width / 2, depth / 2) k = center.y / center.x circle_first = builder.circle(center=center, radius=circle_second_r) circle_second = builder.circle(center=center, radius=circle_first_r) - polyline = builder.polyline( - [(0., 0.), - center-center.normalized()*circle_second_r] - ) + polyline = builder.polyline([(0.0, 0.0), center - center.normalized() * circle_second_r]) mirrored_polylines = builder.mirror( - polyline, - mirror_axes=[V(1, 0), V(0, 1), V(1, 1)], - mirror_point=center, - create_copy=True) + polyline, mirror_axes=[V(1, 0), V(0, 1), V(1, 1)], mirror_point=center, create_copy=True + ) items_2d.extend([circle_first, circle_second, polyline] + mirrored_polylines) - representation_3d = builder.get_representation(self.representations['body'], items_3d) - representation_2d = builder.get_representation(self.representations['annotation'], items_2d) - + representation_3d = builder.get_representation(self.representations["model_body"], items_3d) + representation_2d = builder.get_representation(self.representations["plan_body"], items_2d) + return representation_3d, representation_2d - overall_width, overall_depth, overall_height = (500., 570., 820.) + overall_width, overall_depth, overall_height = (500.0, 570.0, 820.0) representation_3d, representation_2d = create_dishwasher(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Dishwasher", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Dishwasher", representation_3d, representation_2d) def create_cooktop(width, depth, height): items_3d, items_2d = create_box_objects(width, depth, height) - ring_radius = width*0.1 - ring_offset = V(width*0.2, depth*0.2) - center = V(width/2, depth/2) + ring_radius = width * 0.1 + ring_offset = V(width * 0.2, depth * 0.2) + center = V(width / 2, depth / 2) ring = builder.circle(ring_offset, ring_radius) mirrored_rings = builder.mirror( - ring, - mirror_axes=[V(1, 0), V(0, 1), V(1, 1)], - mirror_point=center, - create_copy=True) + ring, mirror_axes=[V(1, 0), V(0, 1), V(1, 1)], mirror_point=center, create_copy=True + ) items_2d.extend([ring] + mirrored_rings) - representation_3d = builder.get_representation(self.representations['body'], items_3d) - representation_2d = builder.get_representation(self.representations['annotation'], items_2d) - + representation_3d = builder.get_representation(self.representations["model_body"], items_3d) + representation_2d = builder.get_representation(self.representations["plan_body"], items_2d) + return representation_3d, representation_2d - overall_width, overall_depth, overall_height = (580., 510., 50.) + overall_width, overall_depth, overall_height = (580.0, 510.0, 50.0) representation_3d, representation_2d = create_cooktop(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Cooktop 58x51", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Cooktop 58x51", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (750., 510., 50.) + overall_width, overall_depth, overall_height = (750.0, 510.0, 50.0) representation_3d, representation_2d = create_cooktop(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Cooktop 75x51", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Cooktop 75x51", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (890., 510., 50.) + overall_width, overall_depth, overall_height = (890.0, 510.0, 50.0) representation_3d, representation_2d = create_cooktop(overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Cooktop 89x51", - representation_3d, representation_2d) + self.create_explicit_type("IfcFurnitureType", "Neufert Cooktop 89x51", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (1750., 600., 850.) + overall_width, overall_depth, overall_height = (1750.0, 600.0, 850.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Small Kitchen Bench", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Small Kitchen Bench", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (1950., 600., 850.) + overall_width, overall_depth, overall_height = (1950.0, 600.0, 850.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Medium Kitchen Bench", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Medium Kitchen Bench", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (2200., 600., 850.) + overall_width, overall_depth, overall_height = (2200.0, 600.0, 850.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Large Kitchen Bench", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Large Kitchen Bench", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (450., 400., 2030.) + overall_width, overall_depth, overall_height = (450.0, 400.0, 2030.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Small Full Height Cupboard", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Small Full Height Cupboard", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (550., 500., 2030.) + overall_width, overall_depth, overall_height = (550.0, 500.0, 2030.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Medium Full Height Cupboard", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Medium Full Height Cupboard", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (600., 600., 2030.) + overall_width, overall_depth, overall_height = (600.0, 600.0, 2030.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Neufert Large Full Height Cupboard", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Neufert Large Full Height Cupboard", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (600., 700., 900.) + overall_width, overall_depth, overall_height = (600.0, 700.0, 900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Kitchen Floor Module", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic Kitchen Floor Module", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (600., 600., 2400.) + overall_width, overall_depth, overall_height = (600.0, 600.0, 2400.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Full Height Cupboard", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic Full Height Cupboard", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (750., 650., 1900.) + overall_width, overall_depth, overall_height = (750.0, 650.0, 1900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Small Fridge Zone", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type("IfcFurnitureType", "Generic Small Fridge Zone", representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (900., 700., 1900.) + overall_width, overall_depth, overall_height = (900.0, 700.0, 1900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Medium Fridge Zone", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic Medium Fridge Zone", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (1000., 750., 1900.) + overall_width, overall_depth, overall_height = (1000.0, 750.0, 1900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Large Fridge Zone", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type("IfcFurnitureType", "Generic Large Fridge Zone", representation_3d, representation_2d) def create_sink(width, depth, height, add_table): - shift_to_center = V(-width/2, -depth) - rect_offset = 50. - sink_offset = V(width/2, 0) if add_table else V(0, 0) + shift_to_center = V(-width / 2, -depth) + rect_offset = 50.0 + sink_offset = V(width / 2, 0) if add_table else V(0, 0) # 2d representation main_rectangle = builder.rectangle(size=V(width, depth)) - sink_radius = 25. - - faucet_depth = depth - rect_offset/4 - faucet_length = 120. + sink_radius = 25.0 + + faucet_depth = depth - rect_offset / 4 + faucet_length = 120.0 fillet_rectangle = create_fillet_rectangle( - size=V(width-rect_offset, depth-rect_offset)-sink_offset, - position=V(rect_offset/2, rect_offset/2)+sink_offset + size=V(width - rect_offset, depth - rect_offset) - sink_offset, + position=V(rect_offset / 2, rect_offset / 2) + sink_offset, ) - circle_position = sink_offset + V((width-sink_offset.x)/2, depth-rect_offset*2-sink_radius) - sink_circle = builder.circle( - circle_position, - radius=sink_radius) + circle_position = sink_offset + V((width - sink_offset.x) / 2, depth - rect_offset * 2 - sink_radius) + sink_circle = builder.circle(circle_position, radius=sink_radius) - faucet = builder.polyline( ( - ((width-sink_offset.x)/2, faucet_depth), - ((width-sink_offset.x)/2, faucet_depth-faucet_length)) ) + faucet = builder.polyline( + ( + ((width - sink_offset.x) / 2, faucet_depth), + ((width - sink_offset.x) / 2, faucet_depth - faucet_length), + ) + ) builder.translate(faucet, sink_offset) items_2d = [main_rectangle, fillet_rectangle, sink_circle, faucet] @@ -1660,137 +1745,138 @@ class LibraryGenerator: # 3d representation items_3d = [] - sink_height = 0.8*height + sink_height = 0.8 * height if add_table: - table = builder.rectangle(size=V(width, depth)-sink_offset) + table = builder.rectangle(size=V(width, depth) - sink_offset) table = builder.extrude(table, height) items_3d.append(table) - - sink_table = builder.rectangle(size=V(width, depth)-sink_offset, position=sink_offset) + + sink_table = builder.rectangle(size=V(width, depth) - sink_offset, position=sink_offset) sink_mask = create_fillet_rectangle( - size=V(width-rect_offset, depth-rect_offset)-sink_offset, - position=V(rect_offset/2, rect_offset/2)+sink_offset + size=V(width - rect_offset, depth - rect_offset) - sink_offset, + position=V(rect_offset / 2, rect_offset / 2) + sink_offset, ) sink_profile = builder.profile(sink_table, inner_curves=sink_mask) - sink_table_extruded = builder.extrude(sink_profile, sink_height, position=V(0, 0, height-sink_height)) + sink_table_extruded = builder.extrude(sink_profile, sink_height, position=V(0, 0, height - sink_height)) items_3d.append(sink_table_extruded) - sink_table_bottom = builder.extrude(sink_table, height-sink_height) + sink_table_bottom = builder.extrude(sink_table, height - sink_height) items_3d.append(sink_table_bottom) builder.translate(items_3d, shift_to_center.to_3d()) - representation_2d = builder.get_representation( - self.representations["annotation"], items=items_2d) - representation_3d = builder.get_representation( - self.representations["body"], items=items_3d) - + representation_2d = builder.get_representation(self.representations["plan_body"], items=items_2d) + representation_3d = builder.get_representation(self.representations["model_body"], items=items_3d) return representation_3d, representation_2d sinks_data = { - "Neufert Sink 86x44": (860, 440, 180, False), - "Neufert Sink 110x44": (1110, 440, 180, True), - "Neufert Sink 124x44": (1240, 440, 180, True), - "Generic Small Sink": (450, 460, 210, False), - "Generic Medium Sink": (800, 460, 210, True), + "Neufert Sink 86x44": (860, 440, 180, False), + "Neufert Sink 110x44": (1110, 440, 180, True), + "Neufert Sink 124x44": (1240, 440, 180, True), + "Generic Small Sink": (450, 460, 210, False), + "Generic Medium Sink": (800, 460, 210, True), "Generic Large Sink": (1100, 490, 220, True), } for sink_name in sinks_data: parameters = [float(i) for i in sinks_data[sink_name][:3]] add_table = sinks_data[sink_name][3] - + overall_width, overall_depth, overall_height = parameters - representation_3d, representation_2d = create_sink( - overall_width, overall_depth, overall_height, - add_table) - self.create_explicit_type('IfcFurnitureType', sink_name, - representation_3d, representation_2d) + representation_3d, representation_2d = create_sink(overall_width, overall_depth, overall_height, add_table) + self.create_explicit_type("IfcFurnitureType", sink_name, representation_3d, representation_2d) - overall_width, overall_depth, overall_height = (2200., 600., 900.) + overall_width, overall_depth, overall_height = (2200.0, 600.0, 900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic 1-Bedroom Island Bench", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic 1-Bedroom Island Bench", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (2400., 700., 900.) + overall_width, overall_depth, overall_height = (2400.0, 700.0, 900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic 2-Bedroom Island Bench", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic 2-Bedroom Island Bench", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (3000., 700., 900.) + overall_width, overall_depth, overall_height = (3000.0, 700.0, 900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic 3-Bedroom Island Bench", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic 3-Bedroom Island Bench", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (400., 500., 900.) + overall_width, overall_depth, overall_height = (400.0, 500.0, 900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Small Laundry Tub With Cupboard", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic Small Laundry Tub With Cupboard", representation_3d, representation_2d + ) - overall_width, overall_depth, overall_height = (600., 500., 900.) + overall_width, overall_depth, overall_height = (600.0, 500.0, 900.0) representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcFurnitureType', "Generic Medium Laundry Tub With Cupboard", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type( + "IfcFurnitureType", "Generic Medium Laundry Tub With Cupboard", representation_3d, representation_2d + ) def create_washing_machine(width, depth, height): items_3d, items_2d = create_box_objects(width, depth, height) - circle_first_r = width*0.1 - circle_second_r = width*0.3 - center = V(width/2, depth/2) + circle_first_r = width * 0.1 + circle_second_r = width * 0.3 + center = V(width / 2, depth / 2) circle_first = builder.circle(center=center, radius=circle_second_r) circle_second = builder.circle(center=center, radius=circle_first_r) items_2d.extend([circle_first, circle_second]) - representation_3d = builder.get_representation(self.representations['body'], items_3d) - representation_2d = builder.get_representation(self.representations['annotation'], items_2d) - + representation_3d = builder.get_representation(self.representations["model_body"], items_3d) + representation_2d = builder.get_representation(self.representations["plan_body"], items_2d) + return representation_3d, representation_2d - overall_width, overall_depth, overall_height = (595., 680., 850.) - representation_3d, representation_2d = create_washing_machine( - overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Washing Machine", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (595.0, 680.0, 850.0) + representation_3d, representation_2d = create_washing_machine(overall_width, overall_depth, overall_height) + self.create_explicit_type("IfcFurnitureType", "Neufert Washing Machine", representation_3d, representation_2d) def create_dryer_machine(width, depth, height): items_3d, items_2d = create_box_objects(width, depth, height) - circle_first_r = width*0.1 - circle_second_r = width*0.25 - center_second_circle = V(width/2, height-circle_second_r*2.5) + circle_first_r = width * 0.1 + circle_second_r = width * 0.25 + center_second_circle = V(width / 2, height - circle_second_r * 2.5) - circle_first = builder.circle(center=V(width/2, circle_first_r*1.5), radius=circle_first_r) + circle_first = builder.circle(center=V(width / 2, circle_first_r * 1.5), radius=circle_first_r) circle_second = builder.circle(center=center_second_circle, radius=circle_second_r) - polyline = builder.polyline([ - V( -circle_second_r*0.6, -(circle_second_r**2 - (circle_second_r*0.6)**2)**0.5) + center_second_circle, - V( -circle_second_r*0.1, (circle_second_r**2 - (circle_second_r*0.1)**2)**0.5) + center_second_circle - ]) - mirrored_polyline = builder.mirror(polyline, mirror_point=center_second_circle, mirror_axes=V(1, 0), create_copy=True) + polyline = builder.polyline( + [ + V(-circle_second_r * 0.6, -((circle_second_r**2 - (circle_second_r * 0.6) ** 2) ** 0.5)) + + center_second_circle, + V(-circle_second_r * 0.1, (circle_second_r**2 - (circle_second_r * 0.1) ** 2) ** 0.5) + + center_second_circle, + ] + ) + mirrored_polyline = builder.mirror( + polyline, mirror_point=center_second_circle, mirror_axes=V(1, 0), create_copy=True + ) items_2d.extend([circle_first, circle_second, polyline, mirrored_polyline]) - representation_3d = builder.get_representation(self.representations['body'], items_3d) - representation_2d = builder.get_representation(self.representations['annotation'], items_2d) - + representation_3d = builder.get_representation(self.representations["model_body"], items_3d) + representation_2d = builder.get_representation(self.representations["plan_body"], items_2d) + return representation_3d, representation_2d - overall_width, overall_depth, overall_height = (595., 680., 850.) - representation_3d, representation_2d = create_dryer_machine( - overall_width, overall_depth, overall_height) - self.create_explicit_type('IfcFurnitureType', "Neufert Drier", - representation_3d, representation_2d) + overall_width, overall_depth, overall_height = (595.0, 680.0, 850.0) + representation_3d, representation_2d = create_dryer_machine(overall_width, overall_depth, overall_height) + self.create_explicit_type("IfcFurnitureType", "Neufert Drier", representation_3d, representation_2d) parking_lots_data = { "30 Deg Bay Class 1/1A No Overhang": (2100, 5400, 2000), @@ -1859,25 +1945,28 @@ class LibraryGenerator: "3600 Aisle Parallel Unobstructed End Bay": (2100, 5400, 2000), "3000 Aisle Parallel Unobstructed End Bay": (2100, 5000, 2000), "3300 Aisle Parallel Unobstructed End Bay": (2100, 5000, 2000), - "3600 Aisle Parallel Unobstructed End Bay": (2100, 5000, 2000) + "3600 Aisle Parallel Unobstructed End Bay": (2100, 5000, 2000), } for parking_lot_name in parking_lots_data: parameters = [float(i) for i in parking_lots_data[parking_lot_name]] - + overall_width, overall_depth, overall_height = parameters representation_3d, representation_2d = create_box_objects( - overall_width, overall_depth, overall_height, - return_representations=True) - self.create_explicit_type('IfcSpaceType', parking_lot_name, - representation_3d, representation_2d) + overall_width, overall_depth, overall_height, return_representations=True + ) + self.create_explicit_type("IfcSpaceType", parking_lot_name, representation_3d, representation_2d) self.file.write(output_filename) def create_explicit_type(self, ifc_class, name, representation_3d, representation_2d): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=ifc_class, name=name) - ifcopenshell.api.run("geometry.assign_representation", self.file, product=element, representation=representation_3d) - ifcopenshell.api.run("geometry.assign_representation", self.file, product=element, representation=representation_2d) + ifcopenshell.api.run( + "geometry.assign_representation", self.file, product=element, representation=representation_3d + ) + ifcopenshell.api.run( + "geometry.assign_representation", self.file, product=element, representation=representation_2d + ) ifcopenshell.api.run("project.assign_declaration", self.file, definition=element, relating_context=self.library) return element @@ -1899,7 +1988,9 @@ class LibraryGenerator: element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=ifc_class, name=name) rel = ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialLayerSet") layer_set = rel.RelatingMaterial - layer = ifcopenshell.api.run("material.add_layer", self.file, layer_set=layer_set, material=self.materials["TBD"]["ifc"]) + layer = ifcopenshell.api.run( + "material.add_layer", self.file, layer_set=layer_set, material=self.materials["TBD"]["ifc"] + ) layer.LayerThickness = thickness ifcopenshell.api.run("project.assign_declaration", self.file, definition=element, relating_context=self.library) return element @@ -1909,7 +2000,10 @@ class LibraryGenerator: rel = ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialProfileSet") profile_set = rel.RelatingMaterial material_profile = ifcopenshell.api.run( - "material.add_profile", self.file, profile_set=profile_set, material=self.material + "material.add_profile", + self.file, + profile_set=profile_set, + material=self.material # material=self.materials["TBD"]["ifc"] ) ifcopenshell.api.run("material.assign_profile", self.file, material_profile=material_profile, profile=profile) diff --git a/src/blenderbim/test/bim/feature/geometry.feature b/src/blenderbim/test/bim/feature/geometry.feature index d77f552f50..40bc91439f 100644 --- a/src/blenderbim/test/bim/feature/geometry.feature +++ b/src/blenderbim/test/bim/feature/geometry.feature @@ -19,10 +19,10 @@ Scenario: Add representation And I press "bim.assign_class" And the object "IfcWall/Cube" is selected Then the object "IfcWall/Cube" data is a "Tessellation" representation of "Model/Body/MODEL_VIEW" - When the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.TargetView == 'PLAN_VIEW'][0].id()" + When the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextType == 'Plan' and c.ContextIdentifier == 'Body' and c.TargetView == 'PLAN_VIEW'][0].id()" And I set "scene.BIMRootProperties.contexts" to "{context}" And I press "bim.add_representation" - Then the object "IfcWall/Cube" data is a "Annotation2D" representation of "Plan/Annotation/PLAN_VIEW" + Then the object "IfcWall/Cube" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW" Scenario: Add representation - add a new representation to a typed instance Given an empty IFC project @@ -36,11 +36,11 @@ Scenario: Add representation - add a new representation to a typed instance Then the object "IfcWall/Wall" data is a "Tessellation" representation of "Model/Body/MODEL_VIEW" And the object "IfcWall/Wall.001" data is a "Tessellation" representation of "Model/Body/MODEL_VIEW" When the object "IfcWall/Wall" is selected - And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.TargetView == 'PLAN_VIEW'][0].id()" + And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextType == 'Plan' and c.ContextIdentifier == 'Body' and c.TargetView == 'PLAN_VIEW'][0].id()" And I set "scene.BIMRootProperties.contexts" to "{context}" And I press "bim.add_representation" - Then the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Annotation/PLAN_VIEW" - And the object "IfcWall/Wall.001" data is a "Annotation2D" representation of "Plan/Annotation/PLAN_VIEW" + Then the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW" + And the object "IfcWall/Wall.001" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW" Scenario: Add representation - add a representation with a scale factor applied Given an empty IFC project @@ -79,7 +79,7 @@ Scenario: Switch representation - current edited representation is updated prior And the object "Cube" is selected And I set "scene.BIMRootProperties.ifc_class" to "IfcWall" And I press "bim.assign_class" - And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextIdentifier=='Annotation'][0].id()" + And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextType == 'Plan' and c.ContextIdentifier=='Annotation'][0].id()" And I set "scene.BIMRootProperties.contexts" to "{context}" And I press "bim.add_representation" When the object "IfcWall/Cube" is scaled to "2" diff --git a/src/blenderbim/test/bim/feature/model.feature b/src/blenderbim/test/bim/feature/model.feature index e1a636a0c1..9b4930a543 100644 --- a/src/blenderbim/test/bim/feature/model.feature +++ b/src/blenderbim/test/bim/feature/model.feature @@ -40,13 +40,13 @@ Scenario: Add type instance - add a mesh where existing instances have changed c And I press "bim.add_constr_type_instance" And the object "IfcWall/Wall" data is a "Tessellation" representation of "Model/Body/MODEL_VIEW" And the object "IfcWall/Wall" is selected - And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.TargetView == 'PLAN_VIEW'][0].id()" + And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextType == 'Plan' and c.ContextIdentifier == 'Body' and c.TargetView == 'PLAN_VIEW'][0].id()" And I set "scene.BIMRootProperties.contexts" to "{context}" And I press "bim.add_representation" - And the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Annotation/PLAN_VIEW" + And the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW" When I press "bim.add_constr_type_instance" - Then the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Annotation/PLAN_VIEW" - And the object "IfcWall/Wall.001" data is a "Annotation2D" representation of "Plan/Annotation/PLAN_VIEW" + Then the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW" + And the object "IfcWall/Wall.001" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW" Scenario: Add one type from the Construction Type Browser Given an empty IFC project diff --git a/src/blenderbim/test/core/test_project.py b/src/blenderbim/test/core/test_project.py index 3d899ccb83..fe3abc0cee 100644 --- a/src/blenderbim/test/core/test_project.py +++ b/src/blenderbim/test/core/test_project.py @@ -50,21 +50,24 @@ class TestCreateProject: project.run_context_add_context( context_type="Model", context_identifier="Box", target_view="MODEL_VIEW", parent="model" ).should_be_called() + project.run_context_add_context( + context_type="Model", context_identifier="Annotation", target_view="SECTION_VIEW", parent="model" + ).should_be_called() + project.run_context_add_context( + context_type="Model", context_identifier="Annotation", target_view="ELEVATION_VIEW", parent="model" + ).should_be_called() project.run_context_add_context( context_type="Plan", context_identifier="", target_view="", parent=0 ).should_be_called().will_return("plan") project.run_context_add_context( context_type="Plan", context_identifier="Axis", target_view="GRAPH_VIEW", parent="plan" ).should_be_called() + project.run_context_add_context( + context_type="Plan", context_identifier="Body", target_view="PLAN_VIEW", parent="plan" + ).should_be_called() project.run_context_add_context( context_type="Plan", context_identifier="Annotation", target_view="PLAN_VIEW", parent="plan" ).should_be_called() - project.run_context_add_context( - context_type="Plan", context_identifier="Annotation", target_view="SECTION_VIEW", parent="plan" - ).should_be_called() - project.run_context_add_context( - context_type="Plan", context_identifier="Annotation", target_view="ELEVATION_VIEW", parent="plan" - ).should_be_called() project.run_root_assign_class(obj="site", ifc_class="IfcSite", context="body").should_be_called() project.run_root_assign_class(obj="building", ifc_class="IfcBuilding", context="body").should_be_called() @@ -107,21 +110,24 @@ class TestCreateProject: project.run_context_add_context( context_type="Model", context_identifier="Box", target_view="MODEL_VIEW", parent="model" ).should_be_called() + project.run_context_add_context( + context_type="Model", context_identifier="Annotation", target_view="SECTION_VIEW", parent="model" + ).should_be_called() + project.run_context_add_context( + context_type="Model", context_identifier="Annotation", target_view="ELEVATION_VIEW", parent="model" + ).should_be_called() project.run_context_add_context( context_type="Plan", context_identifier="", target_view="", parent=0 ).should_be_called().will_return("plan") project.run_context_add_context( context_type="Plan", context_identifier="Axis", target_view="GRAPH_VIEW", parent="plan" ).should_be_called() + project.run_context_add_context( + context_type="Plan", context_identifier="Body", target_view="PLAN_VIEW", parent="plan" + ).should_be_called() project.run_context_add_context( context_type="Plan", context_identifier="Annotation", target_view="PLAN_VIEW", parent="plan" ).should_be_called() - project.run_context_add_context( - context_type="Plan", context_identifier="Annotation", target_view="SECTION_VIEW", parent="plan" - ).should_be_called() - project.run_context_add_context( - context_type="Plan", context_identifier="Annotation", target_view="ELEVATION_VIEW", parent="plan" - ).should_be_called() project.run_root_assign_class(obj="site", ifc_class="IfcSite", context="body").should_be_called() project.run_root_assign_class(obj="building", ifc_class="IfcBuilding", context="body").should_be_called() @@ -173,21 +179,24 @@ class TestCreateProject: project.run_context_add_context( context_type="Model", context_identifier="Box", target_view="MODEL_VIEW", parent="model" ).should_be_called() + project.run_context_add_context( + context_type="Model", context_identifier="Annotation", target_view="SECTION_VIEW", parent="model" + ).should_be_called() + project.run_context_add_context( + context_type="Model", context_identifier="Annotation", target_view="ELEVATION_VIEW", parent="model" + ).should_be_called() project.run_context_add_context( context_type="Plan", context_identifier="", target_view="", parent=0 ).should_be_called().will_return("plan") project.run_context_add_context( context_type="Plan", context_identifier="Axis", target_view="GRAPH_VIEW", parent="plan" ).should_be_called() + project.run_context_add_context( + context_type="Plan", context_identifier="Body", target_view="PLAN_VIEW", parent="plan" + ).should_be_called() project.run_context_add_context( context_type="Plan", context_identifier="Annotation", target_view="PLAN_VIEW", parent="plan" ).should_be_called() - project.run_context_add_context( - context_type="Plan", context_identifier="Annotation", target_view="SECTION_VIEW", parent="plan" - ).should_be_called() - project.run_context_add_context( - context_type="Plan", context_identifier="Annotation", target_view="ELEVATION_VIEW", parent="plan" - ).should_be_called() project.run_root_assign_class(obj="site", ifc_class="IfcSite", context="body").should_be_called() project.run_root_assign_class(obj="building", ifc_class="IfcBuilding", context="body").should_be_called() diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/assign_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/assign_unit.py index e8e4bbfb98..779dc6826d 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/unit/assign_unit.py +++ b/src/ifcopenshell-python/ifcopenshell/api/unit/assign_unit.py @@ -61,12 +61,11 @@ class Usecase: ifcopenshell.api.run("unit.assign_unit", model) """ self.file = file - self.settings = { - "units": units, - "length": {"is_metric": True, "raw": "MILLIMETERS"}, - "area": {"is_metric": True, "raw": "METERS"}, - "volume": {"is_metric": True, "raw": "METERS"}, - } + self.settings = {"units": units} + # This is a convenience function, likely to be deprecated in the future. + self.settings["length"] = length or {"is_metric": True, "raw": "MILLIMETERS"} + self.settings["area"] = area or {"is_metric": True, "raw": "METERS"} + self.settings["volume"] = volume or {"is_metric": True, "raw": "METERS"} def execute(self): # We're going to refactor this to split unit creation and assignment