diff --git a/src/blenderbim/blenderbim/bim/data/assets/symbols.svg b/src/blenderbim/blenderbim/bim/data/assets/symbols.svg index 5aca6a35eb..4ae888d5e5 100644 --- a/src/blenderbim/blenderbim/bim/data/assets/symbols.svg +++ b/src/blenderbim/blenderbim/bim/data/assets/symbols.svg @@ -47,6 +47,13 @@ + + + + + + + diff --git a/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Demo Library.ifc b/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Demo Library.ifc index 190b13d9a4..7bec97bf36 100644 --- a/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Demo Library.ifc +++ b/src/blenderbim/blenderbim/bim/data/libraries/IFC4 Demo Library.ifc @@ -1,17 +1,17 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); -FILE_NAME('/dev/null','2023-09-02T16:09:02+10:00',(),(),'IfcOpenShell v0.7.0-fbd8ea1ed','IfcOpenShell v0.7.0-fbd8ea1ed','Nobody'); +FILE_NAME('/dev/null','2023-09-07T13:40:06+10:00',(),(),'IfcOpenShell v0.7.0-fbd8ea1ed','IfcOpenShell v0.7.0-fbd8ea1ed','Nobody'); FILE_SCHEMA(('IFC4')); ENDSEC; DATA; -#1=IFCPROJECT('1UlLTVwDzDvR$QNEAxFx6F',$,'BlenderBIM Demo',$,$,$,$,(#12,#16),#7); -#2=IFCPROJECTLIBRARY('3QN02XEh1FQh0fii364VEi',$,'BlenderBIM Demo Library',$,$,$,$,$,$); -#3=IFCRELDECLARES('0aiEyU5lL7mAdB5xwdXbUN',$,$,$,#1,(#2)); +#1=IFCPROJECT('1arVsMni92iPUaaryGTUz2',$,'BlenderBIM Demo',$,$,$,$,(#12,#16),#7); +#2=IFCPROJECTLIBRARY('1FfDG5b21DuBDOO4eUE9rF',$,'BlenderBIM Demo Library',$,$,$,$,$,$); +#3=IFCRELDECLARES('3tfDIC3Tf9wP8EUOoFeycK',$,$,$,#1,(#2)); #4=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); #5=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); #6=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); -#7=IFCUNITASSIGNMENT((#6,#4,#5)); +#7=IFCUNITASSIGNMENT((#5,#6,#4)); #8=IFCCARTESIANPOINT((0.,0.,0.)); #9=IFCDIRECTION((0.,0.,1.)); #10=IFCDIRECTION((1.,0.,0.)); @@ -25,82 +25,82 @@ DATA; #18=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Plan',*,*,*,*,#16,$,.PLAN_VIEW.,$); #19=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Plan',*,*,*,*,#16,$,.PLAN_VIEW.,$); #20=IFCMATERIAL('Unknown',$,$); -#21=IFCWALLTYPE('0Ir6HewafB2hnPRigxrUnM',$,'WAL50',$,$,$,$,$,$,.NOTDEFINED.); +#21=IFCWALLTYPE('2o8NqQQbHA5BeErrgwfr7d',$,'WAL50',$,$,$,$,$,$,.NOTDEFINED.); #22=IFCMATERIALLAYERSET((#24),$,$); -#23=IFCRELASSOCIATESMATERIAL('3S$YbWQCnDCA2tmoikSnrh',$,$,$,(#21),#22); +#23=IFCRELASSOCIATESMATERIAL('1Q$5DZKr98n82Eitz2dWey',$,$,$,(#21),#22); #24=IFCMATERIALLAYER(#20,0.05,$,$,$,$,$); -#25=IFCRELDECLARES('1eLCJqssP2kvQIdmPlRK19',$,$,$,#2,(#38,#82,#77,#42,#26,#48,#72,#59,#92,#30,#96,#63,#54,#87,#153,#34,#67,#21,#210)); -#26=IFCWALLTYPE('2oUFJayonDlBTcbJtxYFSv',$,'WAL100',$,$,$,$,$,$,.NOTDEFINED.); +#25=IFCRELDECLARES('1KXKUEn8z0g8lvyEsCTWD3',$,$,$,#2,(#38,#82,#77,#42,#26,#48,#72,#59,#92,#30,#96,#63,#21,#54,#87,#153,#34,#67,#210)); +#26=IFCWALLTYPE('3KlIOv_P9A79tkt8D_jq_m',$,'WAL100',$,$,$,$,$,$,.NOTDEFINED.); #27=IFCMATERIALLAYERSET((#29),$,$); -#28=IFCRELASSOCIATESMATERIAL('0n3vPKxufDgO48f4yfGtUd',$,$,$,(#26),#27); +#28=IFCRELASSOCIATESMATERIAL('32B9Wx8Z1FxhIN7m77MiHG',$,$,$,(#26),#27); #29=IFCMATERIALLAYER(#20,0.1,$,$,$,$,$); -#30=IFCWALLTYPE('0UDhWxnIXDMOxZ2yPDCUMP',$,'WAL200',$,$,$,$,$,$,.NOTDEFINED.); +#30=IFCWALLTYPE('2DqrSeel1AGw6h3b$ujafZ',$,'WAL200',$,$,$,$,$,$,.NOTDEFINED.); #31=IFCMATERIALLAYERSET((#33),$,$); -#32=IFCRELASSOCIATESMATERIAL('2Boxz3uaP0LOy6luKau2R0',$,$,$,(#30),#31); +#32=IFCRELASSOCIATESMATERIAL('2FeYUpt3D4tAvwgGmwXWZn',$,$,$,(#30),#31); #33=IFCMATERIALLAYER(#20,0.2,$,$,$,$,$); -#34=IFCWALLTYPE('20fPutWQrFyeMIiKxc$MkU',$,'WAL300',$,$,$,$,$,$,.NOTDEFINED.); +#34=IFCWALLTYPE('2jNdEOFIP1eQb3WZePlFGY',$,'WAL300',$,$,$,$,$,$,.NOTDEFINED.); #35=IFCMATERIALLAYERSET((#37),$,$); -#36=IFCRELASSOCIATESMATERIAL('2qAjlTTxjBkvdp80A9XdMZ',$,$,$,(#34),#35); +#36=IFCRELASSOCIATESMATERIAL('2bFeM6xevAwucuwMlauX77',$,$,$,(#34),#35); #37=IFCMATERIALLAYER(#20,0.3,$,$,$,$,$); -#38=IFCCOVERINGTYPE('100hdtcxzBdQATomAi0tv5',$,'COV10',$,$,$,$,$,$,.NOTDEFINED.); +#38=IFCCOVERINGTYPE('3310gCgH59w9tu$DfmiCEN',$,'COV10',$,$,$,$,$,$,.NOTDEFINED.); #39=IFCMATERIALLAYERSET((#41),$,$); -#40=IFCRELASSOCIATESMATERIAL('3tO1xRn9b06utMa1TZC$WW',$,$,$,(#38),#39); +#40=IFCRELASSOCIATESMATERIAL('3pTNmWd_jBoOWyHc8Yf4qI',$,$,$,(#38),#39); #41=IFCMATERIALLAYER(#20,0.01,$,$,$,$,$); -#42=IFCCOVERINGTYPE('1sO51oul95ABWezHr7P7Dk',$,'COV20',$,$,(#46),$,$,$,.NOTDEFINED.); +#42=IFCCOVERINGTYPE('2sksWFuPzCgeNk1ofXS6PZ',$,'COV20',$,$,(#46),$,$,$,.NOTDEFINED.); #43=IFCMATERIALLAYERSET((#45),$,$); -#44=IFCRELASSOCIATESMATERIAL('0w6lexCg19TuiqqTxo91zc',$,$,$,(#42),#43); +#44=IFCRELASSOCIATESMATERIAL('36rl5NddT1ux6ejkQAkT2z',$,$,$,(#42),#43); #45=IFCMATERIALLAYER(#20,0.02,$,$,$,$,$); -#46=IFCPROPERTYSET('3ytgFxH0571uBCG4mBNXI9',$,'EPset_Parametric',$,(#47)); +#46=IFCPROPERTYSET('2VZJ9xfdn1NeOY6uEmnnYW',$,'EPset_Parametric',$,(#47)); #47=IFCPROPERTYSINGLEVALUE('LayerSetDirection',$,IFCLABEL('AXIS2'),$); -#48=IFCCOVERINGTYPE('09GKC1aO56qwEPF9halcxJ',$,'COV30',$,$,(#52),$,$,$,.NOTDEFINED.); +#48=IFCCOVERINGTYPE('1uU6rxt95AC91lZ0jTRG6G',$,'COV30',$,$,(#52),$,$,$,.NOTDEFINED.); #49=IFCMATERIALLAYERSET((#51),$,$); -#50=IFCRELASSOCIATESMATERIAL('0rDrnpiX58DgQhcURj_WlB',$,$,$,(#48),#49); +#50=IFCRELASSOCIATESMATERIAL('2lFv4xQYr5bwtiSsMTVCgz',$,$,$,(#48),#49); #51=IFCMATERIALLAYER(#20,0.03,$,$,$,$,$); -#52=IFCPROPERTYSET('14u6OUyPL5y8O$QkEnB6Rr',$,'EPset_Parametric',$,(#53)); +#52=IFCPROPERTYSET('0HnrRhcd16Yfbgtci4sqCG',$,'EPset_Parametric',$,(#53)); #53=IFCPROPERTYSINGLEVALUE('LayerSetDirection',$,IFCLABEL('AXIS3'),$); -#54=IFCRAMPTYPE('2G4JrZ99j2B9SkIwWDk0sC',$,'RAM200',$,$,$,$,$,$,.NOTDEFINED.); +#54=IFCRAMPTYPE('3nonXCVn58jhVV08N8c97B',$,'RAM200',$,$,$,$,$,$,.NOTDEFINED.); #55=IFCMATERIALLAYERSET((#57),$,$); -#56=IFCRELASSOCIATESMATERIAL('2nNlFzNPj0_h6_NwdVJvW$',$,$,$,(#54),#55); +#56=IFCRELASSOCIATESMATERIAL('2NdIrmbUP6bh4x$p_RY31C',$,$,$,(#54),#55); #57=IFCMATERIALLAYER(#20,0.2,$,$,$,$,$); #58=IFCCIRCLEPROFILEDEF(.AREA.,$,$,0.3); -#59=IFCPILETYPE('3uIc5iHjP5Lel3X6KXyN8W',$,'P1',$,$,$,$,$,$,.NOTDEFINED.); +#59=IFCPILETYPE('2uuf5kq5TDDfO9jGN7XIHh',$,'P1',$,$,$,$,$,$,.NOTDEFINED.); #60=IFCMATERIALPROFILESET($,$,(#62),$); -#61=IFCRELASSOCIATESMATERIAL('13buLvs1r5vAyhgbabb2g1',$,$,$,(#59),#60); +#61=IFCRELASSOCIATESMATERIAL('3hi821Ffj8YR9yFjp226LU',$,$,$,(#59),#60); #62=IFCMATERIALPROFILE($,$,#20,#58,$,$); -#63=IFCSLABTYPE('2CbahfxvnFpPoHyMBpGTQm',$,'FLR150',$,$,$,$,$,$,.NOTDEFINED.); +#63=IFCSLABTYPE('2janmz3nH4P9IHaOVvGY_B',$,'FLR150',$,$,$,$,$,$,.NOTDEFINED.); #64=IFCMATERIALLAYERSET((#66),$,$); -#65=IFCRELASSOCIATESMATERIAL('2Irb7$9xL8YOXW99sF0SOp',$,$,$,(#63),#64); +#65=IFCRELASSOCIATESMATERIAL('0og5Zg4ib67g6XWgOgqBWy',$,$,$,(#63),#64); #66=IFCMATERIALLAYER(#20,0.2,$,$,$,$,$); -#67=IFCSLABTYPE('04dx2Vg4vEp9ZOKGI1ifWb',$,'FLR250',$,$,$,$,$,$,.NOTDEFINED.); +#67=IFCSLABTYPE('26UKpEaTb9fh4qrqi3Ymzj',$,'FLR250',$,$,$,$,$,$,.NOTDEFINED.); #68=IFCMATERIALLAYERSET((#70),$,$); -#69=IFCRELASSOCIATESMATERIAL('04tl3Me6T6xOb$WEvv_dL0',$,$,$,(#67),#68); +#69=IFCRELASSOCIATESMATERIAL('1BeBXPqen9TQEE42SxzhjF',$,$,$,(#67),#68); #70=IFCMATERIALLAYER(#20,0.3,$,$,$,$,$); #71=IFCRECTANGLEPROFILEDEF(.AREA.,'500x600',$,0.5,0.6); -#72=IFCCOLUMNTYPE('13rk_6wmDApeVQWfrArKbl',$,'C1',$,$,$,$,$,$,.NOTDEFINED.); +#72=IFCCOLUMNTYPE('1KnWzBBoLCNfJ3_J79LT7d',$,'C1',$,$,$,$,$,$,.NOTDEFINED.); #73=IFCMATERIALPROFILESET($,$,(#75),$); -#74=IFCRELASSOCIATESMATERIAL('0X3OUScT9E1BjOvJWiUrv3',$,$,$,(#72),#73); +#74=IFCRELASSOCIATESMATERIAL('1W8OWQjEL05gH5hEpve6Lh',$,$,$,(#72),#73); #75=IFCMATERIALPROFILE($,$,#20,#71,$,$); #76=IFCCIRCLEHOLLOWPROFILEDEF(.AREA.,'500.0x5.0 CHS',$,0.25,0.005); -#77=IFCCOLUMNTYPE('0IaS5T1Uv6DQu$BJ5I3bks',$,'C2',$,$,$,$,$,$,.NOTDEFINED.); +#77=IFCCOLUMNTYPE('33jPFERfL9bfTeWfTL5kZ7',$,'C2',$,$,$,$,$,$,.NOTDEFINED.); #78=IFCMATERIALPROFILESET($,$,(#80),$); -#79=IFCRELASSOCIATESMATERIAL('1HWcDe7a17WwPeKCHnckid',$,$,$,(#77),#78); +#79=IFCRELASSOCIATESMATERIAL('3czOrQw2v9BfS0PeQCrzWq',$,$,$,(#77),#78); #80=IFCMATERIALPROFILE($,$,#20,#76,$,$); #81=IFCRECTANGLEHOLLOWPROFILEDEF(.AREA.,'150x75x2.0 RHS',$,0.075,0.15,0.002,0.005,0.005); -#82=IFCCOLUMNTYPE('13p6$J2Jv84RFI5QAp6FTQ',$,'C3',$,$,$,$,$,$,.NOTDEFINED.); +#82=IFCCOLUMNTYPE('21YcNdKNj2$95U55yNx1Nw',$,'C3',$,$,$,$,$,$,.NOTDEFINED.); #83=IFCMATERIALPROFILESET($,$,(#85),$); -#84=IFCRELASSOCIATESMATERIAL('1GWCzHY657$9kUJrD0AEir',$,$,$,(#82),#83); +#84=IFCRELASSOCIATESMATERIAL('3n6Cru3xr6jvDptU9u7QEF',$,$,$,(#82),#83); #85=IFCMATERIALPROFILE($,$,#20,#81,$,$); #86=IFCISHAPEPROFILEDEF(.AREA.,'DEMO-I',$,0.1,0.2,0.005,0.01,0.005,$,$); -#87=IFCBEAMTYPE('1Y_PtOyJP9YfZkU59r$vs1',$,'B1',$,$,$,$,$,$,.NOTDEFINED.); +#87=IFCBEAMTYPE('2CsGpD$6nDCxWv9jXTtvq9',$,'B1',$,$,$,$,$,$,.NOTDEFINED.); #88=IFCMATERIALPROFILESET($,$,(#90),$); -#89=IFCRELASSOCIATESMATERIAL('2CfmfKJ0X45xijxsDUHZ85',$,$,$,(#87),#88); +#89=IFCRELASSOCIATESMATERIAL('2LJExc74j9rgBSBx51HDPK',$,$,$,(#87),#88); #90=IFCMATERIALPROFILE($,$,#20,#86,$,$); #91=IFCCSHAPEPROFILEDEF(.AREA.,'DEMO-C',$,0.2,0.1,0.0015,0.03,0.005); -#92=IFCBEAMTYPE('2qogXGNrb9EANilnZjnGjq',$,'B2',$,$,$,$,$,$,.NOTDEFINED.); +#92=IFCBEAMTYPE('32pHN2b0P0awGw$U8PpneO',$,'B2',$,$,$,$,$,$,.NOTDEFINED.); #93=IFCMATERIALPROFILESET($,$,(#95),$); -#94=IFCRELASSOCIATESMATERIAL('3$1pGIrVLA2RTOmJIsbelu',$,$,$,(#92),#93); +#94=IFCRELASSOCIATESMATERIAL('2wg8R1Drb2xhQ2Y_pRSh3c',$,$,$,(#92),#93); #95=IFCMATERIALPROFILE($,$,#20,#91,$,$); -#96=IFCWINDOWTYPE('1Dc9pAExL3fxL9jScEo2EF',$,'WT01',$,$,$,(#135,#152),$,$,.NOTDEFINED.,.NOTDEFINED.,$,$); +#96=IFCWINDOWTYPE('1Gg9HfZEr69u8SdWfDs2J3',$,'WT01',$,$,$,(#135,#152),$,$,.NOTDEFINED.,.NOTDEFINED.,$,$); #97=IFCINDEXEDPOLYGONALFACE((13,17,18,14)); #98=IFCINDEXEDPOLYGONALFACE((5,6,3,4)); #99=IFCINDEXEDPOLYGONALFACE((7,8,2,1)); @@ -157,7 +157,7 @@ DATA; #150=IFCDIRECTION((0.,0.,1.)); #151=IFCAXIS2PLACEMENT3D(#148,#150,#149); #152=IFCREPRESENTATIONMAP(#151,#147); -#153=IFCDOORTYPE('05Z1DhJjj11wczPRkvXSPE',$,'DT01',$,$,$,(#196,#209),$,$,.NOTDEFINED.,.NOTDEFINED.,$,$); +#153=IFCDOORTYPE('0NBUmPKyT9WecsIeYJrEqg',$,'DT01',$,$,$,(#196,#209),$,$,.NOTDEFINED.,.NOTDEFINED.,$,$); #154=IFCINDEXEDPOLYGONALFACE((17,16,15,14)); #155=IFCINDEXEDPOLYGONALFACE((2,3,29,28)); #156=IFCINDEXEDPOLYGONALFACE((27,28,29,30,32,31)); @@ -214,7 +214,7 @@ DATA; #207=IFCDIRECTION((0.,0.,1.)); #208=IFCAXIS2PLACEMENT3D(#205,#207,#206); #209=IFCREPRESENTATIONMAP(#208,#204); -#210=IFCFURNITURETYPE('3ZMmSB_rfBnhrBckPTFKvP',$,'BUN01',$,$,$,(#931,#952),$,$,.NOTDEFINED.,.NOTDEFINED.); +#210=IFCFURNITURETYPE('3Kyc6IyarAUw3_8fkNtXIg',$,'BUN01',$,$,$,(#931,#952),$,$,.NOTDEFINED.,.NOTDEFINED.); #211=IFCINDEXEDPOLYGONALFACE((187,278,44)); #212=IFCINDEXEDPOLYGONALFACE((21,52,60)); #213=IFCINDEXEDPOLYGONALFACE((91,100,31)); @@ -957,140 +957,161 @@ DATA; #950=IFCDIRECTION((0.,0.,1.)); #951=IFCAXIS2PLACEMENT3D(#948,#950,#949); #952=IFCREPRESENTATIONMAP(#951,#947); -#953=IFCTYPEPRODUCT('1hmWolVQb9buX2GhHwaVFB',$,'SETOUT-POINT',$,'IfcAnnotation/SYMBOL',(#954),$,$); -#954=IFCPROPERTYSET('2YNCFr62b8vhuhHGspQl4$',$,'EPset_Annotation',$,(#955)); +#953=IFCTYPEPRODUCT('0TBMBnD_b66QLUWKD9HLsc',$,'SETOUT-POINT',$,'IfcAnnotation/SYMBOL',(#954),$,$); +#954=IFCPROPERTYSET('2dQzX_K4r1Xet6dz9zBlgs',$,'EPset_Annotation',$,(#955)); #955=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('setout-point'),$); -#956=IFCTYPEPRODUCT('3H4oE1a_9AwQE8OFsCjdfh',$,'CONTROL-POINT',$,'IfcAnnotation/SYMBOL',(#957),$,$); -#957=IFCPROPERTYSET('0ARWSOH$z3kQDRkpEPHWCt',$,'EPset_Annotation',$,(#958)); +#956=IFCTYPEPRODUCT('0vo_7PU3H9ygTnrIipqPRI',$,'CONTROL-POINT',$,'IfcAnnotation/SYMBOL',(#957),$,$); +#957=IFCPROPERTYSET('3APQOw$FP1ivxp08UxHsl6',$,'EPset_Annotation',$,(#958)); #958=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('control-point'),$); -#959=IFCTYPEPRODUCT('3YDPnyrWn2wRWgRzb0V7Kx',$,'TRAVERSE-POINT',$,'IfcAnnotation/SYMBOL',(#960),$,$); -#960=IFCPROPERTYSET('1v$MzHU1b82hDqHdtz4e5y',$,'EPset_Annotation',$,(#961)); +#959=IFCTYPEPRODUCT('32V27G3$T1OO3TbXg6948F',$,'TRAVERSE-POINT',$,'IfcAnnotation/SYMBOL',(#960),$,$); +#960=IFCPROPERTYSET('0cTSYXMc9B$PTXVDrhBYYW',$,'EPset_Annotation',$,(#961)); #961=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('traverse-point'),$); -#962=IFCTYPEPRODUCT('31Em8$VNL0Mh$9EZ3pXjpL',$,'DASHED',$,'IfcAnnotation/LINEWORK',(#963),$,$); -#963=IFCPROPERTYSET('0K84$piRb31PmkAwZfP5kd',$,'EPset_Annotation',$,(#964)); +#962=IFCTYPEPRODUCT('2PXIC7Bg914gJhRh2XeGnN',$,'DASHED',$,'IfcAnnotation/LINEWORK',(#963),$,$); +#963=IFCPROPERTYSET('0RiYsOxp529gXnCkw44wF8',$,'EPset_Annotation',$,(#964)); #964=IFCPROPERTYSINGLEVALUE('Classes',$,IFCLABEL('dashed'),$); -#965=IFCTYPEPRODUCT('3P0K0gDxP4NgwnuLGqlyW6',$,'FINE',$,'IfcAnnotation/LINEWORK',(#966),$,$); -#966=IFCPROPERTYSET('179vwKcVv9uet4_kI4NT9G',$,'EPset_Annotation',$,(#967)); +#965=IFCTYPEPRODUCT('1Ou1kA3Vb4HhuNBvM0uGe0',$,'FINE',$,'IfcAnnotation/LINEWORK',(#966),$,$); +#966=IFCPROPERTYSET('2gzly9D0L1qPK2MExeXgRO',$,'EPset_Annotation',$,(#967)); #967=IFCPROPERTYSINGLEVALUE('Classes',$,IFCLABEL('fine'),$); -#968=IFCTYPEPRODUCT('0Rh30iszn41xBCgQJl2w2c',$,'THIN',$,'IfcAnnotation/LINEWORK',(#969),$,$); -#969=IFCPROPERTYSET('0bZV_Tby121uj5O3n08l1l',$,'EPset_Annotation',$,(#970)); +#968=IFCTYPEPRODUCT('3lx$KQPRbEZwbQ7Xdfm5gw',$,'THIN',$,'IfcAnnotation/LINEWORK',(#969),$,$); +#969=IFCPROPERTYSET('0vsVpqs6zArvA2bfBtvQew',$,'EPset_Annotation',$,(#970)); #970=IFCPROPERTYSINGLEVALUE('Classes',$,IFCLABEL('thin'),$); -#971=IFCTYPEPRODUCT('3ti_6xztr7qPp9dASz9vP4',$,'MEDIUM',$,'IfcAnnotation/LINEWORK',(#972),$,$); -#972=IFCPROPERTYSET('19ZhF3bxL07evL8gi27Kei',$,'EPset_Annotation',$,(#973)); +#971=IFCTYPEPRODUCT('00j$y97p903w2HOb35lAQ2',$,'MEDIUM',$,'IfcAnnotation/LINEWORK',(#972),$,$); +#972=IFCPROPERTYSET('240rEBDOn8PAvfnm_43s55',$,'EPset_Annotation',$,(#973)); #973=IFCPROPERTYSINGLEVALUE('Classes',$,IFCLABEL('medium'),$); -#974=IFCTYPEPRODUCT('2hlcxjzxv8zf0gh1md23xY',$,'THICK',$,'IfcAnnotation/LINEWORK',(#975),$,$); -#975=IFCPROPERTYSET('0wRtpbInzE2AkqX8RIreQr',$,'EPset_Annotation',$,(#976)); +#974=IFCTYPEPRODUCT('2tVdFGorj6dfrL4uA1kyW8',$,'THICK',$,'IfcAnnotation/LINEWORK',(#975),$,$); +#975=IFCPROPERTYSET('2IEGHncr1D$R8fKA9zCEJP',$,'EPset_Annotation',$,(#976)); #976=IFCPROPERTYSINGLEVALUE('Classes',$,IFCLABEL('thick'),$); -#977=IFCTYPEPRODUCT('1pefU$PA1ENw7kZG9T3mjr',$,'STRONG',$,'IfcAnnotation/LINEWORK',(#978),$,$); -#978=IFCPROPERTYSET('1RpJZBysn8shqevvAquPQ8',$,'EPset_Annotation',$,(#979)); +#977=IFCTYPEPRODUCT('1T5C$$ONTBB8A9a7vv0Gn6',$,'STRONG',$,'IfcAnnotation/LINEWORK',(#978),$,$); +#978=IFCPROPERTYSET('1gRomAS1L2WguA51ZI0E40',$,'EPset_Annotation',$,(#979)); #979=IFCPROPERTYSINGLEVALUE('Classes',$,IFCLABEL('strong'),$); -#980=IFCTYPEPRODUCT('1HKC8zCIv5_ef3dEfa$L5N',$,'DOOR-TAG',$,'IfcAnnotation/TEXT',(#981),(#1000),$); -#981=IFCPROPERTYSET('0aC8JrqFX6HhKUhjdLw4mN',$,'EPset_Annotation',$,(#982)); -#982=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('door-tag'),$); +#980=IFCTYPEPRODUCT('2LmKYrAEr2K8EwJyCAsyc4',$,'SETOUT-TAG',$,'IfcAnnotation/TEXT',(#981),(#1000),$); +#981=IFCPROPERTYSET('0nF9du8qDAF9aldqjCUsbX',$,'EPset_Annotation',$,(#982)); +#982=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('setout-tag'),$); #983=IFCCARTESIANPOINT((0.,0.,0.)); #984=IFCDIRECTION((0.,0.,1.)); #985=IFCDIRECTION((1.,0.,0.)); #986=IFCAXIS2PLACEMENT3D(#983,#984,#985); #987=IFCPLANAREXTENT(1000.,1000.); -#988=IFCTEXTLITERALWITHEXTENT('{{type.Name}}',#986,.RIGHT.,#987,'center'); +#988=IFCTEXTLITERALWITHEXTENT('E ``round({{easting}}, 0.001)``',#986,.RIGHT.,#987,'center'); #989=IFCCARTESIANPOINT((0.,0.,0.)); #990=IFCDIRECTION((0.,0.,1.)); #991=IFCDIRECTION((1.,0.,0.)); #992=IFCAXIS2PLACEMENT3D(#989,#990,#991); #993=IFCPLANAREXTENT(1000.,1000.); -#994=IFCTEXTLITERALWITHEXTENT('{{Name}}',#992,.RIGHT.,#993,'center'); +#994=IFCTEXTLITERALWITHEXTENT('N ``round({{northing}}, 0.001)``',#992,.RIGHT.,#993,'center'); #995=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#988,#994)); #996=IFCCARTESIANPOINT((0.,0.,0.)); #997=IFCDIRECTION((1.,0.,0.)); #998=IFCDIRECTION((0.,0.,1.)); #999=IFCAXIS2PLACEMENT3D(#996,#998,#997); #1000=IFCREPRESENTATIONMAP(#999,#995); -#1001=IFCTYPEPRODUCT('2Jy_wl$FX8h9mgYT1$Y9oc',$,'WINDOW-TAG',$,'IfcAnnotation/TEXT',(#1002),(#1015),$); -#1002=IFCPROPERTYSET('2ncCyO$LPCzv7kqXZK_Omh',$,'EPset_Annotation',$,(#1003)); -#1003=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('window-tag'),$); +#1001=IFCTYPEPRODUCT('1cdhVmqEPF6e13_TFOdlQw',$,'DOOR-TAG',$,'IfcAnnotation/TEXT',(#1002),(#1021),$); +#1002=IFCPROPERTYSET('1MUPGQolnDEgp0NxcMN56E',$,'EPset_Annotation',$,(#1003)); +#1003=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('door-tag'),$); #1004=IFCCARTESIANPOINT((0.,0.,0.)); #1005=IFCDIRECTION((0.,0.,1.)); #1006=IFCDIRECTION((1.,0.,0.)); #1007=IFCAXIS2PLACEMENT3D(#1004,#1005,#1006); #1008=IFCPLANAREXTENT(1000.,1000.); -#1009=IFCTEXTLITERALWITHEXTENT('{{Name}}',#1007,.RIGHT.,#1008,'center'); -#1010=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1009)); -#1011=IFCCARTESIANPOINT((0.,0.,0.)); +#1009=IFCTEXTLITERALWITHEXTENT('{{type.Name}}',#1007,.RIGHT.,#1008,'center'); +#1010=IFCCARTESIANPOINT((0.,0.,0.)); +#1011=IFCDIRECTION((0.,0.,1.)); #1012=IFCDIRECTION((1.,0.,0.)); -#1013=IFCDIRECTION((0.,0.,1.)); -#1014=IFCAXIS2PLACEMENT3D(#1011,#1013,#1012); -#1015=IFCREPRESENTATIONMAP(#1014,#1010); -#1016=IFCTYPEPRODUCT('1LTLrGzxH4qhuWGNeTlTRi',$,'SPACE-TAG',$,'IfcAnnotation/TEXT',(#1017),(#1042),$); -#1017=IFCPROPERTYSET('2JpTIsSZf3zQUWK48RLIcL',$,'EPset_Annotation',$,(#1018)); -#1018=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('space-tag'),$); -#1019=IFCCARTESIANPOINT((0.,0.,0.)); -#1020=IFCDIRECTION((0.,0.,1.)); -#1021=IFCDIRECTION((1.,0.,0.)); -#1022=IFCAXIS2PLACEMENT3D(#1019,#1020,#1021); -#1023=IFCPLANAREXTENT(1000.,1000.); -#1024=IFCTEXTLITERALWITHEXTENT('{{Name}}',#1022,.RIGHT.,#1023,'center'); +#1013=IFCAXIS2PLACEMENT3D(#1010,#1011,#1012); +#1014=IFCPLANAREXTENT(1000.,1000.); +#1015=IFCTEXTLITERALWITHEXTENT('{{Name}}',#1013,.RIGHT.,#1014,'center'); +#1016=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1009,#1015)); +#1017=IFCCARTESIANPOINT((0.,0.,0.)); +#1018=IFCDIRECTION((1.,0.,0.)); +#1019=IFCDIRECTION((0.,0.,1.)); +#1020=IFCAXIS2PLACEMENT3D(#1017,#1019,#1018); +#1021=IFCREPRESENTATIONMAP(#1020,#1016); +#1022=IFCTYPEPRODUCT('0OuDi3gRH2CxW9mrtE0vXw',$,'WINDOW-TAG',$,'IfcAnnotation/TEXT',(#1023),(#1036),$); +#1023=IFCPROPERTYSET('2X7dAo_1P5ruRnlKA4kIl6',$,'EPset_Annotation',$,(#1024)); +#1024=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('window-tag'),$); #1025=IFCCARTESIANPOINT((0.,0.,0.)); #1026=IFCDIRECTION((0.,0.,1.)); #1027=IFCDIRECTION((1.,0.,0.)); #1028=IFCAXIS2PLACEMENT3D(#1025,#1026,#1027); #1029=IFCPLANAREXTENT(1000.,1000.); -#1030=IFCTEXTLITERALWITHEXTENT('{{Description}}',#1028,.RIGHT.,#1029,'center'); -#1031=IFCCARTESIANPOINT((0.,0.,0.)); -#1032=IFCDIRECTION((0.,0.,1.)); +#1030=IFCTEXTLITERALWITHEXTENT('{{Name}}',#1028,.RIGHT.,#1029,'center'); +#1031=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1030)); +#1032=IFCCARTESIANPOINT((0.,0.,0.)); #1033=IFCDIRECTION((1.,0.,0.)); -#1034=IFCAXIS2PLACEMENT3D(#1031,#1032,#1033); -#1035=IFCPLANAREXTENT(1000.,1000.); -#1036=IFCTEXTLITERALWITHEXTENT('``round({{Qto_SpaceBaseQuantities.NetFloorArea}} or 0., 2)``',#1034,.RIGHT.,#1035,'center'); -#1037=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1024,#1030,#1036)); -#1038=IFCCARTESIANPOINT((0.,0.,0.)); -#1039=IFCDIRECTION((1.,0.,0.)); -#1040=IFCDIRECTION((0.,0.,1.)); -#1041=IFCAXIS2PLACEMENT3D(#1038,#1040,#1039); -#1042=IFCREPRESENTATIONMAP(#1041,#1037); -#1043=IFCTYPEPRODUCT('3Or$DhaVf6ygGBUpRb2PMs',$,'MATERIAL-TAG',$,'IfcAnnotation/TEXT',(#1044),(#1057),$); -#1044=IFCPROPERTYSET('2YfvIc6dPDdwWjERHZZlof',$,'EPset_Annotation',$,(#1045)); -#1045=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('rectangle-tag'),$); +#1034=IFCDIRECTION((0.,0.,1.)); +#1035=IFCAXIS2PLACEMENT3D(#1032,#1034,#1033); +#1036=IFCREPRESENTATIONMAP(#1035,#1031); +#1037=IFCTYPEPRODUCT('3WEV_9wQn6AQTESgjW36PH',$,'SPACE-TAG',$,'IfcAnnotation/TEXT',(#1038),(#1063),$); +#1038=IFCPROPERTYSET('02FAX8dIzAlunWD5ak$6sU',$,'EPset_Annotation',$,(#1039)); +#1039=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('space-tag'),$); +#1040=IFCCARTESIANPOINT((0.,0.,0.)); +#1041=IFCDIRECTION((0.,0.,1.)); +#1042=IFCDIRECTION((1.,0.,0.)); +#1043=IFCAXIS2PLACEMENT3D(#1040,#1041,#1042); +#1044=IFCPLANAREXTENT(1000.,1000.); +#1045=IFCTEXTLITERALWITHEXTENT('{{Name}}',#1043,.RIGHT.,#1044,'center'); #1046=IFCCARTESIANPOINT((0.,0.,0.)); #1047=IFCDIRECTION((0.,0.,1.)); #1048=IFCDIRECTION((1.,0.,0.)); #1049=IFCAXIS2PLACEMENT3D(#1046,#1047,#1048); #1050=IFCPLANAREXTENT(1000.,1000.); -#1051=IFCTEXTLITERALWITHEXTENT('{{material.Name}}',#1049,.RIGHT.,#1050,'center'); -#1052=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1051)); -#1053=IFCCARTESIANPOINT((0.,0.,0.)); +#1051=IFCTEXTLITERALWITHEXTENT('{{Description}}',#1049,.RIGHT.,#1050,'center'); +#1052=IFCCARTESIANPOINT((0.,0.,0.)); +#1053=IFCDIRECTION((0.,0.,1.)); #1054=IFCDIRECTION((1.,0.,0.)); -#1055=IFCDIRECTION((0.,0.,1.)); -#1056=IFCAXIS2PLACEMENT3D(#1053,#1055,#1054); -#1057=IFCREPRESENTATIONMAP(#1056,#1052); -#1058=IFCTYPEPRODUCT('01Hhk_DbjDROhyr91Hp$aV',$,'TYPE-TAG',$,'IfcAnnotation/TEXT',(#1059),(#1072),$); -#1059=IFCPROPERTYSET('0LyRD7lHr17uJo7XNzCvZq',$,'EPset_Annotation',$,(#1060)); -#1060=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('capsule-tag'),$); -#1061=IFCCARTESIANPOINT((0.,0.,0.)); -#1062=IFCDIRECTION((0.,0.,1.)); -#1063=IFCDIRECTION((1.,0.,0.)); -#1064=IFCAXIS2PLACEMENT3D(#1061,#1062,#1063); -#1065=IFCPLANAREXTENT(1000.,1000.); -#1066=IFCTEXTLITERALWITHEXTENT('{{type.Name}}',#1064,.RIGHT.,#1065,'center'); -#1067=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1066)); -#1068=IFCCARTESIANPOINT((0.,0.,0.)); +#1055=IFCAXIS2PLACEMENT3D(#1052,#1053,#1054); +#1056=IFCPLANAREXTENT(1000.,1000.); +#1057=IFCTEXTLITERALWITHEXTENT('``round({{Qto_SpaceBaseQuantities.NetFloorArea}}, 0.01)``',#1055,.RIGHT.,#1056,'center'); +#1058=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1045,#1051,#1057)); +#1059=IFCCARTESIANPOINT((0.,0.,0.)); +#1060=IFCDIRECTION((1.,0.,0.)); +#1061=IFCDIRECTION((0.,0.,1.)); +#1062=IFCAXIS2PLACEMENT3D(#1059,#1061,#1060); +#1063=IFCREPRESENTATIONMAP(#1062,#1058); +#1064=IFCTYPEPRODUCT('1evqvQLLL1zxdsIWqEn0lK',$,'MATERIAL-TAG',$,'IfcAnnotation/TEXT',(#1065),(#1078),$); +#1065=IFCPROPERTYSET('2KPJlGyer0UBmphfR7952k',$,'EPset_Annotation',$,(#1066)); +#1066=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('rectangle-tag'),$); +#1067=IFCCARTESIANPOINT((0.,0.,0.)); +#1068=IFCDIRECTION((0.,0.,1.)); #1069=IFCDIRECTION((1.,0.,0.)); -#1070=IFCDIRECTION((0.,0.,1.)); -#1071=IFCAXIS2PLACEMENT3D(#1068,#1070,#1069); -#1072=IFCREPRESENTATIONMAP(#1071,#1067); -#1073=IFCTYPEPRODUCT('0a8MHfTUzA5AV8H6p1bqC9',$,'NAME-TAG',$,'IfcAnnotation/TEXT',(#1074),(#1087),$); -#1074=IFCPROPERTYSET('2EboL9u1j68Q_Mp8dBa7ux',$,'EPset_Annotation',$,(#1075)); -#1075=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('capsule-tag'),$); -#1076=IFCCARTESIANPOINT((0.,0.,0.)); -#1077=IFCDIRECTION((0.,0.,1.)); -#1078=IFCDIRECTION((1.,0.,0.)); -#1079=IFCAXIS2PLACEMENT3D(#1076,#1077,#1078); -#1080=IFCPLANAREXTENT(1000.,1000.); -#1081=IFCTEXTLITERALWITHEXTENT('{{Name}}',#1079,.RIGHT.,#1080,'center'); -#1082=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1081)); -#1083=IFCCARTESIANPOINT((0.,0.,0.)); +#1070=IFCAXIS2PLACEMENT3D(#1067,#1068,#1069); +#1071=IFCPLANAREXTENT(1000.,1000.); +#1072=IFCTEXTLITERALWITHEXTENT('{{material.Name}}',#1070,.RIGHT.,#1071,'center'); +#1073=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1072)); +#1074=IFCCARTESIANPOINT((0.,0.,0.)); +#1075=IFCDIRECTION((1.,0.,0.)); +#1076=IFCDIRECTION((0.,0.,1.)); +#1077=IFCAXIS2PLACEMENT3D(#1074,#1076,#1075); +#1078=IFCREPRESENTATIONMAP(#1077,#1073); +#1079=IFCTYPEPRODUCT('3Nem6d4xX87O3deyWDi3AW',$,'TYPE-TAG',$,'IfcAnnotation/TEXT',(#1080),(#1093),$); +#1080=IFCPROPERTYSET('15bspgnA9CEuFox6xFjoTL',$,'EPset_Annotation',$,(#1081)); +#1081=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('capsule-tag'),$); +#1082=IFCCARTESIANPOINT((0.,0.,0.)); +#1083=IFCDIRECTION((0.,0.,1.)); #1084=IFCDIRECTION((1.,0.,0.)); -#1085=IFCDIRECTION((0.,0.,1.)); -#1086=IFCAXIS2PLACEMENT3D(#1083,#1085,#1084); -#1087=IFCREPRESENTATIONMAP(#1086,#1082); +#1085=IFCAXIS2PLACEMENT3D(#1082,#1083,#1084); +#1086=IFCPLANAREXTENT(1000.,1000.); +#1087=IFCTEXTLITERALWITHEXTENT('{{type.Name}}',#1085,.RIGHT.,#1086,'center'); +#1088=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1087)); +#1089=IFCCARTESIANPOINT((0.,0.,0.)); +#1090=IFCDIRECTION((1.,0.,0.)); +#1091=IFCDIRECTION((0.,0.,1.)); +#1092=IFCAXIS2PLACEMENT3D(#1089,#1091,#1090); +#1093=IFCREPRESENTATIONMAP(#1092,#1088); +#1094=IFCTYPEPRODUCT('0klFX9AjnEnPBkdIURv8XD',$,'NAME-TAG',$,'IfcAnnotation/TEXT',(#1095),(#1108),$); +#1095=IFCPROPERTYSET('1d53tifbv2rwcoFFJosiHf',$,'EPset_Annotation',$,(#1096)); +#1096=IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('capsule-tag'),$); +#1097=IFCCARTESIANPOINT((0.,0.,0.)); +#1098=IFCDIRECTION((0.,0.,1.)); +#1099=IFCDIRECTION((1.,0.,0.)); +#1100=IFCAXIS2PLACEMENT3D(#1097,#1098,#1099); +#1101=IFCPLANAREXTENT(1000.,1000.); +#1102=IFCTEXTLITERALWITHEXTENT('{{Name}}',#1100,.RIGHT.,#1101,'center'); +#1103=IFCSHAPEREPRESENTATION(#19,'Annotation','Annotation2D',(#1102)); +#1104=IFCCARTESIANPOINT((0.,0.,0.)); +#1105=IFCDIRECTION((1.,0.,0.)); +#1106=IFCDIRECTION((0.,0.,1.)); +#1107=IFCAXIS2PLACEMENT3D(#1104,#1106,#1105); +#1108=IFCREPRESENTATIONMAP(#1107,#1103); ENDSEC; END-ISO-10303-21; diff --git a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py index 23cbf1ab0f..0ded5f35e2 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py @@ -831,7 +831,9 @@ class SvgWriter: symbol_xml.attrib.pop("id") # NOTE: zip makes sure that we iterate over the shortest list for field, text_literal in zip(template_text_fields, text_literals): - field.text = tool.Drawing.replace_text_literal_variables(text_literal.Literal, product) + field.text = tool.Drawing.replace_text_literal_variables( + text_literal.Literal, product or element + ) field.attrib["class"] = classes_str if fill_bg: @@ -849,7 +851,7 @@ class SvgWriter: line_number = 0 for text_literal in text_literals: - text = tool.Drawing.replace_text_literal_variables(text_literal.Literal, product) + text = tool.Drawing.replace_text_literal_variables(text_literal.Literal, product or element) text_tags = self.create_text_tag( text, text_position_svg, @@ -883,7 +885,6 @@ class SvgWriter: symbol_position_svg = point * self.svg_scale self.svg.add(self.svg.use(f"#{svg_id}", insert=symbol_position_svg)) - def draw_point_annotation(self, obj, classes): x_offset = self.raw_width / 2 y_offset = self.raw_height / 2 diff --git a/src/blenderbim/blenderbim/tool/drawing.py b/src/blenderbim/blenderbim/tool/drawing.py index f9965d42b2..516f5c879a 100644 --- a/src/blenderbim/blenderbim/tool/drawing.py +++ b/src/blenderbim/blenderbim/tool/drawing.py @@ -895,7 +895,7 @@ class Drawing(blenderbim.core.tool.Drawing): literals = cls.get_text_literal(obj, return_list=True) cls.import_text_attributes(obj) for i, literal in enumerate(literals): - product = cls.get_assigned_product(tool.Ifc.get_entity(obj)) + product = cls.get_assigned_product(tool.Ifc.get_entity(obj)) or tool.Ifc.get_entity(obj) props.literals[i].value = cls.replace_text_literal_variables(literal.Literal, product) @classmethod diff --git a/src/ifcopenshell-python/ifcopenshell/util/geolocation.py b/src/ifcopenshell-python/ifcopenshell/util/geolocation.py index ca98fb7a96..d4737ac016 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/geolocation.py +++ b/src/ifcopenshell-python/ifcopenshell/util/geolocation.py @@ -75,6 +75,34 @@ def xyz2enh_ifc4x3( return (eastings, northings, height) +def auto_xyz2enh(ifc_file, x, y, z): + try: + conversion = ifc_file.by_type("IfcMapConversion") + except: + return (x, y, z) + if not conversion: + return (x, y, z) + conversion = conversion[0] + e = conversion.Eastings or 0 + n = conversion.Northings or 0 + h = conversion.OrthogonalHeight or 0 + xaa = conversion.XAxisAbscissa or 0 + xao = conversion.XAxisOrdinate or 0 + scale = conversion.Scale or 0 + map_unit = conversion.TargetCRS.MapUnit + if map_unit: + # Warning! This definition has changed in IFC4X3 such that map_unit no + # longer affects unit conversion, only the Scale attribute affects unit + # conversion. TODO: consolidate once IFC4X3 confirmed. + project_unit = ifcopenshell.util.unit.get_project_unit(ifc_file, "LENGTHUNIT") + map_prefix = getattr(map_unit, "Prefix", None) + project_prefix = getattr(project_unit, "Prefix", None) + e = ifcopenshell.util.unit.convert(e, map_prefix, map_unit.Name, project_prefix, project_unit.Name) + n = ifcopenshell.util.unit.convert(n, map_prefix, map_unit.Name, project_prefix, project_unit.Name) + h = ifcopenshell.util.unit.convert(h, map_prefix, map_unit.Name, project_prefix, project_unit.Name) + return xyz2enh(x, y, z, e, n, h, xaa, xao, scale) + + def auto_z2e(ifc_file, z): """Convert a Z coordinate to an elevation using model georeferencing data diff --git a/src/ifcopenshell-python/ifcopenshell/util/selector.py b/src/ifcopenshell-python/ifcopenshell/util/selector.py index ea41323999..de4902e39e 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/selector.py +++ b/src/ifcopenshell-python/ifcopenshell/util/selector.py @@ -22,6 +22,8 @@ import ifcopenshell.util import ifcopenshell.util.fm import ifcopenshell.util.unit import ifcopenshell.util.element +import ifcopenshell.util.placement +import ifcopenshell.util.geolocation import ifcopenshell.util.classification @@ -293,6 +295,8 @@ def set_element_value(ifc_file, element, query, value): return ifcopenshell.util.schema.reassign_class(ifc_file, element, value) elif key == "id": return + elif key in ("x", "y", "z", "easting", "northing", "elevation") and hasattr(element, "ObjectPlacement"): + return elif isinstance(element, ifcopenshell.entity_instance): if key == "Name" and element.is_a("IfcMaterialLayerSet"): key = "LayerSetName" # This oddity in the IFC spec is annoying so we account for it. @@ -818,6 +822,17 @@ class Selector: value = ifcopenshell.util.element.get_predefined_type(value) elif key == "id": value = value.id() + elif key in ("x", "y", "z", "easting", "northing", "elevation") and hasattr(value, "ObjectPlacement"): + if getattr(value, "ObjectPlacement", None): + matrix = ifcopenshell.util.placement.get_local_placement(value.ObjectPlacement) + xyz = matrix[:,3][:3] + if key in ("x", "y", "z"): + value = xyz["xyz".index(key)] + else: + enh = ifcopenshell.util.geolocation.auto_xyz2enh(element.wrapped_data.file, *xyz) + value = enh[("easting", "northing", "elevation").index(key)] + else: + value = None elif isinstance(value, ifcopenshell.entity_instance): if key == "Name" and value.is_a("IfcMaterialLayerSet"): key = "LayerSetName" # This oddity in the IFC spec is annoying so we account for it.