From 3fbd9d7cdfbbcf73a3a36fc0bc0cde742ee51884 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 24 Jan 2024 11:47:19 +0500 Subject: [PATCH] IFC4 Landscape Library Created IFC library with simple trees, shrubs and hedges - with both 2d and 3d representations. Example - https://i.imgur.com/pOjh1si.png Now it's available along with the furniture library when creating new project - https://i.imgur.com/Ho0B5Gn.png --- .../data/libraries/IFC4 Landscape Library.ifc | 993 ++++++++++++++++++ .../scripts/generate_furniture_library.py | 12 +- .../scripts/generate_landscape_library.py | 403 +++++++ .../ifcopenshell/util/shape_builder.py | 32 +- 4 files changed, 1431 insertions(+), 9 deletions(-) create mode 100644 src/blenderbim/blenderbim/bim/data/libraries/IFC4 Landscape Library.ifc create mode 100644 src/blenderbim/scripts/generate_landscape_library.py diff --git a/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Landscape Library.ifc b/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Landscape Library.ifc new file mode 100644 index 0000000000..1f4432f1ce --- /dev/null +++ b/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Landscape Library.ifc @@ -0,0 +1,993 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); +FILE_NAME('/dev/null','2024-01-24T15:32:17+05:00',(),(),'IfcOpenShell v0.7.0-6c9e130ca','IfcOpenShell v0.7.0-6c9e130ca','Nobody'); +FILE_SCHEMA(('IFC4')); +ENDSEC; +DATA; +#1=IFCPROJECT('3GRx5GJtv7EvI86hmjeQD6',$,'Landscape Assets Library',$,$,$,$,(#10,#14),#5); +#2=IFCPROJECTLIBRARY('1Go1D2HIr9AR4M6PdJb8DW',$,'Landscape Assets Library',$,$,$,$,$,$); +#3=IFCRELDECLARES('2Nc$sSRrvCzOJbe4Q6ZcVa',$,$,$,#1,(#2)); +#4=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); +#5=IFCUNITASSIGNMENT((#4)); +#6=IFCCARTESIANPOINT((0.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCDIRECTION((1.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#6,#7,#8); +#10=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,$); +#11=IFCCARTESIANPOINT((0.,0.)); +#12=IFCDIRECTION((1.,0.)); +#13=IFCAXIS2PLACEMENT2D(#11,#12); +#14=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Plan',2,1.E-05,#13,$); +#15=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#10,$,.MODEL_VIEW.,$); +#16=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Plan',*,*,*,*,#14,$,.PLAN_VIEW.,$); +#17=IFCCARTESIANPOINTLIST2D(((-331.408782958984,488.559936523438),(-428.486114501953,371.370391845703),(-408.744873046875,331.425659179688),(-492.345001220703,263.470184326172),(-519.991760253906,89.2266616821289),(-366.53076171875,65.1004943847656),(-523.9287109375,51.0255508422852),(-542.778625488281,-161.150390625),(-455.430816650391,-198.061676025391),(-467.317413330078,-264.261047363281),(-389.842987060547,-378.319213867188),(-351.178894042969,-382.372741699219),(-243.823715209961,-498.601684570312),(-171.287063598633,-509.852447509766),(-182.036499023438,-454.125518798828),(-123.127815246582,-538.493591308594),(208.583557128906,-495.693969726562),(174.199142456055,-387.101898193359),(269.968353271484,-457.362365722656),(517.720397949219,-208.39501953125),(467.592559814453,-165.981643676758),(535.54443359375,-138.483825683594),(546.240173339844,47.7887229919434),(425.388610839844,29.4520435333252),(514.287658691406,107.907821655273),(467.776489257812,312.002685546875),(374.896423339844,365.066589355469),(325.083190917969,461.613433837891),(224.657806396484,496.0244140625),(105.845329284668,424.517761230469),(191.164672851562,514.677307128906),(-7.41858577728271,553.592407226562),(-105.371849060059,531.902709960938),(-180.417175292969,499.200317382812))); +#18=IFCINDEXEDPOLYCURVE(#17,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#19=IFCCARTESIANPOINTLIST3D(((80.,0.,0.),(40.,69.2820323027551,0.),(-40.,69.2820323027551,0.),(-80.,9.79717439317883E-15,0.),(-40.,-69.2820323027551,0.),(40.,-69.2820323027551,0.),(80.,0.,280.),(40.,69.2820323027551,280.),(-40.,69.2820323027551,280.),(-80.,9.79717439317883E-15,280.),(-40.,-69.2820323027551,280.),(40.,-69.2820323027551,280.),(570.140986817674,-5.11998806339175,502.765430824539),(261.339072714044,511.863483235935,520.441255965265),(-271.449977559115,464.840881207563,498.631051036932),(-577.400357563209,-18.0002392785791,529.745674601363),(-246.747896537159,-522.096293601777,523.07445182747),(289.929723989709,-497.828722152031,481.563368832141),(502.264135660384,-3.10815712380199,727.667741239885),(256.486268377103,397.638199139059,733.570036889682),(-210.099579404528,457.859720268934,722.445245365077),(-522.479901100414,-35.7080296205946,687.931736233252),(-213.081169792834,-438.257812253687,704.648197605265),(273.503462940155,-437.429578762916,717.812431534607),(409.72756228227,-31.3204193188668,937.51589967911),(231.939555298324,334.085354425246,911.578097173966),(-213.440011711198,325.481782873574,931.184023328963),(-391.4385670944,11.3681475906559,933.839400395571),(-181.597613330968,-384.045646583411,936.269525762716),(198.107253544529,-351.52926490917,903.558501964971),(358.836914477244,-29.0443800107266,1124.54961826854),(191.636382145782,325.816574427016,1143.76409675514),(-175.686180114122,275.257306965059,1132.35007279295),(-330.55780048986,-23.1508504281077,1121.17416888324),(-172.687090174965,-317.707089809191,1159.279616419),(192.616008554028,-273.601791847896,1147.14103266758),(252.691797114565,-4.70084047240072,1330.07490310776),(147.138603790187,216.221351494253,1352.71275883304),(-162.078730999078,224.60205813657,1371.67941135993),(-271.544406853979,26.607279268613,1378.19571732018),(-150.451939922955,-226.516554345382,1395.27272058484),(133.281231324475,-220.990480915293,1334.23398662872),(187.5691337229,-2.77622907865673,1575.7384942221),(88.4380124532162,169.216774598146,1585.64117034361),(-94.8941720337192,139.038794764388,1578.6341137138),(-154.588503036945,-6.10749408831602,1549.40002660187),(-129.962875945536,-160.551322551302,1550.49839466833),(64.8441918513045,-191.270989336927,1579.55078264226),(0.05,0.,1800.),(0.025,0.0433012701892219,1800.),(-0.025,0.0433012701892219,1800.),(-0.05,6.12323399573677E-18,1800.),(-0.025,-0.0433012701892219,1800.),(0.025,-0.0433012701892219,1800.))); +#20=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#21=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#22=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#23=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#24=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#25=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#26=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#27=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#28=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#29=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#30=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#31=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#32=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#33=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#34=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#35=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#36=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#37=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#38=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#39=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#40=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#41=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#42=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#43=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#44=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#45=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#46=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#47=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#48=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#49=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#50=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#51=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#52=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#53=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#54=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#55=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#56=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#57=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#58=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#59=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#60=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#61=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#62=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#63=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#64=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#65=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#66=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#67=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#68=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#69=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#70=IFCPOLYGONALFACESET(#19,$,(#20,#21,#22,#23,#24,#25,#26,#27,#28,#29,#30,#31,#32,#33,#34,#35,#36,#37,#38,#39,#40,#41,#42,#43,#44,#45,#46,#47,#48,#49,#50,#51,#52,#53,#54,#55,#56,#57,#58,#59,#60,#61,#62,#63,#64,#65,#66,#67,#68,#69),$); +#71=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#18)); +#72=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#70)); +#73=IFCGEOGRAPHICELEMENTTYPE('34zHVx8cX0dRoaynJ1QKTg',$,'Cone Tree (1.8m)',$,$,$,(#78,#83),$,$,.NOTDEFINED.); +#74=IFCCARTESIANPOINT((0.,0.,0.)); +#75=IFCDIRECTION((1.,0.,0.)); +#76=IFCDIRECTION((0.,0.,1.)); +#77=IFCAXIS2PLACEMENT3D(#74,#76,#75); +#78=IFCREPRESENTATIONMAP(#77,#72); +#79=IFCCARTESIANPOINT((0.,0.,0.)); +#80=IFCDIRECTION((1.,0.,0.)); +#81=IFCDIRECTION((0.,0.,1.)); +#82=IFCAXIS2PLACEMENT3D(#79,#81,#80); +#83=IFCREPRESENTATIONMAP(#82,#71); +#84=IFCRELDECLARES('2hc5gFJQT6VP_pTBscCuS_',$,$,$,#2,(#840,#409,#680,#208,#613,#73,#342,#773,#275,#479,#742,#907,#711,#141,#546,#974,#444)); +#85=IFCCARTESIANPOINTLIST2D(((-1281.64282226562,1889.38659667969),(-1657.06579589844,1436.1845703125),(-1580.72131347656,1281.70812988281),(-1904.02453613281,1018.90686035156),(-2010.94165039062,345.062408447266),(-1417.46850585938,251.760314941406),(-2026.16674804688,197.328903198242),(-2099.06420898438,-623.209899902344),(-1761.26782226562,-765.955322265625),(-1807.236328125,-1021.96527099609),(-1507.62292480469,-1463.05749511719),(-1358.09887695312,-1478.73352050781),(-942.928833007812,-1928.220703125),(-662.411010742188,-1971.73022460938),(-703.981872558594,-1756.21984863281),(-476.166870117188,-2082.49291992188),(806.646179199219,-1916.97583007812),(673.672790527344,-1497.02233886719),(1044.03686523438,-1768.73767089844),(2002.15771484375,-805.917053222656),(1808.30041503906,-641.893615722656),(2071.087890625,-535.552490234375),(2112.45092773438,184.811248779297),(1645.0869140625,113.898612976074),(1988.88244628906,417.307220458984),(1809.01171875,1206.59436035156),(1449.82067871094,1411.80627441406),(1257.18005371094,1785.17761230469),(868.809387207031,1918.25366210938),(409.3310546875,1641.71911621094),(739.282836914062,1990.38916015625),(-28.6895751953125,2140.8837890625),(-407.5,2057.00415039062),(-697.719543457031,1930.53576660156))); +#86=IFCINDEXEDPOLYCURVE(#85,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#87=IFCCARTESIANPOINTLIST3D(((220.,0.,0.),(110.,190.525588832576,0.),(-110.,190.525588832577,0.),(-220.,2.69422295812418E-14,0.),(-110.,-190.525588832576,0.),(110.,-190.525588832576,0.),(220.,0.,740.),(110.,190.525588832576,740.),(-110.,190.525588832577,740.),(-220.,2.69422295812418E-14,740.),(-110.,-190.525588832576,740.),(110.,-190.525588832576,740.),(2227.84155681395,-42.6665671949312,2823.99763782354),(916.158939283701,2080.25825808339,2971.29618066292),(-1000.41647965929,1688.40324118029,2789.54447292681),(-2288.33631302674,-150.00199398816,3048.8330026304),(-794.565804476328,-2165.53167779874,2993.23947951463),(1154.41436658091,-1963.30191571753,2647.31378788689),(1998.64557494764,-25.9013093650166,4925.80260557047),(1043.94112536474,1419.75032646046,4974.98840265211),(-657.385383926618,1921.59633587608,4882.28180661374),(-2167.11028694789,-297.566913504955,4594.66923051519),(-682.231970495834,-1758.24710241569,4733.97307528197),(1185.75108005685,-1751.34515665926,4843.67502469316),(1563.95190790781,-261.00349432389,6902.15630684973),(1007.60740526381,1181.51272302971,6686.0079526402),(-853.444542037762,1109.81629343244,6849.3906705985),(-1411.54361467555,94.7345632554656,6871.51881282023),(-588.091222202507,-1597.84849101442,6891.76985754645),(725.67155731552,-1326.87864372908,6619.17799256523),(1476.3076206437,-242.036500089388,8688.38967604738),(839.969851214854,1403.97565889549,8848.51033010232),(-707.051500951019,982.648430045852,8753.39346375077),(-1240.6483374155,-192.923753567565,8660.26093116989),(-682.059084791378,-1336.39662041362,8977.80632730116),(848.133404616898,-968.852470736159,8876.65146270604),(928.209420399157,-39.1736706033394,10628.7194306599),(637.377253807116,782.05157030683,10817.3682283706),(-761.878313881205,851.890792326142,10975.4236660946),(-1085.31450156094,221.727327238442,11029.7262157634),(-664.988388246851,-867.844927399578,11172.0345763022),(521.899149926181,-821.794315482163,10663.3784600012),(721.965003246392,-23.1352423221394,12903.5350708985),(316.42788155458,681.716198690303,12986.057371911),(-370.229211392105,430.233033408991,12927.6652333293),(-447.126414196768,-50.8957840693003,12684.0478407298),(-662.468410657245,-609.504098299938,12693.2009079504),(119.812709871982,-865.501321513485,12935.3041410664),(0.05,0.,15000.),(0.025,0.0433012701892219,15000.),(-0.025,0.0433012701892219,15000.),(-0.05,6.12323399573677E-18,15000.),(-0.025,-0.0433012701892219,15000.),(0.025,-0.0433012701892219,15000.))); +#88=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#89=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#90=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#91=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#92=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#93=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#94=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#95=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#96=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#97=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#98=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#99=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#100=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#101=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#102=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#103=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#104=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#105=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#106=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#107=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#108=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#109=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#110=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#111=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#112=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#113=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#114=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#115=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#116=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#117=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#118=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#119=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#120=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#121=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#122=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#123=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#124=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#125=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#126=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#127=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#128=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#129=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#130=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#131=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#132=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#133=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#134=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#135=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#136=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#137=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#138=IFCPOLYGONALFACESET(#87,$,(#88,#89,#90,#91,#92,#93,#94,#95,#96,#97,#98,#99,#100,#101,#102,#103,#104,#105,#106,#107,#108,#109,#110,#111,#112,#113,#114,#115,#116,#117,#118,#119,#120,#121,#122,#123,#124,#125,#126,#127,#128,#129,#130,#131,#132,#133,#134,#135,#136,#137),$); +#139=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#86)); +#140=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#138)); +#141=IFCGEOGRAPHICELEMENTTYPE('1up5YjiS1CSvOopNo9qhzA',$,'Cone Tree (15m)',$,$,$,(#146,#151),$,$,.NOTDEFINED.); +#142=IFCCARTESIANPOINT((0.,0.,0.)); +#143=IFCDIRECTION((1.,0.,0.)); +#144=IFCDIRECTION((0.,0.,1.)); +#145=IFCAXIS2PLACEMENT3D(#142,#144,#143); +#146=IFCREPRESENTATIONMAP(#145,#140); +#147=IFCCARTESIANPOINT((0.,0.,0.)); +#148=IFCDIRECTION((1.,0.,0.)); +#149=IFCDIRECTION((0.,0.,1.)); +#150=IFCAXIS2PLACEMENT3D(#147,#149,#148); +#151=IFCREPRESENTATIONMAP(#150,#139); +#152=IFCCARTESIANPOINTLIST2D(((-498.579620361328,735.001647949219),(-644.625122070312,558.698791503906),(-614.925903320312,498.60498046875),(-740.696044921875,396.37109375),(-782.288513183594,134.234802246094),(-551.41796875,97.9387969970703),(-788.211303710938,76.7640991210938),(-816.569641113281,-242.43864440918),(-685.161376953125,-297.968902587891),(-703.043884277344,-397.560852050781),(-586.489440917969,-569.15283203125),(-528.322204589844,-575.251037597656),(-366.814422607422,-750.108703613281),(-257.688507080078,-767.03466796875),(-273.860229492188,-683.197692871094),(-185.236541748047,-810.123107910156),(313.798278808594,-745.734313964844),(262.069519042969,-582.365661621094),(406.147064208984,-688.067260742188),(778.871398925781,-313.5146484375),(703.457824707031,-249.706893920898),(805.686340332031,-208.338500976562),(821.777282714844,71.8945388793945),(639.965148925781,44.3083839416504),(773.707153320312,162.339202880859),(703.734558105469,469.384552001953),(564.003479003906,549.215209960938),(489.063201904297,694.462707519531),(337.980773925781,746.2314453125),(159.236328125,638.655029296875),(287.592864990234,774.293273925781),(-11.1607036590576,832.838073730469),(-158.524017333984,800.207580566406),(-271.424072265625,751.009338378906))); +#153=IFCINDEXEDPOLYCURVE(#152,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#154=IFCCARTESIANPOINTLIST3D(((110.,0.,0.),(55.,95.2627944162882,0.),(-55.,95.2627944162883,0.),(-110.,1.34711147906209E-14,0.),(-55.,-95.2627944162882,0.),(55.,-95.2627944162882,0.),(110.,0.,320.),(55.,95.2627944162882,320.),(-55.,95.2627944162883,320.),(-110.,1.34711147906209E-14,320.),(-55.,-95.2627944162882,320.),(55.,-95.2627944162882,320.),(864.280518937983,-14.2221890649771,1004.18968879832),(366.2196464279,798.785843488237,1053.28920307812),(-394.305493219765,668.167504520537,992.705300499414),(-884.445437675581,-50.0006646627198,1079.13481040061),(-325.688601492109,-827.210316726686,1060.60363602869),(445.638122193637,-759.800396032949,945.295072152772),(771.659636093658,-8.63376978833887,1694.31515423778),(400.702597343804,564.567676396979,1710.71041993166),(-271.850683531095,731.84967953552,1679.8082212522),(-827.814540093743,-99.1889711683184,1583.93736255268),(-280.132879054167,-677.399935048722,1630.37197747494),(447.972582241171,-675.099286463246,1666.93929394534),(610.539524858158,-87.0011647746299,2342.62353085467),(380.480246199047,471.106285369781,2270.57407945149),(-329.092625123698,447.207475504026,2325.0349854376),(-559.736760447407,31.5781877518219,2332.41103284484),(-240.641518511947,-609.88487469802,2339.16138108691),(286.501630216284,-519.561592269572,2248.29742609317),(565.102540214566,-80.6788333631295,2927.55846344436),(316.489950404951,531.211740774762,2980.93201479601),(-272.18383365034,390.769331158215,2949.22639267883),(-486.549445805167,-64.3079178558549,2918.18221515187),(-263.853028263793,-508.685394614137,3024.03068052896),(319.211134872299,-386.170678054984,2990.31239233058),(366.18091791083,-13.0578902011131,3563.85885783901),(240.847973491261,309.854854694926,3626.74179040925),(-282.348326849291,333.134595368031,3679.42693631726),(-418.54927829809,73.9091090794806,3697.52778620685),(-250.051684971173,-338.452640392509,3744.96390638646),(202.355272197616,-323.102436420037,3575.41186761945),(281.210556637686,-7.71174744071313,4311.65454744235),(125.753738295971,262.36087427247,4339.1619811132),(-143.687514908479,178.533152512032,4319.69793491929),(-189.597693621145,-16.9652613564334,4238.49213738614),(-241.100581330193,-238.290174142348,4241.54315979299),(60.215347735105,-323.622581880197,4322.24423749834),(0.05,0.,5000.),(0.025,0.0433012701892219,5000.),(-0.025,0.0433012701892219,5000.),(-0.05,6.12323399573677E-18,5000.),(-0.025,-0.0433012701892219,5000.),(0.025,-0.0433012701892219,5000.))); +#155=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#156=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#157=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#158=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#159=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#160=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#161=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#162=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#163=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#164=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#165=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#166=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#167=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#168=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#169=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#170=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#171=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#172=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#173=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#174=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#175=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#176=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#177=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#178=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#179=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#180=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#181=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#182=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#183=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#184=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#185=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#186=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#187=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#188=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#189=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#190=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#191=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#192=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#193=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#194=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#195=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#196=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#197=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#198=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#199=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#200=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#201=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#202=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#203=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#204=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#205=IFCPOLYGONALFACESET(#154,$,(#155,#156,#157,#158,#159,#160,#161,#162,#163,#164,#165,#166,#167,#168,#169,#170,#171,#172,#173,#174,#175,#176,#177,#178,#179,#180,#181,#182,#183,#184,#185,#186,#187,#188,#189,#190,#191,#192,#193,#194,#195,#196,#197,#198,#199,#200,#201,#202,#203,#204),$); +#206=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#153)); +#207=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#205)); +#208=IFCGEOGRAPHICELEMENTTYPE('1cYi681Jz1UQcLu0VCPumj',$,'Cone Tree (5m)',$,$,$,(#213,#218),$,$,.NOTDEFINED.); +#209=IFCCARTESIANPOINT((0.,0.,0.)); +#210=IFCDIRECTION((1.,0.,0.)); +#211=IFCDIRECTION((0.,0.,1.)); +#212=IFCAXIS2PLACEMENT3D(#209,#211,#210); +#213=IFCREPRESENTATIONMAP(#212,#207); +#214=IFCCARTESIANPOINT((0.,0.,0.)); +#215=IFCDIRECTION((1.,0.,0.)); +#216=IFCDIRECTION((0.,0.,1.)); +#217=IFCAXIS2PLACEMENT3D(#214,#216,#215); +#218=IFCREPRESENTATIONMAP(#217,#206); +#219=IFCCARTESIANPOINTLIST2D(((-117.312850952148,172.941558837891),(-151.676498413086,131.458541870117),(-144.688446044922,117.318817138672),(-174.28141784668,93.263786315918),(-184.067886352539,31.584659576416),(-129.745407104492,23.0444221496582),(-185.461486816406,18.062141418457),(-192.134033203125,-57.0443878173828),(-161.214447021484,-70.1103286743164),(-165.422088623047,-93.5437316894531),(-137.997512817383,-133.918304443359),(-124.311111450195,-135.353179931641),(-86.3092803955078,-176.496170043945),(-60.6325874328613,-180.478744506836),(-64.4376983642578,-160.752395629883),(-43.5850677490234,-190.617202758789),(73.8348922729492,-175.466888427734),(61.6634140014648,-137.027221679688),(95.5640106201172,-161.898178100586),(183.263854980469,-73.7681503295898),(165.519485473633,-58.7545623779297),(189.573257446289,-49.020824432373),(193.359359741211,16.9163608551025),(150.580032348633,10.4255018234253),(182.048736572266,38.1974563598633),(165.584594726562,110.443428039551),(132.706695556641,129.227111816406),(115.073692321777,163.402984619141),(79.5248870849609,175.583862304688),(37.4673728942871,150.271774291992),(67.6689071655273,182.186645507812),(-2.62604808807373,195.961898803711),(-37.2997703552246,188.284133911133),(-63.8644866943359,176.708084106445))); +#220=IFCINDEXEDPOLYCURVE(#219,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#221=IFCCARTESIANPOINTLIST3D(((0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(189.142441515039,-1.13777512519817,58.3923179610087),(89.297571714232,167.825915933192,62.3202791033923),(-91.5444394575811,157.376448815776,57.4735668970959),(-190.755635014047,-4.00005317301757,64.3879276891917),(-86.0550881193688,-170.099873792268,62.9054337394378),(95.651049775491,-164.707080136769,53.6807486293646),(196.799437554159,-0.69070158306711,117.259498053308),(99.5895411208377,162.136578649577,118.571119308818),(-89.2813880158209,175.51913890066,116.098943414462),(-201.291829874166,-7.93511769346546,108.4292747185),(-89.9439636576667,-171.163159341716,112.144043912281),(103.371139912627,-170.979107454878,115.069429229913),(198.976495321986,-6.96009318197039,172.781311039802),(105.50508636259,167.707783451086,167.017354927548),(-101.394076676563,165.795878661826,171.374227406436),(-194.912274169126,2.52625502014577,171.964311199016),(-94.3179881476225,-178.810070597345,172.504339058381),(97.9867970839694,-171.58420800307,165.235222658882),(198.408203217165,-6.45430666905036,223.233248504121),(101.919196032396,175.172031121757,227.503132612252),(-98.3747066920271,163.936638352433,224.966682842878),(-192.123955664413,-5.14463342846837,222.483148640721),(-97.7082422611035,-173.369923428907,230.951025870888),(102.136890789784,-163.568746104175,228.253562815018),(185.561140099533,-1.04463121608905,277.794422912835),(97.4011712126342,160.119291473642,282.825057518454),(-100.721199481277,161.981670727491,287.039869191095),(-189.750608930514,5.91272872635847,288.487937182262),(-98.1374681310272,-162.407114329449,292.282826796631),(94.3217551091426,-161.179098011651,278.71866369527),(181.830177864348,-0.61693979525705,341.275220938245),(89.7269657303444,158.975584278118,343.475815631913),(-91.161667859345,152.269366537283,341.9186919364),(-174.501148823025,-1.35722090851465,335.422228133748),(-98.9547131730822,-157.049928267708,335.666309926296),(84.4838944854751,-163.876520886736,342.122396142724),(0.05,0.,400.),(0.025,0.0433012701892219,400.),(-0.025,0.0433012701892219,400.),(-0.05,6.12323399573677E-18,400.),(-0.025,-0.0433012701892219,400.),(0.025,-0.0433012701892219,400.))); +#222=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#223=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#224=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#225=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#226=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#227=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#228=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#229=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#230=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#231=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#232=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#233=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#234=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#235=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#236=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#237=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#238=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#239=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#240=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#241=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#242=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#243=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#244=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#245=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#246=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#247=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#248=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#249=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#250=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#251=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#252=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#253=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#254=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#255=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#256=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#257=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#258=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#259=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#260=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#261=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#262=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#263=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#264=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#265=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#266=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#267=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#268=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#269=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#270=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#271=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#272=IFCPOLYGONALFACESET(#221,$,(#222,#223,#224,#225,#226,#227,#228,#229,#230,#231,#232,#233,#234,#235,#236,#237,#238,#239,#240,#241,#242,#243,#244,#245,#246,#247,#248,#249,#250,#251,#252,#253,#254,#255,#256,#257,#258,#259,#260,#261,#262,#263,#264,#265,#266,#267,#268,#269,#270,#271),$); +#273=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#220)); +#274=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#272)); +#275=IFCGEOGRAPHICELEMENTTYPE('1mO0fZa2b4sflxAiM3QTIb',$,'Hedge Small (0.4m)',$,$,$,(#280,#285),$,$,.NOTDEFINED.); +#276=IFCCARTESIANPOINT((0.,0.,0.)); +#277=IFCDIRECTION((1.,0.,0.)); +#278=IFCDIRECTION((0.,0.,1.)); +#279=IFCAXIS2PLACEMENT3D(#276,#278,#277); +#280=IFCREPRESENTATIONMAP(#279,#274); +#281=IFCCARTESIANPOINT((0.,0.,0.)); +#282=IFCDIRECTION((1.,0.,0.)); +#283=IFCDIRECTION((0.,0.,1.)); +#284=IFCAXIS2PLACEMENT3D(#281,#283,#282); +#285=IFCREPRESENTATIONMAP(#284,#273); +#286=IFCCARTESIANPOINTLIST2D(((-234.625701904297,345.883117675781),(-303.352996826172,262.917083740234),(-289.376892089844,234.637634277344),(-348.562835693359,186.527572631836),(-368.135772705078,63.169319152832),(-259.490814208984,46.0888442993164),(-370.922973632812,36.1242828369141),(-384.26806640625,-114.088775634766),(-322.428894042969,-140.220657348633),(-330.844177246094,-187.087463378906),(-275.995025634766,-267.836608886719),(-248.622222900391,-270.706359863281),(-172.618560791016,-352.992340087891),(-121.265174865723,-360.957489013672),(-128.875396728516,-321.504791259766),(-87.1701354980469,-381.234405517578),(147.669784545898,-350.933776855469),(123.32682800293,-274.054443359375),(191.128021240234,-323.796356201172),(366.527709960938,-147.53630065918),(331.038970947266,-117.509124755859),(379.146514892578,-98.0416488647461),(386.718719482422,33.8327217102051),(301.160064697266,20.8510036468506),(364.097473144531,76.3949127197266),(331.169189453125,220.886856079102),(265.413391113281,258.454223632812),(230.147384643555,326.805969238281),(159.049774169922,351.167724609375),(74.9347457885742,300.543548583984),(135.337814331055,364.373291015625),(-5.25209617614746,391.923797607422),(-74.5995407104492,376.568267822266),(-127.728973388672,353.416168212891))); +#287=IFCINDEXEDPOLYCURVE(#286,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#288=IFCCARTESIANPOINTLIST3D(((0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(378.284883030077,-2.27555025039633,116.784635922017),(178.595143428464,335.651831866383,124.640558206785),(-183.088878915162,314.752897631551,114.947133794192),(-381.511270028093,-8.00010634603514,128.775855378383),(-172.110176238738,-340.199747584535,125.810867478876),(191.302099550982,-329.414160273537,107.361497258729),(393.598875108319,-1.38140316613422,234.518996106616),(199.179082241675,324.273157299153,237.142238617636),(-178.562776031642,351.03827780132,232.197886828923),(-402.583659748332,-15.8702353869309,216.858549437001),(-179.887927315333,-342.326318683432,224.288087824562),(206.742279825254,-341.958214909756,230.138858459826),(397.952990643972,-13.9201863639408,345.562622079605),(211.010172725181,335.415566902172,334.034709855096),(-202.788153353125,331.591757323652,342.748454812872),(-389.824548338252,5.05251004029154,343.928622398032),(-188.635976295245,-357.620141194691,345.008678116763),(195.973594167939,-343.168416006139,330.470445317765),(396.81640643433,-12.9086133381007,446.466497008241),(203.838392064792,350.344062243514,455.006265224505),(-196.749413384054,327.873276704866,449.933365685756),(-384.247911328827,-10.2892668569367,444.966297281442),(-195.416484522207,-346.739846857814,461.902051741776),(204.273781579568,-327.137492208349,456.507125630036),(371.122280199066,-2.0892624321781,555.588845825671),(194.802342425268,320.238582947285,565.650115036909),(-201.442398962553,323.963341454982,574.07973838219),(-379.501217861028,11.8254574527169,576.975874364524),(-196.274936262054,-324.814228658898,584.565653593263),(188.643510218285,-322.358196023303,557.43732739054),(363.660355728696,-1.2338795905141,682.550441876491),(179.453931460689,317.951168556236,686.951631263826),(-182.32333571869,304.538733074566,683.837383872801),(-349.00229764605,-2.71444181702931,670.844456267496),(-197.909426346164,-314.099856535417,671.332619852593),(168.96778897095,-327.753041773473,684.244792285448),(0.05,0.,800.),(0.025,0.0433012701892219,800.),(-0.025,0.0433012701892219,800.),(-0.05,6.12323399573677E-18,800.),(-0.025,-0.0433012701892219,800.),(0.025,-0.0433012701892219,800.))); +#289=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#290=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#291=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#292=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#293=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#294=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#295=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#296=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#297=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#298=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#299=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#300=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#301=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#302=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#303=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#304=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#305=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#306=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#307=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#308=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#309=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#310=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#311=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#312=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#313=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#314=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#315=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#316=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#317=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#318=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#319=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#320=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#321=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#322=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#323=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#324=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#325=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#326=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#327=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#328=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#329=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#330=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#331=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#332=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#333=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#334=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#335=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#336=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#337=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#338=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#339=IFCPOLYGONALFACESET(#288,$,(#289,#290,#291,#292,#293,#294,#295,#296,#297,#298,#299,#300,#301,#302,#303,#304,#305,#306,#307,#308,#309,#310,#311,#312,#313,#314,#315,#316,#317,#318,#319,#320,#321,#322,#323,#324,#325,#326,#327,#328,#329,#330,#331,#332,#333,#334,#335,#336,#337,#338),$); +#340=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#287)); +#341=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#339)); +#342=IFCGEOGRAPHICELEMENTTYPE('1esPZTKFXE3Af39$mWJyUW',$,'Hedge Medium (0.8m)',$,$,$,(#347,#352),$,$,.NOTDEFINED.); +#343=IFCCARTESIANPOINT((0.,0.,0.)); +#344=IFCDIRECTION((1.,0.,0.)); +#345=IFCDIRECTION((0.,0.,1.)); +#346=IFCAXIS2PLACEMENT3D(#343,#345,#344); +#347=IFCREPRESENTATIONMAP(#346,#341); +#348=IFCCARTESIANPOINT((0.,0.,0.)); +#349=IFCDIRECTION((1.,0.,0.)); +#350=IFCDIRECTION((0.,0.,1.)); +#351=IFCAXIS2PLACEMENT3D(#348,#350,#349); +#352=IFCREPRESENTATIONMAP(#351,#340); +#353=IFCCARTESIANPOINTLIST2D(((-527.907836914062,778.237060546875),(-682.544250488281,591.5634765625),(-651.098022460938,527.934692382812),(-784.266357421875,419.687042236328),(-828.305480957031,142.130966186523),(-583.854309082031,103.699897766113),(-834.57666015625,81.2796401977539),(-864.603149414062,-256.699737548828),(-725.465026855469,-315.496459960938),(-744.3994140625,-420.946807861328),(-620.988830566406,-602.632385253906),(-559.400024414062,-609.08935546875),(-388.391754150391,-794.232788085938),(-272.846649169922,-812.154357910156),(-289.969635009766,-723.3857421875),(-196.1328125,-857.777404785156),(332.257019042969,-789.601013183594),(277.4853515625,-616.622497558594),(430.038055419922,-728.541809082031),(824.687377929688,-331.956665039062),(744.837707519531,-264.395538330078),(853.079650878906,-220.593704223633),(870.117126464844,76.1236267089844),(677.610168457031,46.9147605895996),(819.219299316406,171.888565063477),(745.130676269531,496.995422363281),(597.18017578125,581.522033691406),(517.831604003906,735.313415527344),(357.861999511719,790.127380371094),(168.603179931641,676.222961425781),(304.510101318359,819.839904785156),(-11.8172159194946,881.828552246094),(-167.848968505859,847.278625488281),(-287.390197753906,795.186340332031))); +#354=IFCINDEXEDPOLYCURVE(#353,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#355=IFCCARTESIANPOINTLIST3D(((0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(851.140986817674,-5.11998806339175,262.765430824539),(401.839072714044,755.216621699362,280.441255965265),(-411.949977559115,708.19401967099,258.631051036932),(-858.400357563209,-18.0002392785791,289.745674601363),(-387.24789653716,-765.449432065204,283.07445182747),(430.429723989709,-741.181860615459,241.563368832141),(885.597468993717,-3.10815712380199,527.667741239885),(448.152935043769,729.614603923094,533.570036889682),(-401.766246071194,789.836125052969,522.445245365077),(-905.813234433747,-35.7080296205946,487.931736233252),(-404.7478364595,-770.234217037722,504.648197605265),(465.170129606822,-769.40598354695,517.812431534608),(895.394228948937,-31.3204193188668,777.515899679111),(474.772888631657,754.685025529888,751.578097173967),(-456.273345044531,746.081453978216,771.184023328963),(-877.105233761067,11.368147590656,773.839400395571),(-424.430946664301,-804.645317688054,776.269525762717),(440.940586877863,-772.128936013813,743.558501964971),(892.836914477244,-29.0443800107266,1004.54961826854),(458.636382145783,788.274140047906,1023.76409675514),(-442.686180114122,737.714872585949,1012.35007279295),(-864.55780048986,-23.1508504281077,1001.17416888324),(-439.687090174966,-780.164655430081,1039.279616419),(459.616008554028,-736.059357468786,1027.14103266758),(835.025130447899,-4.70084047240072,1250.07490310776),(438.305270456854,720.536811631391,1272.71275883304),(-453.245397665745,728.917518273708,1291.67941135993),(-853.877740187312,26.6072792686131,1298.19571732018),(-441.618606589622,-730.832014482521,1315.27272058484),(424.447897991142,-725.305941052431,1254.23398662872),(818.235800389567,-2.77622907865673,1535.7384942221),(403.77134578655,715.390129251532,1545.64117034361),(-410.227505367052,685.212149417774,1538.6341137138),(-785.255169703612,-6.10749408831594,1509.40002660187),(-445.29620927887,-706.724677204688,1510.49839466833),(380.177525184638,-737.444343990313,1539.55078264226),(0.05,0.,1800.),(0.025,0.0433012701892219,1800.),(-0.025,0.0433012701892219,1800.),(-0.05,6.12323399573677E-18,1800.),(-0.025,-0.0433012701892219,1800.),(0.025,-0.0433012701892219,1800.))); +#356=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#357=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#358=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#359=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#360=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#361=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#362=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#363=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#364=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#365=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#366=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#367=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#368=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#369=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#370=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#371=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#372=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#373=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#374=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#375=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#376=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#377=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#378=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#379=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#380=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#381=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#382=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#383=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#384=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#385=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#386=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#387=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#388=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#389=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#390=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#391=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#392=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#393=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#394=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#395=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#396=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#397=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#398=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#399=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#400=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#401=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#402=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#403=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#404=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#405=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#406=IFCPOLYGONALFACESET(#355,$,(#356,#357,#358,#359,#360,#361,#362,#363,#364,#365,#366,#367,#368,#369,#370,#371,#372,#373,#374,#375,#376,#377,#378,#379,#380,#381,#382,#383,#384,#385,#386,#387,#388,#389,#390,#391,#392,#393,#394,#395,#396,#397,#398,#399,#400,#401,#402,#403,#404,#405),$); +#407=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#354)); +#408=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#406)); +#409=IFCGEOGRAPHICELEMENTTYPE('2ITyucrb9DnxtmPeA_FCBG',$,'Hedge Big (1.8m)',$,$,$,(#414,#419),$,$,.NOTDEFINED.); +#410=IFCCARTESIANPOINT((0.,0.,0.)); +#411=IFCDIRECTION((1.,0.,0.)); +#412=IFCDIRECTION((0.,0.,1.)); +#413=IFCAXIS2PLACEMENT3D(#410,#412,#411); +#414=IFCREPRESENTATIONMAP(#413,#408); +#415=IFCCARTESIANPOINT((0.,0.,0.)); +#416=IFCDIRECTION((1.,0.,0.)); +#417=IFCDIRECTION((0.,0.,1.)); +#418=IFCAXIS2PLACEMENT3D(#415,#417,#416); +#419=IFCREPRESENTATIONMAP(#418,#407); +#420=IFCCARTESIANPOINTLIST3D(((-2517.70166015625,-2646.30053710938,3901.58129882812),(-255.675521850586,-1248.60815429688,5000.),(-1133.70935058594,-349.566070556641,4688.61865234375),(0.,0.,4658.5205078125),(3472.91040039062,-1142.93579101562,3901.58129882812),(1250.74682617188,317.302124023438,5000.),(806.568603515625,-858.251220703125,4688.61865234375),(1171.36364746094,3483.57202148438,3901.58129882812),(-298.783111572266,1267.951171875,5000.),(874.774963378906,818.52783203125,4688.61865234375),(-3164.8310546875,1859.35131835938,3901.58129882812),(-1289.18603515625,-25.3927478790283,5000.),(-613.466796875,1034.14660644531,4688.61865234375))); +#421=IFCINDEXEDPOLYGONALFACE((3,2,1)); +#422=IFCINDEXEDPOLYGONALFACE((3,4,2)); +#423=IFCINDEXEDPOLYGONALFACE((7,6,5)); +#424=IFCINDEXEDPOLYGONALFACE((7,4,6)); +#425=IFCINDEXEDPOLYGONALFACE((10,9,8)); +#426=IFCINDEXEDPOLYGONALFACE((10,4,9)); +#427=IFCINDEXEDPOLYGONALFACE((13,12,11)); +#428=IFCINDEXEDPOLYGONALFACE((13,4,12)); +#429=IFCPOLYGONALFACESET(#420,$,(#421,#422,#423,#424,#425,#426,#427,#428),$); +#430=IFCCARTESIANPOINT((0.,0.)); +#431=IFCAXIS2PLACEMENT2D(#430,$); +#432=IFCCIRCLE(#431,100.); +#433=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#432); +#434=IFCCARTESIANPOINT((0.,0.,0.)); +#435=IFCDIRECTION((0.,0.,1.)); +#436=IFCDIRECTION((1.,0.,0.)); +#437=IFCAXIS2PLACEMENT3D(#434,#435,#436); +#438=IFCDIRECTION((0.,0.,1.)); +#439=IFCEXTRUDEDAREASOLID(#433,#437,#438,4658.5204646405); +#440=IFCCARTESIANPOINTLIST2D(((-2517.70166015625,-2646.30053710938,0.),(-255.675521850586,-1248.60815429688,0.),(-1133.70935058594,-349.566070556641,0.),(0.,0.,0.),(3472.91040039062,-1142.93579101562,0.),(1250.74682617188,317.302124023438,0.),(806.568603515625,-858.251220703125,0.),(1171.36364746094,3483.57202148438,0.),(-298.783111572266,1267.951171875,0.),(874.774963378906,818.52783203125,0.),(-3164.8310546875,1859.35131835938,0.),(-1289.18603515625,-25.3927478790283,0.),(-613.466796875,1034.14660644531,0.))); +#441=IFCINDEXEDPOLYCURVE(#440,(IFCLINEINDEX((4,12,11,13,4)),IFCLINEINDEX((4,2,1,3,4)),IFCLINEINDEX((4,6,5,7,4)),IFCLINEINDEX((4,9,8,10,4))),$); +#442=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#441)); +#443=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#429,#439)); +#444=IFCGEOGRAPHICELEMENTTYPE('0If5oJIRTAxw5EHjhL6zX$',$,'Palm Tree (5m)',$,$,$,(#449,#454),$,$,.NOTDEFINED.); +#445=IFCCARTESIANPOINT((0.,0.,0.)); +#446=IFCDIRECTION((1.,0.,0.)); +#447=IFCDIRECTION((0.,0.,1.)); +#448=IFCAXIS2PLACEMENT3D(#445,#447,#446); +#449=IFCREPRESENTATIONMAP(#448,#443); +#450=IFCCARTESIANPOINT((0.,0.,0.)); +#451=IFCDIRECTION((1.,0.,0.)); +#452=IFCDIRECTION((0.,0.,1.)); +#453=IFCAXIS2PLACEMENT3D(#450,#452,#451); +#454=IFCREPRESENTATIONMAP(#453,#442); +#455=IFCCARTESIANPOINTLIST3D(((-5223.76025390625,-5490.57861328125,12720.986328125),(-530.478881835938,-2590.62841796875,15000.),(-2352.23486328125,-725.284240722656,14353.9423828125),(0.,0.,14291.4931640625),(7205.64013671875,-2371.37817382812,12720.986328125),(2595.06591796875,658.342590332031,15000.),(1673.47912597656,-1780.7109375,14353.9423828125),(2430.36059570312,7227.76025390625,12720.986328125),(-619.919128417969,2630.76171875,15000.),(1814.99462890625,1698.29223632812,14353.9423828125),(-6566.43310546875,3857.80639648438,12720.986328125),(-2674.81982421875,-52.6852073669434,15000.),(-1272.82897949219,2145.66088867188,14353.9423828125))); +#456=IFCINDEXEDPOLYGONALFACE((3,2,1)); +#457=IFCINDEXEDPOLYGONALFACE((3,4,2)); +#458=IFCINDEXEDPOLYGONALFACE((7,6,5)); +#459=IFCINDEXEDPOLYGONALFACE((7,4,6)); +#460=IFCINDEXEDPOLYGONALFACE((10,9,8)); +#461=IFCINDEXEDPOLYGONALFACE((10,4,9)); +#462=IFCINDEXEDPOLYGONALFACE((13,12,11)); +#463=IFCINDEXEDPOLYGONALFACE((13,4,12)); +#464=IFCPOLYGONALFACESET(#455,$,(#456,#457,#458,#459,#460,#461,#462,#463),$); +#465=IFCCARTESIANPOINT((0.,0.)); +#466=IFCAXIS2PLACEMENT2D(#465,$); +#467=IFCCIRCLE(#466,200.); +#468=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#467); +#469=IFCCARTESIANPOINT((0.,0.,0.)); +#470=IFCDIRECTION((0.,0.,1.)); +#471=IFCDIRECTION((1.,0.,0.)); +#472=IFCAXIS2PLACEMENT3D(#469,#470,#471); +#473=IFCDIRECTION((0.,0.,1.)); +#474=IFCEXTRUDEDAREASOLID(#468,#472,#473,14291.4938033876); +#475=IFCCARTESIANPOINTLIST2D(((-5223.76025390625,-5490.57861328125,0.),(-530.478881835938,-2590.62841796875,0.),(-2352.23486328125,-725.284240722656,0.),(0.,0.,0.),(7205.64013671875,-2371.37817382812,0.),(2595.06591796875,658.342590332031,0.),(1673.47912597656,-1780.7109375,0.),(2430.36059570312,7227.76025390625,0.),(-619.919128417969,2630.76171875,0.),(1814.99462890625,1698.29223632812,0.),(-6566.43310546875,3857.80639648438,0.),(-2674.81982421875,-52.6852073669434,0.),(-1272.82897949219,2145.66088867188,0.))); +#476=IFCINDEXEDPOLYCURVE(#475,(IFCLINEINDEX((4,12,11,13,4)),IFCLINEINDEX((4,2,1,3,4)),IFCLINEINDEX((4,6,5,7,4)),IFCLINEINDEX((4,9,8,10,4))),$); +#477=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#476)); +#478=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#464,#474)); +#479=IFCGEOGRAPHICELEMENTTYPE('11RlAtH99EAwxYuNeuU3sf',$,'Palm Tree (15m)',$,$,$,(#484,#489),$,$,.NOTDEFINED.); +#480=IFCCARTESIANPOINT((0.,0.,0.)); +#481=IFCDIRECTION((1.,0.,0.)); +#482=IFCDIRECTION((0.,0.,1.)); +#483=IFCAXIS2PLACEMENT3D(#480,#482,#481); +#484=IFCREPRESENTATIONMAP(#483,#478); +#485=IFCCARTESIANPOINT((0.,0.,0.)); +#486=IFCDIRECTION((1.,0.,0.)); +#487=IFCDIRECTION((0.,0.,1.)); +#488=IFCAXIS2PLACEMENT3D(#485,#487,#486); +#489=IFCREPRESENTATIONMAP(#488,#477); +#490=IFCCARTESIANPOINTLIST2D(((-117.312850952148,172.941558837891),(-151.676498413086,131.458541870117),(-144.688446044922,117.318817138672),(-174.28141784668,93.263786315918),(-184.067886352539,31.584659576416),(-129.745407104492,23.0444221496582),(-185.461486816406,18.062141418457),(-192.134033203125,-57.0443878173828),(-161.214447021484,-70.1103286743164),(-165.422088623047,-93.5437316894531),(-137.997512817383,-133.918304443359),(-124.311111450195,-135.353179931641),(-86.3092803955078,-176.496170043945),(-60.6325874328613,-180.478744506836),(-64.4376983642578,-160.752395629883),(-43.5850677490234,-190.617202758789),(73.8348922729492,-175.466888427734),(61.6634140014648,-137.027221679688),(95.5640106201172,-161.898178100586),(183.263854980469,-73.7681503295898),(165.519485473633,-58.7545623779297),(189.573257446289,-49.020824432373),(193.359359741211,16.9163608551025),(150.580032348633,10.4255018234253),(182.048736572266,38.1974563598633),(165.584594726562,110.443428039551),(132.706695556641,129.227111816406),(115.073692321777,163.402984619141),(79.5248870849609,175.583862304688),(37.4673728942871,150.271774291992),(67.6689071655273,182.186645507812),(-2.62604808807373,195.961898803711),(-37.2997703552246,188.284133911133),(-63.8644866943359,176.708084106445))); +#491=IFCINDEXEDPOLYCURVE(#490,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#492=IFCCARTESIANPOINTLIST3D(((0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(117.302441515039,-1.13777512519817,58.3923179610087),(53.377571714232,105.610650925318,62.3202791033923),(-55.6244394575812,95.1611838079015,57.4735668970959),(-118.915635014047,-4.00005317301758,64.3879276891917),(-50.1350881193688,-107.884608784393,62.9054337394378),(59.731049775491,-102.491815128895,53.6807486293646),(146.906104220826,-0.69070158306711,117.259498053308),(74.642874454171,118.927684503425,118.571119308818),(-64.3347213491543,132.310244754508,116.098943414462),(-151.398496540833,-7.93511769346546,108.4292747185),(-64.9972969910001,-127.954265195564,112.144043912281),(78.4244732459604,-127.770213308726,115.069429229913),(171.029828655319,-6.96009318197039,172.781311039802),(91.5317530292571,143.505260166657,167.017354927548),(-87.4207433432292,141.593355377397,171.374227406436),(-166.965607502459,2.52625502014577,171.964311199016),(-80.3446548142891,-154.607547312916,172.504339058381),(84.0134637506361,-147.38168471864,165.235222658882),(204.408203217165,-6.45430666905036,223.233248504121),(104.919196032396,180.368183544464,227.503132612252),(-101.374706692027,169.13279077514,224.966682842878),(-198.123955664413,-5.14463342846837,222.483148640721),(-100.708242261103,-178.566075851614,230.951025870888),(105.136890789784,-168.764898526881,228.253562815018),(169.614473432866,-1.04463121608905,277.794422912835),(89.4278378793009,146.309073034627,282.825057518454),(-92.7478661479432,148.171452288475,287.039869191095),(-173.803942263847,5.91272872635847,288.487937182262),(-90.1641347976938,-148.596895890433,292.282826796631),(86.3484217758093,-147.368879572635,278.71866369527),(143.936844531015,-0.61693979525705,341.275220938245),(70.7802990636777,126.15899497738,343.475815631913),(-72.2150011926783,119.452777236545,341.9186919364),(-136.607815489692,-1.35722090851466,335.422228133748),(-80.0080465064155,-124.23333896697,335.666309926296),(65.5372278188084,-131.059931585998,342.122396142724),(0.05,0.,400.),(0.025,0.0433012701892219,400.),(-0.025,0.0433012701892219,400.),(-0.05,6.12323399573677E-18,400.),(-0.025,-0.0433012701892219,400.),(0.025,-0.0433012701892219,400.))); +#493=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#494=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#495=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#496=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#497=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#498=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#499=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#500=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#501=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#502=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#503=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#504=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#505=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#506=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#507=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#508=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#509=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#510=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#511=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#512=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#513=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#514=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#515=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#516=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#517=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#518=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#519=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#520=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#521=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#522=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#523=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#524=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#525=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#526=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#527=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#528=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#529=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#530=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#531=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#532=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#533=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#534=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#535=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#536=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#537=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#538=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#539=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#540=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#541=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#542=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#543=IFCPOLYGONALFACESET(#492,$,(#493,#494,#495,#496,#497,#498,#499,#500,#501,#502,#503,#504,#505,#506,#507,#508,#509,#510,#511,#512,#513,#514,#515,#516,#517,#518,#519,#520,#521,#522,#523,#524,#525,#526,#527,#528,#529,#530,#531,#532,#533,#534,#535,#536,#537,#538,#539,#540,#541,#542),$); +#544=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#491)); +#545=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#543)); +#546=IFCGEOGRAPHICELEMENTTYPE('224k6o88949Ak$WjDPqiY0',$,'Shrub Small (0.4m)',$,$,$,(#551,#556),$,$,.NOTDEFINED.); +#547=IFCCARTESIANPOINT((0.,0.,0.)); +#548=IFCDIRECTION((1.,0.,0.)); +#549=IFCDIRECTION((0.,0.,1.)); +#550=IFCAXIS2PLACEMENT3D(#547,#549,#548); +#551=IFCREPRESENTATIONMAP(#550,#545); +#552=IFCCARTESIANPOINT((0.,0.,0.)); +#553=IFCDIRECTION((1.,0.,0.)); +#554=IFCDIRECTION((0.,0.,1.)); +#555=IFCAXIS2PLACEMENT3D(#552,#554,#553); +#556=IFCREPRESENTATIONMAP(#555,#544); +#557=IFCCARTESIANPOINTLIST2D(((-234.625701904297,345.883117675781),(-303.352996826172,262.917083740234),(-289.376892089844,234.637634277344),(-348.562835693359,186.527572631836),(-368.135772705078,63.169319152832),(-259.490814208984,46.0888442993164),(-370.922973632812,36.1242828369141),(-384.26806640625,-114.088775634766),(-322.428894042969,-140.220657348633),(-330.844177246094,-187.087463378906),(-275.995025634766,-267.836608886719),(-248.622222900391,-270.706359863281),(-172.618560791016,-352.992340087891),(-121.265174865723,-360.957489013672),(-128.875396728516,-321.504791259766),(-87.1701354980469,-381.234405517578),(147.669784545898,-350.933776855469),(123.32682800293,-274.054443359375),(191.128021240234,-323.796356201172),(366.527709960938,-147.53630065918),(331.038970947266,-117.509124755859),(379.146514892578,-98.0416488647461),(386.718719482422,33.8327217102051),(301.160064697266,20.8510036468506),(364.097473144531,76.3949127197266),(331.169189453125,220.886856079102),(265.413391113281,258.454223632812),(230.147384643555,326.805969238281),(159.049774169922,351.167724609375),(74.9347457885742,300.543548583984),(135.337814331055,364.373291015625),(-5.25209617614746,391.923797607422),(-74.5995407104492,376.568267822266),(-127.728973388672,353.416168212891))); +#558=IFCINDEXEDPOLYCURVE(#557,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#559=IFCCARTESIANPOINTLIST3D(((0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(234.604883030077,-2.27555025039633,116.784635922017),(106.755143428464,211.221301850635,124.640558206785),(-111.248878915162,190.322367615803,114.947133794192),(-237.831270028093,-8.00010634603516,128.775855378383),(-100.270176238738,-215.769217568787,125.810867478876),(119.462099550982,-204.983630257789,107.361497258729),(293.812208441652,-1.38140316613422,234.518996106616),(149.285748908342,237.85536900685,237.142238617636),(-128.669442698309,264.620489509016,232.197886828923),(-302.796993081665,-15.8702353869309,216.858549437001),(-129.994593982,-255.908530391129,224.288087824562),(156.848946491921,-255.540426617453,230.138858459826),(342.059657310639,-13.9201863639408,345.562622079605),(183.063506058514,287.010520333314,334.034709855096),(-174.841486686458,283.186710754793,342.748454812872),(-333.931215004918,5.05251004029153,343.928622398032),(-160.689309628578,-309.215094625832,345.008678116763),(168.026927501272,-294.763369437281,330.470445317765),(408.81640643433,-12.9086133381007,446.466497008241),(209.838392064792,360.736367088927,455.006265224505),(-202.749413384054,338.26558155028,449.933365685756),(-396.247911328827,-10.2892668569367,444.966297281442),(-201.416484522207,-357.132151703227,461.902051741776),(210.273781579568,-337.529797053763,456.507125630036),(339.228946865733,-2.0892624321781,555.588845825671),(178.855675758602,292.618146069253,565.650115036909),(-185.495732295886,296.34290457695,574.07973838219),(-347.607884527694,11.8254574527169,576.975874364524),(-180.328269595388,-297.193791780866,584.565653593263),(172.696843551619,-294.737759145271,557.43732739054),(287.87368906203,-1.2338795905141,682.550441876491),(141.560598127355,252.31798995476,686.951631263826),(-144.430002385357,238.90555447309,683.837383872801),(-273.215630979383,-2.71444181702932,670.844456267496),(-160.016093012831,-248.46667793394,671.332619852593),(131.074455637617,-262.119863171996,684.244792285448),(0.05,0.,800.),(0.025,0.0433012701892219,800.),(-0.025,0.0433012701892219,800.),(-0.05,6.12323399573677E-18,800.),(-0.025,-0.0433012701892219,800.),(0.025,-0.0433012701892219,800.))); +#560=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#561=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#562=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#563=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#564=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#565=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#566=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#567=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#568=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#569=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#570=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#571=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#572=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#573=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#574=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#575=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#576=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#577=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#578=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#579=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#580=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#581=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#582=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#583=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#584=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#585=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#586=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#587=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#588=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#589=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#590=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#591=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#592=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#593=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#594=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#595=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#596=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#597=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#598=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#599=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#600=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#601=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#602=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#603=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#604=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#605=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#606=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#607=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#608=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#609=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#610=IFCPOLYGONALFACESET(#559,$,(#560,#561,#562,#563,#564,#565,#566,#567,#568,#569,#570,#571,#572,#573,#574,#575,#576,#577,#578,#579,#580,#581,#582,#583,#584,#585,#586,#587,#588,#589,#590,#591,#592,#593,#594,#595,#596,#597,#598,#599,#600,#601,#602,#603,#604,#605,#606,#607,#608,#609),$); +#611=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#558)); +#612=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#610)); +#613=IFCGEOGRAPHICELEMENTTYPE('0sCZ5iWS904ODo2Mqo8nHu',$,'Shrum Medium (0.8m)',$,$,$,(#618,#623),$,$,.NOTDEFINED.); +#614=IFCCARTESIANPOINT((0.,0.,0.)); +#615=IFCDIRECTION((1.,0.,0.)); +#616=IFCDIRECTION((0.,0.,1.)); +#617=IFCAXIS2PLACEMENT3D(#614,#616,#615); +#618=IFCREPRESENTATIONMAP(#617,#612); +#619=IFCCARTESIANPOINT((0.,0.,0.)); +#620=IFCDIRECTION((1.,0.,0.)); +#621=IFCDIRECTION((0.,0.,1.)); +#622=IFCAXIS2PLACEMENT3D(#619,#621,#620); +#623=IFCREPRESENTATIONMAP(#622,#611); +#624=IFCCARTESIANPOINTLIST2D(((-527.907836914062,778.237060546875),(-682.544250488281,591.5634765625),(-651.098022460938,527.934692382812),(-784.266357421875,419.687042236328),(-828.305480957031,142.130966186523),(-583.854309082031,103.699897766113),(-834.57666015625,81.2796401977539),(-864.603149414062,-256.699737548828),(-725.465026855469,-315.496459960938),(-744.3994140625,-420.946807861328),(-620.988830566406,-602.632385253906),(-559.400024414062,-609.08935546875),(-388.391754150391,-794.232788085938),(-272.846649169922,-812.154357910156),(-289.969635009766,-723.3857421875),(-196.1328125,-857.777404785156),(332.257019042969,-789.601013183594),(277.4853515625,-616.622497558594),(430.038055419922,-728.541809082031),(824.687377929688,-331.956665039062),(744.837707519531,-264.395538330078),(853.079650878906,-220.593704223633),(870.117126464844,76.1236267089844),(677.610168457031,46.9147605895996),(819.219299316406,171.888565063477),(745.130676269531,496.995422363281),(597.18017578125,581.522033691406),(517.831604003906,735.313415527344),(357.861999511719,790.127380371094),(168.603179931641,676.222961425781),(304.510101318359,819.839904785156),(-11.8172159194946,881.828552246094),(-167.848968505859,847.278625488281),(-287.390197753906,795.186340332031))); +#625=IFCINDEXEDPOLYCURVE(#624,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#626=IFCCARTESIANPOINTLIST3D(((0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(0.,0.,0.),(527.860986817674,-5.11998806339175,262.765430824539),(240.199072714044,475.247929163929,280.441255965265),(-250.309977559115,428.225327135557,258.631051036932),(-535.120357563209,-18.0002392785791,289.745674601363),(-225.607896537159,-485.480739529771,283.07445182747),(268.789723989709,-461.213168080025,241.563368832141),(661.077468993717,-3.10815712380199,527.667741239885),(335.892935043769,535.174580265412,533.570036889682),(-289.506246071194,595.396101395287,522.445245365077),(-681.293234433747,-35.7080296205946,487.931736233252),(-292.4878364595,-575.794193380039,504.648197605265),(352.910129606822,-574.965959889268,517.812431534608),(769.634228948937,-31.3204193188668,777.515899679111),(411.892888631657,645.773670749957,751.578097173967),(-393.393345044531,637.170099198285,771.184023328963),(-751.345233761067,11.3681475906559,773.839400395571),(-361.550946664301,-695.733962908123,776.269525762717),(378.060586877863,-663.217581233882,743.558501964971),(919.836914477244,-29.0443800107266,1004.54961826854),(472.136382145783,811.656825950086,1023.76409675514),(-456.186180114122,761.097558488129,1012.35007279295),(-891.55780048986,-23.1508504281077,1001.17416888324),(-453.187090174966,-803.547341332261,1039.279616419),(473.116008554028,-759.442043370966,1027.14103266758),(763.265130447899,-4.70084047240072,1250.07490310776),(402.425270456854,658.39082865582,1272.71275883304),(-417.365397665745,666.771535298137,1291.67941135993),(-782.117740187312,26.6072792686131,1298.19571732018),(-405.738606589622,-668.686031506949,1315.27272058484),(388.567897991142,-663.159958076859,1254.23398662872),(647.715800389567,-2.77622907865673,1535.7384942221),(318.51134578655,567.715477398209,1545.64117034361),(-324.967505367052,537.537497564452,1538.6341137138),(-614.735169703612,-6.10749408831597,1509.40002660187),(-360.03620927887,-559.050025351365,1510.49839466833),(294.917525184638,-589.769692136991,1539.55078264226),(0.05,0.,1800.),(0.025,0.0433012701892219,1800.),(-0.025,0.0433012701892219,1800.),(-0.05,6.12323399573677E-18,1800.),(-0.025,-0.0433012701892219,1800.),(0.025,-0.0433012701892219,1800.))); +#627=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#628=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#629=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#630=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#631=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#632=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#633=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#634=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#635=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#636=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#637=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#638=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#639=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#640=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#641=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#642=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#643=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#644=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#645=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#646=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#647=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#648=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#649=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#650=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#651=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#652=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#653=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#654=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#655=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#656=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#657=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#658=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#659=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#660=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#661=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#662=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#663=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#664=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#665=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#666=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#667=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#668=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#669=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#670=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#671=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#672=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#673=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#674=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#675=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#676=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#677=IFCPOLYGONALFACESET(#626,$,(#627,#628,#629,#630,#631,#632,#633,#634,#635,#636,#637,#638,#639,#640,#641,#642,#643,#644,#645,#646,#647,#648,#649,#650,#651,#652,#653,#654,#655,#656,#657,#658,#659,#660,#661,#662,#663,#664,#665,#666,#667,#668,#669,#670,#671,#672,#673,#674,#675,#676),$); +#678=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#625)); +#679=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#677)); +#680=IFCGEOGRAPHICELEMENTTYPE('3mKZtHjt12Rh_uInKdrcGZ',$,'Shrub Big (1.8m)',$,$,$,(#685,#690),$,$,.NOTDEFINED.); +#681=IFCCARTESIANPOINT((0.,0.,0.)); +#682=IFCDIRECTION((1.,0.,0.)); +#683=IFCDIRECTION((0.,0.,1.)); +#684=IFCAXIS2PLACEMENT3D(#681,#683,#682); +#685=IFCREPRESENTATIONMAP(#684,#679); +#686=IFCCARTESIANPOINT((0.,0.,0.)); +#687=IFCDIRECTION((1.,0.,0.)); +#688=IFCDIRECTION((0.,0.,1.)); +#689=IFCAXIS2PLACEMENT3D(#686,#688,#687); +#690=IFCREPRESENTATIONMAP(#689,#678); +#691=IFCCARTESIANPOINT((0.,0.)); +#692=IFCAXIS2PLACEMENT2D(#691,$); +#693=IFCCIRCLE(#692,100.); +#694=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#693); +#695=IFCCARTESIANPOINT((0.,0.,0.)); +#696=IFCDIRECTION((0.,0.,1.)); +#697=IFCDIRECTION((1.,0.,0.)); +#698=IFCAXIS2PLACEMENT3D(#695,#696,#697); +#699=IFCDIRECTION((0.,0.,1.)); +#700=IFCEXTRUDEDAREASOLID(#694,#698,#699,460.); +#701=IFCCARTESIANPOINT((0.,0.,1130.)); +#702=IFCDIRECTION((0.,0.,1.)); +#703=IFCDIRECTION((1.,0.,0.)); +#704=IFCAXIS2PLACEMENT3D(#701,#702,#703); +#705=IFCSPHERE(#704,670.); +#706=IFCCARTESIANPOINT((0.,0.)); +#707=IFCAXIS2PLACEMENT2D(#706,$); +#708=IFCCIRCLE(#707,670.); +#709=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#708)); +#710=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#700,#705)); +#711=IFCGEOGRAPHICELEMENTTYPE('24b7xpbZb38f1BXogqUXhD',$,'Simple Tree (1.8m)',$,$,$,(#716,#721),$,$,.NOTDEFINED.); +#712=IFCCARTESIANPOINT((0.,0.,0.)); +#713=IFCDIRECTION((1.,0.,0.)); +#714=IFCDIRECTION((0.,0.,1.)); +#715=IFCAXIS2PLACEMENT3D(#712,#714,#713); +#716=IFCREPRESENTATIONMAP(#715,#710); +#717=IFCCARTESIANPOINT((0.,0.,0.)); +#718=IFCDIRECTION((1.,0.,0.)); +#719=IFCDIRECTION((0.,0.,1.)); +#720=IFCAXIS2PLACEMENT3D(#717,#719,#718); +#721=IFCREPRESENTATIONMAP(#720,#709); +#722=IFCCARTESIANPOINT((0.,0.)); +#723=IFCAXIS2PLACEMENT2D(#722,$); +#724=IFCCIRCLE(#723,100.); +#725=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#724); +#726=IFCCARTESIANPOINT((0.,0.,0.)); +#727=IFCDIRECTION((0.,0.,1.)); +#728=IFCDIRECTION((1.,0.,0.)); +#729=IFCAXIS2PLACEMENT3D(#726,#727,#728); +#730=IFCDIRECTION((0.,0.,1.)); +#731=IFCEXTRUDEDAREASOLID(#725,#729,#730,1710.); +#732=IFCCARTESIANPOINT((0.,0.,3355.)); +#733=IFCDIRECTION((0.,0.,1.)); +#734=IFCDIRECTION((1.,0.,0.)); +#735=IFCAXIS2PLACEMENT3D(#732,#733,#734); +#736=IFCSPHERE(#735,1645.); +#737=IFCCARTESIANPOINT((0.,0.)); +#738=IFCAXIS2PLACEMENT2D(#737,$); +#739=IFCCIRCLE(#738,1645.); +#740=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#739)); +#741=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#731,#736)); +#742=IFCGEOGRAPHICELEMENTTYPE('3VL8Zl9Xb2AwPSDD7jujfl',$,'Simple Tree (5m)',$,$,$,(#747,#752),$,$,.NOTDEFINED.); +#743=IFCCARTESIANPOINT((0.,0.,0.)); +#744=IFCDIRECTION((1.,0.,0.)); +#745=IFCDIRECTION((0.,0.,1.)); +#746=IFCAXIS2PLACEMENT3D(#743,#745,#744); +#747=IFCREPRESENTATIONMAP(#746,#741); +#748=IFCCARTESIANPOINT((0.,0.,0.)); +#749=IFCDIRECTION((1.,0.,0.)); +#750=IFCDIRECTION((0.,0.,1.)); +#751=IFCAXIS2PLACEMENT3D(#748,#750,#749); +#752=IFCREPRESENTATIONMAP(#751,#740); +#753=IFCCARTESIANPOINT((0.,0.)); +#754=IFCAXIS2PLACEMENT2D(#753,$); +#755=IFCCIRCLE(#754,220.); +#756=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#755); +#757=IFCCARTESIANPOINT((0.,0.,0.)); +#758=IFCDIRECTION((0.,0.,1.)); +#759=IFCDIRECTION((1.,0.,0.)); +#760=IFCAXIS2PLACEMENT3D(#757,#758,#759); +#761=IFCDIRECTION((0.,0.,1.)); +#762=IFCEXTRUDEDAREASOLID(#756,#760,#761,5790.); +#763=IFCCARTESIANPOINT((0.,0.,10395.)); +#764=IFCDIRECTION((0.,0.,1.)); +#765=IFCDIRECTION((1.,0.,0.)); +#766=IFCAXIS2PLACEMENT3D(#763,#764,#765); +#767=IFCSPHERE(#766,4605.); +#768=IFCCARTESIANPOINT((0.,0.)); +#769=IFCAXIS2PLACEMENT2D(#768,$); +#770=IFCCIRCLE(#769,4605.); +#771=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#770)); +#772=IFCSHAPEREPRESENTATION(#15,'Body','SweptSolid',(#762,#767)); +#773=IFCGEOGRAPHICELEMENTTYPE('3jGYIuJcL0phM2h4r9r95Q',$,'Simple Tree (15m)',$,$,$,(#778,#783),$,$,.NOTDEFINED.); +#774=IFCCARTESIANPOINT((0.,0.,0.)); +#775=IFCDIRECTION((1.,0.,0.)); +#776=IFCDIRECTION((0.,0.,1.)); +#777=IFCAXIS2PLACEMENT3D(#774,#776,#775); +#778=IFCREPRESENTATIONMAP(#777,#772); +#779=IFCCARTESIANPOINT((0.,0.,0.)); +#780=IFCDIRECTION((1.,0.,0.)); +#781=IFCDIRECTION((0.,0.,1.)); +#782=IFCAXIS2PLACEMENT3D(#779,#781,#780); +#783=IFCREPRESENTATIONMAP(#782,#771); +#784=IFCCARTESIANPOINTLIST2D(((-498.579620361328,735.001647949219),(-644.625122070312,558.698791503906),(-614.925903320312,498.60498046875),(-740.696044921875,396.37109375),(-782.288513183594,134.234802246094),(-551.41796875,97.9387969970703),(-788.211303710938,76.7640991210938),(-816.569641113281,-242.43864440918),(-685.161376953125,-297.968902587891),(-703.043884277344,-397.560852050781),(-586.489440917969,-569.15283203125),(-528.322204589844,-575.251037597656),(-366.814422607422,-750.108703613281),(-257.688507080078,-767.03466796875),(-273.860229492188,-683.197692871094),(-185.236541748047,-810.123107910156),(313.798278808594,-745.734313964844),(262.069519042969,-582.365661621094),(406.147064208984,-688.067260742188),(778.871398925781,-313.5146484375),(703.457824707031,-249.706893920898),(805.686340332031,-208.338500976562),(821.777282714844,71.8945388793945),(639.965148925781,44.3083839416504),(773.707153320312,162.339202880859),(703.734558105469,469.384552001953),(564.003479003906,549.215209960938),(489.063201904297,694.462707519531),(337.980773925781,746.2314453125),(159.236328125,638.655029296875),(287.592864990234,774.293273925781),(-11.1607036590576,832.838073730469),(-158.524017333984,800.207580566406),(-271.424072265625,751.009338378906))); +#785=IFCINDEXEDPOLYCURVE(#784,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#786=IFCCARTESIANPOINTLIST3D(((80.,0.,0.),(40.,69.2820323027551,0.),(-40.,69.2820323027551,0.),(-80.,9.79717439317883E-15,0.),(-40.,-69.2820323027551,0.),(40.,-69.2820323027551,0.),(80.,0.,280.),(40.,69.2820323027551,280.),(-40.,69.2820323027551,280.),(-80.,9.79717439317883E-15,280.),(-40.,-69.2820323027551,280.),(40.,-69.2820323027551,280.),(610.340986817674,-5.11998806339175,502.765430824539),(281.439072714044,546.677704468069,520.441255965265),(-291.549977559115,499.655102439697,498.631051036932),(-617.600357563209,-18.0002392785791,529.745674601363),(-266.847896537159,-556.910514833911,523.07445182747),(310.029723989709,-532.642943384166,481.563368832141),(699.397468993717,-3.10815712380199,727.667741239885),(355.052935043769,568.360673738432,733.570036889682),(-308.666246071194,628.582194868307,722.445245365077),(-719.613234433747,-35.7080296205946,687.931736233252),(-311.6478364595,-608.980286853059,704.648197605265),(372.070129606822,-608.152053362288,717.812431534607),(763.794228948937,-31.3204193188668,937.51589967911),(408.972888631657,640.716082391856,911.578097173966),(-390.473345044531,632.112510840184,931.184023328963),(-745.505233761067,11.3681475906559,933.839400395571),(-358.630946664301,-690.676374550022,936.269525762716),(375.140586877863,-658.159992875781,903.558501964971),(869.836914477244,-29.0443800107266,1124.54961826854),(447.136382145783,768.355555760864,1143.76409675514),(-431.186180114122,717.796288298907,1132.35007279295),(-841.55780048986,-23.1508504281077,1121.17416888324),(-428.187090174966,-760.246071143039,1159.279616419),(448.116008554028,-716.140773181744,1147.14103266758),(757.425130447899,-4.70084047240072,1330.07490310776),(399.505270456854,653.333240297718,1352.71275883304),(-414.445397665745,661.713946940036,1371.67941135993),(-776.277740187312,26.6072792686131,1378.19571732018),(-402.818606589622,-663.628443148848,1395.27272058484),(385.647897991142,-658.102369718758,1334.23398662872),(686.035800389567,-2.77622907865673,1575.7384942221),(337.67134578655,600.901570871229,1585.64117034361),(-344.127505367052,570.723591037471,1578.6341137138),(-653.055169703612,-6.10749408831596,1549.40002660187),(-379.19620927887,-592.236118824385,1550.49839466833),(314.077525184638,-622.955785610011,1579.55078264226),(0.05,0.,1800.),(0.025,0.0433012701892219,1800.),(-0.025,0.0433012701892219,1800.),(-0.05,6.12323399573677E-18,1800.),(-0.025,-0.0433012701892219,1800.),(0.025,-0.0433012701892219,1800.))); +#787=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#788=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#789=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#790=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#791=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#792=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#793=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#794=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#795=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#796=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#797=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#798=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#799=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#800=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#801=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#802=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#803=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#804=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#805=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#806=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#807=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#808=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#809=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#810=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#811=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#812=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#813=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#814=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#815=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#816=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#817=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#818=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#819=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#820=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#821=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#822=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#823=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#824=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#825=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#826=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#827=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#828=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#829=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#830=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#831=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#832=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#833=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#834=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#835=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#836=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#837=IFCPOLYGONALFACESET(#786,$,(#787,#788,#789,#790,#791,#792,#793,#794,#795,#796,#797,#798,#799,#800,#801,#802,#803,#804,#805,#806,#807,#808,#809,#810,#811,#812,#813,#814,#815,#816,#817,#818,#819,#820,#821,#822,#823,#824,#825,#826,#827,#828,#829,#830,#831,#832,#833,#834,#835,#836),$); +#838=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#785)); +#839=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#837)); +#840=IFCGEOGRAPHICELEMENTTYPE('1CLHhCfcnFaBY1EM4kLSOR',$,'Tree Small (1.8m)',$,$,$,(#845,#850),$,$,.NOTDEFINED.); +#841=IFCCARTESIANPOINT((0.,0.,0.)); +#842=IFCDIRECTION((1.,0.,0.)); +#843=IFCDIRECTION((0.,0.,1.)); +#844=IFCAXIS2PLACEMENT3D(#841,#843,#842); +#845=IFCREPRESENTATIONMAP(#844,#839); +#846=IFCCARTESIANPOINT((0.,0.,0.)); +#847=IFCDIRECTION((1.,0.,0.)); +#848=IFCDIRECTION((0.,0.,1.)); +#849=IFCAXIS2PLACEMENT3D(#846,#848,#847); +#850=IFCREPRESENTATIONMAP(#849,#838); +#851=IFCCARTESIANPOINTLIST2D(((-2932.8212890625,4323.5390625),(-3791.91259765625,3286.46362304688),(-3617.21118164062,2932.97045898438),(-4357.03564453125,2331.5947265625),(-4601.697265625,789.616455078125),(-3243.63500976562,576.110534667969),(-4636.537109375,451.553527832031),(-4803.35107421875,-1426.10961914062),(-4030.36108398438,-1752.75817871094),(-4135.55224609375,-2338.59326171875),(-3449.93798828125,-3347.95776367188),(-3107.77783203125,-3383.82958984375),(-2157.73193359375,-4412.404296875),(-1515.81469726562,-4511.96826171875),(-1610.94250488281,-4018.80981445312),(-1089.62670898438,-4765.43017578125),(1845.87219238281,-4386.67236328125),(1541.58532714844,-3425.68041992188),(2389.10034179688,-4047.45458984375),(4581.5966796875,-1844.20373535156),(4137.9873046875,-1468.86413574219),(4739.33154296875,-1225.52062988281),(4833.98388671875,422.909027099609),(3764.5009765625,260.637542724609),(4551.21826171875,954.936462402344),(4139.615234375,2761.08569335938),(3317.66748046875,3230.677734375),(2876.84228515625,4085.07470703125),(1988.12219238281,4389.5966796875),(936.684326171875,3756.79443359375),(1691.72277832031,4554.66650390625),(-65.6511993408203,4899.0478515625),(-932.494262695312,4707.103515625),(-1596.61218261719,4417.7021484375))); +#852=IFCINDEXEDPOLYCURVE(#851,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#853=IFCCARTESIANPOINTLIST3D(((220.,0.,0.),(110.,190.525588832576,0.),(-110.,190.525588832577,0.),(-220.,2.69422295812418E-14,0.),(-110.,-190.525588832576,0.),(110.,-190.525588832576,0.),(220.,0.,1830.),(110.,190.525588832576,1830.),(-110.,190.525588832577,1830.),(-220.,2.69422295812418E-14,1830.),(-110.,-190.525588832576,1830.),(110.,-190.525588832576,1830.),(3602.84155681395,-42.6665671949312,3758.28335210925),(1603.6589392837,3271.04318828699,3905.58189494864),(-1687.91647965929,2879.18817138389,3723.83018721253),(-3663.33631302674,-150.001993988159,3983.11871691612),(-1482.06580447633,-3356.31660800234,3927.52519380035),(1841.91436658091,-3154.08684592113,3581.5995021726),(4144.97890828097,-25.9013093650166,5704.3740341419),(2117.10779203141,3278.52951811646,5753.55983122354),(-1730.55205059328,3780.37552753208,5660.85323518517),(-4313.44362028123,-297.566913504955,5373.24065908662),(-1755.3986371625,-3617.02629407169,5512.5445038534),(2258.91774672351,-3610.12434831526,5622.24645326459),(4481.61857457447,-261.00349432389,7525.01344970687),(2466.44073859714,3708.28617613811,7308.86509549734),(-2312.27787537109,3636.58974654084,7472.24781345564),(-4329.21028134222,94.734563255466,7494.37595567738),(-2046.92455553584,-4124.62194412282,7514.62700040359),(2184.50489064885,-3853.65209683748,7242.03513542238),(5165.3076206437,-242.036500089388,9155.53253319023),(2684.46985121485,4598.74337345629,9315.65318724518),(-2551.55150095102,4177.41614460665,9220.53632089363),(-4929.6483374155,-192.923753567564,9127.40378831275),(-2526.55908479138,-4531.16433497441,9444.94918444402),(2692.6334046169,-4163.62018529695,9343.7943198489),(4428.54275373249,-39.1736706033394,10940.1480020885),(2387.54392047378,3813.42915868696,11128.7967997992),(-2512.04498054787,3883.26838070627,11286.8522375232),(-4585.64783489427,221.727327238442,11341.154787192),(-2415.15505491352,-3899.22251577971,11483.4631477308),(2272.06581659285,-3853.17190386229,10974.8070314298),(4033.63166991306,-23.1352423221394,13059.2493566128),(1972.26121488791,3549.70366088977,13141.7716576253),(-2026.06254472544,3298.22049560846,13083.3795190436),(-3758.79308086343,-50.8957840692999,12839.7621264441),(-2318.30174399058,-3477.4915604994,12848.9151936647),(1775.64604320532,-3733.48878371295,13091.0184267807),(0.05,0.,15000.),(0.025,0.0433012701892219,15000.),(-0.025,0.0433012701892219,15000.),(-0.05,6.12323399573677E-18,15000.),(-0.025,-0.0433012701892219,15000.),(0.025,-0.0433012701892219,15000.))); +#854=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#855=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#856=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#857=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#858=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#859=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#860=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#861=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#862=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#863=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#864=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#865=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#866=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#867=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#868=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#869=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#870=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#871=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#872=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#873=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#874=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#875=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#876=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#877=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#878=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#879=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#880=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#881=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#882=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#883=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#884=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#885=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#886=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#887=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#888=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#889=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#890=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#891=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#892=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#893=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#894=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#895=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#896=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#897=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#898=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#899=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#900=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#901=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#902=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#903=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#904=IFCPOLYGONALFACESET(#853,$,(#854,#855,#856,#857,#858,#859,#860,#861,#862,#863,#864,#865,#866,#867,#868,#869,#870,#871,#872,#873,#874,#875,#876,#877,#878,#879,#880,#881,#882,#883,#884,#885,#886,#887,#888,#889,#890,#891,#892,#893,#894,#895,#896,#897,#898,#899,#900,#901,#902,#903),$); +#905=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#852)); +#906=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#904)); +#907=IFCGEOGRAPHICELEMENTTYPE('1$Hd6qXnz8ff4y_T2Agko8',$,'Tree Big (15m)',$,$,$,(#912,#917),$,$,.NOTDEFINED.); +#908=IFCCARTESIANPOINT((0.,0.,0.)); +#909=IFCDIRECTION((1.,0.,0.)); +#910=IFCDIRECTION((0.,0.,1.)); +#911=IFCAXIS2PLACEMENT3D(#908,#910,#909); +#912=IFCREPRESENTATIONMAP(#911,#906); +#913=IFCCARTESIANPOINT((0.,0.,0.)); +#914=IFCDIRECTION((1.,0.,0.)); +#915=IFCDIRECTION((0.,0.,1.)); +#916=IFCAXIS2PLACEMENT3D(#913,#915,#914); +#917=IFCREPRESENTATIONMAP(#916,#905); +#918=IFCCARTESIANPOINTLIST2D(((-1466.41064453125,2161.76953125),(-1895.95629882812,1643.23181152344),(-1808.60559082031,1466.48522949219),(-2178.51782226562,1165.79736328125),(-2300.8486328125,394.808227539062),(-1621.81750488281,288.055267333984),(-2318.2685546875,225.776763916016),(-2401.67553710938,-713.054809570312),(-2015.18054199219,-876.379089355469),(-2067.77612304688,-1169.29663085938),(-1724.96899414062,-1673.97888183594),(-1553.88891601562,-1691.91479492188),(-1078.86596679688,-2206.2021484375),(-757.907348632812,-2255.98413085938),(-805.471252441406,-2009.40490722656),(-544.813354492188,-2382.71508789062),(922.936096191406,-2193.33618164062),(770.792663574219,-1712.84020996094),(1194.55017089844,-2023.72729492188),(2290.79833984375,-922.101867675781),(2068.99365234375,-734.432067871094),(2369.66577148438,-612.760314941406),(2416.99194335938,211.454513549805),(1882.25048828125,130.318771362305),(2275.60913085938,477.468231201172),(2069.8076171875,1380.54284667969),(1658.83374023438,1615.3388671875),(1438.42114257812,2042.53735351562),(994.061096191406,2194.79833984375),(468.342163085938,1878.39721679688),(845.861389160156,2277.33325195312),(-32.8255996704102,2449.52392578125),(-466.247131347656,2353.5517578125),(-798.306091308594,2208.85107421875))); +#919=IFCINDEXEDPOLYCURVE(#918,(IFCLINEINDEX((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,1))),$); +#920=IFCCARTESIANPOINTLIST3D(((110.,0.,0.),(55.,95.2627944162882,0.),(-55.,95.2627944162883,0.),(-110.,1.34711147906209E-14,0.),(-55.,-95.2627944162882,0.),(55.,-95.2627944162882,0.),(110.,0.,840.),(55.,95.2627944162882,840.),(-55.,95.2627944162883,840.),(-110.,1.34711147906209E-14,840.),(-55.,-95.2627944162882,840.),(55.,-95.2627944162882,840.),(1794.28051893798,-14.2221890649771,1449.90397451261),(831.219646427901,1604.18946900776,1499.0034887924),(-859.305493219764,1473.57113004006,1438.4195862137),(-1814.44543767558,-50.0006646627197,1524.8490961149),(-790.68860149211,-1632.61394224621,1506.31792174297),(910.638122193637,-1565.20402155248,1391.00935786706),(2054.99296942699,-8.63376978833887,2065.74372566635),(1042.36926401047,1675.96694458701,2082.13899136023),(-913.517350197761,1843.24894772555,2051.23679268077),(-2111.14787342708,-99.1889711683183,1955.36593398126),(-921.799545720834,-1788.79920323875,2001.80054890351),(1089.63924890784,-1786.49855465328,2038.36786537391),(2247.20619152482,-87.0011647746299,2639.76638799753),(1198.81357953238,1888.50119623031,2567.71693659435),(-1147.42595845703,1864.60238636456,2622.17784258045),(-2196.40342711407,31.5781877518221,2629.5538899877),(-1058.97485184528,-2027.27978555855,2636.30423822977),(1104.83496354962,-1936.9565031301,2545.44028323603),(2555.10254021457,-80.6788333631295,3150.41560630151),(1311.48995040495,2254.60229430579,3203.78915765315),(-1267.18383365034,2114.15988468925,3172.08353553597),(-2476.54944580517,-64.3079178558546,3141.03935800901),(-1258.85302826379,-2232.07594814517,3246.8878233861),(1314.2111348723,-2109.56123158602,3213.16953518773),(2229.51425124416,-13.0578902011131,3712.43028641044),(1172.51464015793,1923.54885707993,3775.31321898068),(-1214.01499351596,1946.82859775303,3827.99836488869),(-2281.88261163142,73.9091090794808,3846.09921477827),(-1181.71835163784,-1952.14664277751,3893.53533495789),(1134.02193886428,-1936.79643880504,3723.98329619088),(2017.87722330435,-7.71174744071313,4385.94026172807),(994.087071629305,1766.35832551144,4413.44769539892),(-1012.02084824181,1682.53060375101,4393.983649205),(-1926.26436028781,-16.9652613564332,4312.77785167185),(-1109.43391466353,-1742.28762538132,4315.82887407871),(928.548681068438,-1827.62003311917,4396.52995178405),(0.05,0.,5000.),(0.025,0.0433012701892219,5000.),(-0.025,0.0433012701892219,5000.),(-0.05,6.12323399573677E-18,5000.),(-0.025,-0.0433012701892219,5000.),(0.025,-0.0433012701892219,5000.))); +#921=IFCINDEXEDPOLYGONALFACE((1,2,3,4,5,6)); +#922=IFCINDEXEDPOLYGONALFACE((6,1,7,12)); +#923=IFCINDEXEDPOLYGONALFACE((1,2,8,7)); +#924=IFCINDEXEDPOLYGONALFACE((2,3,9,8)); +#925=IFCINDEXEDPOLYGONALFACE((3,4,10,9)); +#926=IFCINDEXEDPOLYGONALFACE((4,5,11,10)); +#927=IFCINDEXEDPOLYGONALFACE((5,6,12,11)); +#928=IFCINDEXEDPOLYGONALFACE((12,7,13,18)); +#929=IFCINDEXEDPOLYGONALFACE((7,8,14,13)); +#930=IFCINDEXEDPOLYGONALFACE((8,9,15,14)); +#931=IFCINDEXEDPOLYGONALFACE((9,10,16,15)); +#932=IFCINDEXEDPOLYGONALFACE((10,11,17,16)); +#933=IFCINDEXEDPOLYGONALFACE((11,12,18,17)); +#934=IFCINDEXEDPOLYGONALFACE((18,13,19,24)); +#935=IFCINDEXEDPOLYGONALFACE((13,14,20,19)); +#936=IFCINDEXEDPOLYGONALFACE((14,15,21,20)); +#937=IFCINDEXEDPOLYGONALFACE((15,16,22,21)); +#938=IFCINDEXEDPOLYGONALFACE((16,17,23,22)); +#939=IFCINDEXEDPOLYGONALFACE((17,18,24,23)); +#940=IFCINDEXEDPOLYGONALFACE((24,19,25,30)); +#941=IFCINDEXEDPOLYGONALFACE((19,20,26,25)); +#942=IFCINDEXEDPOLYGONALFACE((20,21,27,26)); +#943=IFCINDEXEDPOLYGONALFACE((21,22,28,27)); +#944=IFCINDEXEDPOLYGONALFACE((22,23,29,28)); +#945=IFCINDEXEDPOLYGONALFACE((23,24,30,29)); +#946=IFCINDEXEDPOLYGONALFACE((30,25,31,36)); +#947=IFCINDEXEDPOLYGONALFACE((25,26,32,31)); +#948=IFCINDEXEDPOLYGONALFACE((26,27,33,32)); +#949=IFCINDEXEDPOLYGONALFACE((27,28,34,33)); +#950=IFCINDEXEDPOLYGONALFACE((28,29,35,34)); +#951=IFCINDEXEDPOLYGONALFACE((29,30,36,35)); +#952=IFCINDEXEDPOLYGONALFACE((36,31,37,42)); +#953=IFCINDEXEDPOLYGONALFACE((31,32,38,37)); +#954=IFCINDEXEDPOLYGONALFACE((32,33,39,38)); +#955=IFCINDEXEDPOLYGONALFACE((33,34,40,39)); +#956=IFCINDEXEDPOLYGONALFACE((34,35,41,40)); +#957=IFCINDEXEDPOLYGONALFACE((35,36,42,41)); +#958=IFCINDEXEDPOLYGONALFACE((42,37,43,48)); +#959=IFCINDEXEDPOLYGONALFACE((37,38,44,43)); +#960=IFCINDEXEDPOLYGONALFACE((38,39,45,44)); +#961=IFCINDEXEDPOLYGONALFACE((39,40,46,45)); +#962=IFCINDEXEDPOLYGONALFACE((40,41,47,46)); +#963=IFCINDEXEDPOLYGONALFACE((41,42,48,47)); +#964=IFCINDEXEDPOLYGONALFACE((48,43,49,54)); +#965=IFCINDEXEDPOLYGONALFACE((43,44,50,49)); +#966=IFCINDEXEDPOLYGONALFACE((44,45,51,50)); +#967=IFCINDEXEDPOLYGONALFACE((45,46,52,51)); +#968=IFCINDEXEDPOLYGONALFACE((46,47,53,52)); +#969=IFCINDEXEDPOLYGONALFACE((47,48,54,53)); +#970=IFCINDEXEDPOLYGONALFACE((49,50,51,52,53,54)); +#971=IFCPOLYGONALFACESET(#920,$,(#921,#922,#923,#924,#925,#926,#927,#928,#929,#930,#931,#932,#933,#934,#935,#936,#937,#938,#939,#940,#941,#942,#943,#944,#945,#946,#947,#948,#949,#950,#951,#952,#953,#954,#955,#956,#957,#958,#959,#960,#961,#962,#963,#964,#965,#966,#967,#968,#969,#970),$); +#972=IFCSHAPEREPRESENTATION(#16,'Body','Curve2D',(#919)); +#973=IFCSHAPEREPRESENTATION(#15,'Body','Tessellation',(#971)); +#974=IFCGEOGRAPHICELEMENTTYPE('1t393Epk10ahdDnhnFR8sr',$,'Tree Medium (5m)',$,$,$,(#979,#984),$,$,.NOTDEFINED.); +#975=IFCCARTESIANPOINT((0.,0.,0.)); +#976=IFCDIRECTION((1.,0.,0.)); +#977=IFCDIRECTION((0.,0.,1.)); +#978=IFCAXIS2PLACEMENT3D(#975,#977,#976); +#979=IFCREPRESENTATIONMAP(#978,#973); +#980=IFCCARTESIANPOINT((0.,0.,0.)); +#981=IFCDIRECTION((1.,0.,0.)); +#982=IFCDIRECTION((0.,0.,1.)); +#983=IFCAXIS2PLACEMENT3D(#980,#982,#981); +#984=IFCREPRESENTATIONMAP(#983,#972); +ENDSEC; +END-ISO-10303-21; diff --git a/src/blenderbim/scripts/generate_furniture_library.py b/src/blenderbim/scripts/generate_furniture_library.py index a6153a30a3..2837096df7 100644 --- a/src/blenderbim/scripts/generate_furniture_library.py +++ b/src/blenderbim/scripts/generate_furniture_library.py @@ -25,18 +25,16 @@ from ifcopenshell.util.shape_builder import ShapeBuilder, V class LibraryGenerator: - def generate(self, output_filename="IFC4 EU Steel.ifc"): + def generate(self, library_name, output_filename="IFC4 EU Steel.ifc"): ifcopenshell.api.pre_listeners = {} ifcopenshell.api.post_listeners = {} self.materials = {} self.file = ifcopenshell.api.run("project.create_file") - self.project = ifcopenshell.api.run( - "root.create_entity", self.file, ifc_class="IfcProject", name=f"Non-structural assets library" - ) + self.project = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject", name=library_name) self.library = ifcopenshell.api.run( - "root.create_entity", self.file, ifc_class="IfcProjectLibrary", name=f"Non-structural assets library" + "root.create_entity", self.file, ifc_class="IfcProjectLibrary", name=library_name ) ifcopenshell.api.run( "project.assign_declaration", self.file, definition=self.library, relating_context=self.project @@ -1876,4 +1874,6 @@ class LibraryGenerator: if __name__ == "__main__": path = Path(__file__).parents[1] / "blenderbim/bim/data/libraries" - LibraryGenerator().generate(output_filename=str(path / "IFC4 Furniture Library.ifc")) + LibraryGenerator().generate( + "Non-structural assets library", output_filename=str(path / "IFC4 Furniture Library.ifc") + ) diff --git a/src/blenderbim/scripts/generate_landscape_library.py b/src/blenderbim/scripts/generate_landscape_library.py new file mode 100644 index 0000000000..3deecd9dd0 --- /dev/null +++ b/src/blenderbim/scripts/generate_landscape_library.py @@ -0,0 +1,403 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2024 @Andrej730 +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +import ifcopenshell +import ifcopenshell.api +import random +from math import cos, sin, tan, pi +from pathlib import Path +from itertools import chain +from ifcopenshell.util.shape_builder import ShapeBuilder, V +from collections import namedtuple +from mathutils import Vector, Matrix +from random import uniform + + +SimpleTreeParams = namedtuple("SimpleTreeParams", "plant_height crown_diameter trunk_diameter") +LowPolyTreeParams = namedtuple( + "LowPolyTreeParams", "plant_height crown_diameter crown_max_loc crown_taper trunk_height trunk_diameter random_seed" +) +PalmTreeParams = namedtuple("PalmTreeParams", "plant_height crown_diameter trunk_diameter") +TreePresetData = namedtuple("TreePresetData", "preset_class generator") + + +GeneratedGeometry = namedtuple("GeneratedGeometry", "items_2d items_3d") + + +def generate_low_poly_tree( + builder: ShapeBuilder, + crown_taper=0.5, + crown_max_loc=0.3, + plant_height=12.0, + trunk_height=2.0, + crown_diameter=4, + trunk_diameter=0.3, + random_seed=10, +) -> GeneratedGeometry: + unit_conversion = 1 / ifcopenshell.util.unit.calculate_unit_scale(builder.file) + random.seed(random_seed) + res = 6 + plant_height *= unit_conversion + trunk_height *= unit_conversion + crown_diameter *= unit_conversion + trunk_diameter *= unit_conversion + crown_height = plant_height - trunk_height + + def circle(center, r, res): + points = [] + for i in range(res): + # fmt: off + vert = ( + cos(i * 2 * pi / res) * r + center[0], + sin(i * 2 * pi / res) * r + center[1], + 0.0 + center[2] + ) + # fmt: on + points.append(vert) + return points + + def merge_lists(lists): + merged_list = [] + for i in range(len(lists)): + merged_list = merged_list + lists[i] + return merged_list + + def XY_scale(vert, scale): + vert_scaled = (vert[0] * scale, vert[1] * scale, vert[2]) + return vert_scaled + + def rand_add(vert, amp): + # fmt: off + vert_new = ( + vert[0] + uniform(-amp, amp), + vert[1] + uniform(-amp, amp), + vert[2] + uniform(-amp, amp) + ) + # fmt: on + return vert_new + + height_segments_trunk = 2 + height_segments_crown = 7 + height_segments_total = height_segments_trunk + height_segments_crown + + verts = [] + + # Trunk + for i in range(height_segments_trunk): + points = circle((0.0, 0.0, i * trunk_height), trunk_diameter / 2, res) + verts.append(points) + + # Crown + h_crown_max_loc = int((height_segments_crown - 1) * crown_max_loc) + crown_indices = [] + for i in range(0, h_crown_max_loc): + crown_indices.append(i) + for i in range(0, height_segments_crown - h_crown_max_loc): + crown_indices.append(h_crown_max_loc - i) + + my_min_val = min(crown_indices) + my_max_val = max(crown_indices) + + n_crown_taper = crown_taper * 0.8 + + crown_diameters = [] + for x in crown_indices: + crown_diameters.append(((x - my_min_val) / (my_max_val - my_min_val)) * n_crown_taper + (1 - n_crown_taper)) + + randomize_amplitude = plant_height / 50 + + crown_segment_height = crown_height / height_segments_crown + for i in range(0, height_segments_crown - 1): + points = circle( + (0.0, 0.0, trunk_height + (i + 1) * crown_segment_height), + crown_diameter * crown_diameters[i] / 2, + res, + ) + for i in range(0, len(points)): + points[i] = rand_add(points[i], randomize_amplitude) + verts.append(points) + + # Top + verts.append(circle((0.0, 0.0, plant_height), 0.05, res)) + + edge_loops = [] + for i in range(height_segments_total): + edge_loops.append(range(i * res, (i + 1) * res)) + + verts = merge_lists(verts) + + faces = [] + bottom = [*edge_loops[0]] + faces.append(bottom) + for i in range(height_segments_total - 1): + for j in range(res): + face = (edge_loops[i][j - 1], edge_loops[i][j], edge_loops[i + 1][j], edge_loops[i + 1][j - 1]) + faces.append(face) + top = [*edge_loops[-1]] + faces.append(top) + + verts_3D = [verts] + faces_3D = [faces] + + verts_2D = [ + [ + (-0.5865642428398132, 0.8647078275680542, 0.0), + (-0.7583824992179871, 0.6572927236557007, 0.0), + (-0.7234422564506531, 0.5865941047668457, 0.0), + (-0.8714070916175842, 0.46631893515586853, 0.0), + (-0.9203394055366516, 0.15792329609394073, 0.0), + (-0.6487269997596741, 0.11522211134433746, 0.0), + (-0.9273074269294739, 0.0903107076883316, 0.0), + (-0.9606701731681824, -0.2852219343185425, 0.0), + (-0.8060722351074219, -0.35055163502693176, 0.0), + (-0.8271104693412781, -0.4677186608314514, 0.0), + (-0.6899875998497009, -0.6695915460586548, 0.0), + (-0.6215555667877197, -0.6767659187316895, 0.0), + (-0.4315463900566101, -0.8824808597564697, 0.0), + (-0.30316293239593506, -0.9023936986923218, 0.0), + (-0.32218849658966064, -0.8037619590759277, 0.0), + (-0.21792533993721008, -0.9530860185623169, 0.0), + (0.36917445063591003, -0.877334475517273, 0.0), + (0.30831706523895264, -0.685136079788208, 0.0), + (0.4778200685977936, -0.8094909191131592, 0.0), + (0.9163193106651306, -0.368840754032135, 0.0), + (0.827597439289093, -0.29377281665802, 0.0), + (0.9478662610054016, -0.245104119181633, 0.0), + (0.9667968153953552, 0.08458180725574493, 0.0), + (0.7529001832008362, 0.05212751030921936, 0.0), + (0.9102436900138855, 0.19098728895187378, 0.0), + (0.8279229998588562, 0.5522171258926392, 0.0), + (0.6635335087776184, 0.6461355686187744, 0.0), + (0.5753684639930725, 0.8170149326324463, 0.0), + (0.3976244330406189, 0.8779193162918091, 0.0), + (0.18733686208724976, 0.7513588666915894, 0.0), + (0.338344544172287, 0.910933256149292, 0.0), + (-0.013130240142345428, 0.9798095226287842, 0.0), + (-0.18649885058403015, 0.9414206743240356, 0.0), + (-0.3193224370479584, 0.8835403919219971, 0.0), + ] + ] + edges_2D = [] + faces_2D = [] + + verts_2D_new = [] + for vert in verts_2D[0]: + verts_2D_new.append(XY_scale(vert, crown_diameter / 2)) + + range_of_verts = range(0, len(verts_2D[0])) + for i in range_of_verts: + edges_2D.append([range_of_verts[i - 1], i]) + faces_2D.append(i) + + verts_2D[0] = verts_2D_new + edges_2D = [edges_2D] + faces_2D = [[faces_2D]] + + verts_2D = [Vector(v).to_2d() for v in verts_2D[0]] + shape_2d = builder.polyline(points=verts_2D, closed=True) + shape_3d = builder.polygonal_face_set(points=verts_3D[0], faces=faces_3D[0]) + + return GeneratedGeometry((shape_2d,), (shape_3d,)) + + +def generate_simple_tree( + builder: ShapeBuilder, plant_height=2, crown_diameter=2, trunk_diameter=0.1 +) -> GeneratedGeometry: + unit_conversion = 1 / ifcopenshell.util.unit.calculate_unit_scale(builder.file) + plant_height *= unit_conversion + crown_diameter *= unit_conversion + trunk_diameter *= unit_conversion + + crown_radius = crown_diameter / 2 + + # 3d shape + trunk_base = builder.circle(radius=trunk_diameter / 2) + trunk = builder.extrude(trunk_base, magnitude=plant_height - crown_diameter) + crown_position = (0.0, 0.0, (plant_height - crown_radius)) + crown = builder.sphere(radius=crown_radius, center=crown_position) + + # 2d shape + shape_2D = builder.circle(radius=crown_radius) + + return GeneratedGeometry((shape_2D,), (trunk, crown)) + + +def generate_palm_tree( + builder: ShapeBuilder, plant_height=2, crown_diameter=5.8, trunk_diameter=0.1 +) -> GeneratedGeometry: + unit_conversion = 1 / ifcopenshell.util.unit.calculate_unit_scale(builder.file) + + palm_verts = [ + Vector((-3.6415634155273438, -3.8275668621063232, -1.0948246717453003)), + Vector((-0.3698049783706665, -1.805966854095459, 0.493910551071167)), + Vector((-1.6397790908813477, -0.5056067705154419, 0.04353363811969757)), + Vector((0.0, 0.0, 0.0)), + Vector((5.023162364959717, -1.6531240940093994, -1.0948246717453003)), + Vector((1.8090602159500122, 0.4589407444000244, 0.493910551071167)), + Vector((1.1666079759597778, -1.2413609027862549, 0.04353363811969757)), + Vector((1.6942416429519653, 5.038582801818848, -1.0948246717453003)), + Vector((-0.43215513229370117, 1.833944320678711, 0.493910551071167)), + Vector((1.2652605772018433, 1.1839056015014648, 0.04353363811969757)), + Vector((-4.577561378479004, 2.689336061477661, -1.0948246717453003)), + Vector((-1.8646581172943115, -0.0367276668548584, 0.493910551071167)), + Vector((-0.8873085975646973, 1.4957730770111084, 0.04353363811969757)), + ] + palm_faces = [(2, 1, 0), (2, 3, 1), (6, 5, 4), (6, 3, 5), (9, 8, 7), (9, 3, 8), (12, 11, 10), (12, 3, 11)] + # each segment starts with the last point from the previous + palm_segments_2d_ifc = [(3, 11, 10, 12, 3), (3, 1, 0, 2, 3), (3, 5, 4, 6, 3), (3, 8, 7, 9, 3)] + palm_segments_2d_ifc = [[i + 1 for i in segment] for segment in palm_segments_2d_ifc] # IFC indices start with 1 + + scale = Vector() + scale.xyz = crown_diameter / 11.6 + leaves_height = 0.493910551071167 * scale.z + plant_height -= leaves_height + for v in palm_verts: + v *= scale + v.z += plant_height + v *= unit_conversion + + plant_height *= unit_conversion + crown_diameter *= unit_conversion + trunk_diameter *= unit_conversion + + # 3d + leaves = builder.polygonal_face_set(palm_verts, palm_faces) + trunk_base = builder.circle(radius=trunk_diameter / 2) + trunk = builder.extrude(trunk_base, magnitude=plant_height) + + # 2d + remove_z = Vector((1, 1, 0)) + verts_2D = [v * remove_z for v in palm_verts] + ifc_points = builder.file.createIfcCartesianPointList2D(verts_2D) + ifc_segments = [] + for segment in palm_segments_2d_ifc: + ifc_segments.append(builder.file.createIfcLineIndex(segment)) + shape_2d = builder.file.createIfcIndexedPolyCurve(Points=ifc_points, Segments=ifc_segments) + return GeneratedGeometry((shape_2d,), (leaves, trunk)) + + +tree_presets = { + "simple": TreePresetData(SimpleTreeParams, generate_simple_tree), + "low_poly": TreePresetData(LowPolyTreeParams, generate_low_poly_tree), + "palm_tree": TreePresetData(PalmTreeParams, generate_palm_tree), +} + + +class LibraryGenerator: + def generate(self, library_name, output_filename="IFC4 EU Steel.ifc"): + ifcopenshell.api.pre_listeners = {} + ifcopenshell.api.post_listeners = {} + + self.materials = {} + + self.file = ifcopenshell.api.run("project.create_file") + self.project = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject", name=library_name) + self.library = ifcopenshell.api.run( + "root.create_entity", self.file, ifc_class="IfcProjectLibrary", name=library_name + ) + ifcopenshell.api.run( + "project.assign_declaration", self.file, definition=self.library, relating_context=self.project + ) + unit = ifcopenshell.api.run("unit.add_si_unit", self.file, unit_type="LENGTHUNIT", prefix="MILLI") + ifcopenshell.api.run("unit.assign_unit", self.file, units=[unit]) + + 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 = { + "model_body": ifcopenshell.api.run( + "context.add_context", + self.file, + context_type="Model", + context_identifier="Body", + target_view="MODEL_VIEW", + parent=model, + ), + "plan_body": ifcopenshell.api.run( + "context.add_context", + self.file, + context_type="Plan", + context_identifier="Body", + target_view="PLAN_VIEW", + parent=plan, + ), + } + + self.builder = ShapeBuilder(self.file) + builder = self.builder + + TreeData = namedtuple("TreeData", "tree_name preset_name preset_data") + trees = [ + TreeData("Cone Tree (1.8m)", "low_poly", (1.8, 1.13, 0.0, 1.0, 0.28, 0.16, 10)), + TreeData("Cone Tree (15m)", "low_poly", (15.0, 4.37, 0.0, 1.0, 0.74, 0.44, 10)), + TreeData("Cone Tree (5m)", "low_poly", (5.0, 1.7, 0.0, 1.0, 0.32, 0.22, 10)), + TreeData("Hedge Small (0.4m)", "low_poly", (0.4, 0.4, 0.49, 0.15, 0.0, 0.0, 10)), + TreeData("Hedge Medium (0.8m)", "low_poly", (0.8, 0.8, 0.49, 0.15, 0.0, 0.0, 10)), + TreeData("Hedge Big (1.8m)", "low_poly", (1.8, 1.8, 0.49, 0.15, 0.0, 0.0, 10)), + TreeData("Palm Tree (5m)", "palm_tree", (5.0, 8.02, 0.2)), + TreeData("Palm Tree (15m)", "palm_tree", (15.0, 16.64, 0.4)), + TreeData("Shrub Small (0.4m)", "low_poly", (0.4, 0.4, 0.535, 0.524, 0.0, 0.0, 10)), + TreeData("Shrum Medium (0.8m)", "low_poly", (0.8, 0.8, 0.535, 0.524, 0.0, 0.0, 10)), + TreeData("Shrub Big (1.8m)", "low_poly", (1.8, 1.8, 0.535, 0.524, 0.0, 0.0, 10)), + TreeData("Simple Tree (1.8m)", "simple", (1.8, 1.34, 0.2)), + TreeData("Simple Tree (5m)", "simple", (5.0, 3.29, 0.2)), + TreeData("Simple Tree (15m)", "simple", (15.0, 9.21, 0.44)), + TreeData("Tree Small (1.8m)", "low_poly", (1.8, 1.7, 0.5, 0.36, 0.28, 0.16, 10)), + TreeData("Tree Big (15m)", "low_poly", (15.0, 10.0, 0.5, 0.36, 1.83, 0.44, 10)), + TreeData("Tree Medium (5m)", "low_poly", (5.0, 5.0, 0.5, 0.36, 0.84, 0.22, 10)), + ] + + for tree_data in trees: + preset = tree_presets.get(tree_data.preset_name) + preset_data = preset.preset_class(*tree_data.preset_data)._asdict() + tree_geometry = preset.generator(builder, **preset_data) + self.create_explicit_type( + "IfcGeographicElementType", tree_data.tree_name, **self.get_representations(tree_geometry) + ) + + self.file.write(output_filename) + + def get_representations(self, generated_geometry: GeneratedGeometry): + representation_2d = self.builder.get_representation( + self.representations["plan_body"], items=generated_geometry.items_2d + ) + representation_3d = self.builder.get_representation( + self.representations["model_body"], items=generated_geometry.items_3d + ) + return { + "representation_3d": representation_3d, + "representation_2d": representation_2d, + } + + def create_explicit_type(self, ifc_class, name, representation_3d, representation_2d, **params): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=ifc_class, name=name) + for param, value in params.items(): + setattr(element, param, value) + + 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 + + +if __name__ == "__main__": + path = Path(__file__).parents[1] / "blenderbim/bim/data/libraries" + LibraryGenerator().generate("Landscape Assets Library", output_filename=str(path / "IFC4 Landscape Library.ifc")) diff --git a/src/ifcopenshell-python/ifcopenshell/util/shape_builder.py b/src/ifcopenshell-python/ifcopenshell/util/shape_builder.py index bde227e310..54b1974d8a 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/shape_builder.py +++ b/src/ifcopenshell-python/ifcopenshell/util/shape_builder.py @@ -47,7 +47,7 @@ round_vector_to_precision = lambda v, si_conversion: Vector([round_to_precision( class ShapeBuilder: - def __init__(self, ifc_file): + def __init__(self, ifc_file: ifcopenshell.file): self.file = ifc_file def polyline( @@ -164,8 +164,16 @@ class ShapeBuilder: """ return self.polyline(self.get_rectangle_coords(size, position), closed=True) - def circle(self, center: Vector = Vector((0.0, 0.0)).freeze(), radius=1.0): - # < returns IfcCircle + def circle(self, center: Vector = Vector((0.0, 0.0)).freeze(), radius: float = 1.0) -> ifcopenshell.entity_instance: + """ + :param center: circle 2D position, defaults to zero-vector + :param type: Vector, optional + :param radius: radius of the circle, defaults to 1.0 + :param type: float + + :return: IfcCircle + :rtype: ifcopenshell.entity_instance + """ ifc_center = self.file.createIfcAxis2Placement2D(self.file.createIfcCartesianPoint(center)) ifc_curve = self.file.createIfcCircle(ifc_center, radius) @@ -556,6 +564,24 @@ class ShapeBuilder: return processed_objects if (multiple_objects or multiple_transformations) else processed_objects[0] + def sphere(self, radius: float = 1.0, center: Vector = Vector((0, 0, 0)).freeze()) -> ifcopenshell.entity_instance: + """ + :param radius: radius of the sphere, defaults to 1.0 + :param type: float, optional + :param center: sphere position, defaults to zero-vector + :param type: Vector, optional + + :return: IfcSphere + :rtype: ifcopenshell.entity_instance + """ + + ifc_position = self.file.createIfcAxis2Placement3D( + self.file.createIfcCartesianPoint(center), # position + self.file.createIfcDirection((0.0, 0.0, 1.0)), # Z-axis / Axis + self.file.createIfcDirection((1.0, 0.0, 0.0)), # X-axis / RefDirection + ) + return self.file.createIfcSphere(Radius=radius, Position=ifc_position) + def extrude( self, profile_or_curve,