通过Blender玩转IFC
Play with IFC through Blender
Official Account: Non-Deconstructive · Author: Zhou Wenqi (Venchy)
Ifc模型 Ifc (Industry Foundation Classes), as the most popular general BIM data standard at the moment, contains all aspects of data in the entire life cycle of construction projects, from design planning to construction operation and maintenance. IFC was started in 1994, developed and maintained by the buildingSMART organization (formerly the International Alliance for Interoperability, IAI), and has been registered with the International Organization for Standardization. The latest version of the standard number is ISO 16739-1:2018. 常见的Ifc文件都是.ifc文件,Ifc架构采用EXPRESS语言定义,EXPRESS语言是由STEP开发的概念性架构语言。EXPRESS用于面向对象的信息描述语言,处于STEP的基础和核心地位。它将IFC模型的结构描述为:规范的类,与类相关联的属性,类的约束,以及类与其他约束之间的关系。IFC文件是一种纯文本文件格式,用普通的文本编辑器就可以查看和编辑。但是面对这样一个庞大的体系,我们直接去通过文本的方式去阅读理解这样一个ifc文件,显然是不现实的。 ISO-10303-21;HEADER;FILE_DESCRIPTION ((”), ‘2;1’);FILE_NAME (”, ‘2023-06-06T11:17:27’, (”), (”), ‘Xbim File Processor version 4.0.0.0’, ‘Xbim version 4.0.0.0’, ”);FILE_SCHEMA ((‘IFC4’));ENDSEC;DATA;#1=IFCPROJECT(‘1p5jvFiCb5_u2v,‘ThCAD2IFCProject’,,,(#14,#17,#18),#2);#2=IFCUNITASSIGNMENT((#3,#4,#5,#6,#7,#8,#9,#10,#11));#3=IFCSIUNIT(,.LENGTHUNIT.,.MILLI.,.METRE.);#4=IFCSIUNIT(,.AREAUNIT.,,.SQUARE_METRE.);#5=IFCSIUNIT(*,.VOLUMEUNIT.,,.CUBIC_METRE.);#6=IFCSIUNIT(,.SOLIDANGLEUNIT.,,.STERADIAN.);#7=IFCSIUNIT(*,.PLANEANGLEUNIT.,,.RADIAN.);#8=IFCSIUNIT(,.MASSUNIT.,,.GRAM.);#9=IFCSIUNIT(*,.TIMEUNIT.,,.SECOND.);#10=IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,,.DEGREE_CELSIUS.);#11=IFCSIUNIT(*,.LUMINOUSINTENSITYUNIT.,,.LUMEN.);#12=IFCCARTESIANPOINT((0.,0.,0.));#13=IFCAXIS2PLACEMENT3D(#12,);#14=IFCGEOMETRICREPRESENTATIONCONTEXT(‘Building Model’,‘Model’,3,1.E-05,#13,);#15=IFCCARTESIANPOINT((0.,0.));#16=IFCAXIS2PLACEMENT2D(#15,);#17=IFCGEOMETRICREPRESENTATIONCONTEXT(‘Building Plan View’,‘Plan’,2,1.E-05,#16,);#20=IFCCARTESIANPOINT((0.,0.,0.));#19=IFCAXIS2PLACEMENT3D(#20,,);#18=IFCGEOMETRICREPRESENTATIONCONTEXT(,,3,1.E-05,#19,);#24=IFCDIRECTION((0.,0.,1.));#25=IFCDIRECTION((1.,0.,0.));…#867296=IFCRELAGGREGATES(,,#861849,(#862157));#867297=IFCRELAGGREGATES(,,#28,(#37,#57,#77,#12510,#20708,#45036,#67176,#89316,#111456,#133596,#155736,#177876,#200016,#222156,#244296,#266436,#288576,#310716,#328907,#350723,#372863,#395003,#417143,#439283,#461423,#483563,#505703,#527843,#549983,#572123,#594263,#616403,#638543,#660683,#678874,#700690,#722830,#744970,#767110,#789250,#811390,#833530,#855670));ENDSEC;END-ISO-10303-21;``` 当下很多建筑设计相关的软件都包含了IFC接口,如Revit,Archicad,SAP2000等等。但是,传统设计软件的IFC接口基本只是着眼于软件本身的功能以及它能提供的数据。至于这些软件导出的Ifc文件,究竟能为建筑师或者工程师创造那些价值,似乎并不是这些软件特别关心的问题。即使我们要使用IFC模型,也需要将IFC模型再导入相关软件进行进一步的操作。IFC只是作为一个传输数据的管道,中间会出现数据失真,不同平台之间衔接不能完全匹配等问题。 那么,是不是有什么办法让我们直接通过可视化的手段查看和编辑ifc文件中的模型呢?很多朋友非常熟悉的一款查看ifc模型的软件是bimvision。我们可以直接通过这款软件打开ifc模型并查看ifc模型中的各种信息。但是这款软件仅限于查看ifc模型中的信息,并不能实现对ifc模型的数据收集,分析和处理,也不能实现对ifc模型的修改。虽然在它的架构下,工程师可以开发一些插件满足自己个性化的需求,但是这个门槛还是比较高的。

In order to solve the above problems, the editor here recommends the Blender+BlenderBim solution to help you easily view and modify the ifc model, and also quickly parse the ifc model related data so that we can make further decisions. Blender is an open source, free, full-featured 3D software that supports Windows, Mac and Linux systems. Functions include modeling, materials, lighting, real-time rendering, 3D animation, sculpting, material drawing, post-production synthesis, green screen keying, camera tracking, physical effects simulation, etc. BlenderBIM is an IFC plug-in based on Blender. Users can use this plug-in to create an ifc model of a building in Blender, edit the relevant attributes of the ifc model, and obtain the relevant data of the ifc model. Installation of Blender and BlenderBim Blender下载地址: [Download — blender.org] (https://www.blender.org/download/) BlenderBim下载地址: [Download - install the BlenderBIM Add-on for Windows, Mac, and Linux] (https://blenderbim.org/download.html) After installing Blender, click Edit=》Preferences

Click install under the add-ons tab and download the BlenderBim plug-in before installation. Click the radio button before the plug-in name to start the BlenderBim plug-in.

After the installation is complete, click on the File menu of Blender, and commands such as New Ifc Project and Open Ifc Project will appear. At this point the BlenderBim plug-in is successfully installed. On the left side of the software interface, there are also many green icons used to create components in the Ifc model.

模型的查看与编辑 打开模型后,Ifc模型中所有的构件都会显示在软件窗口左上角的Outliner面板上。面板上显示的Ifc模型对象与Ifc的数据结构相匹配。以下例子中,根目录是IfcProject,下级目录为IfcSite=》IfcBuilding=>IfcBuildingStorey=>IfcElement(包含IfcWall,IfcSpace等等)。

Double-click any component under the interface, and we can view the properties of the corresponding component in the sense property window on the right side of the Blender interface. A series of attributes of the corresponding component, including GlobalId, Attributes, Properties, Quantities, etc., can be viewed from this window. We can even modify related properties, or the coordinates, dimensions, etc. of related objects through this window.

Creation of models and components Click New Ifc Project in the File menu to create a new Ifc model.

You can create a cube through the Add menu of the view form.

立方体创建完成后,通过Ifc属性界面指定几何体的类型及相关参数。比如我们将该立方体指定为IfcColumn,这时,该立方体就作为柱子,存储与Ifc模型中。只要想办法创建各个建筑构件的几何体,就可以通过BlenderBIM,赋予其Ifc相关的属性。

We can also create components through some of the preset buttons in BlenderBim. For example, click the Create Wall button and follow the guidance of the window to create components with corresponding coordinates and corresponding geometric dimensions.

Python activates your Ifc 简单的脚本 Scripting is an important module of Blender. We can enter a Python script in the Scripting form and interact with the current model through the Python script. Click Scripting, then click New. At this time we can enter the corresponding Python code.

We can try to obtain the properties of the components in the ifc model through the following piece of code: import ifcopenshell.utilimport ifcopenshell.util.element model = ifcopenshell.open(r’F:\2024\ifc\AC20-FZK-Haus.ifc’)wall=model.by_guid(‘16DNNqzfP2thtfaOflvsKA’)print(ifcopenshell.util.element.get_psets(wall)) 其中,model.by_guid中的guid可以通过点选查看对应墙体的数据获得。

执行该脚本后,可以查看当前墙体的pest数据: {‘Pset_WallCommon’: {‘ThermalTransmittance’: 0.4, ‘id’: 27639}, ‘AC_Pset_Name’: {‘Name’: ‘Wand-Ext-ERDG-4’, ‘id’: 27647}, ‘ArchiCADProperties’: {‘Komplette Element-ID’: ‘Wand-Ext-ERDG-4’, ‘Kompakte Element-ID’: ‘Wand-Ext-ERDG-4’, ‘Name des Sachmerkmal-Objekts’: ”, ‘Ursprungsgeschoss’: ‘Erdgeschoss’, ‘Raumname’: ‘Küche’, ‘Raumnummer’: ‘6’, ‘Ebene’: ‘Außenwände’, ‘Typ’: ‘Wand’, ‘Geschützt’: False, ‘Baustoff / Mehrschichtiger Aufbau / Profil / Schraffur’: ‘Leichtbeton 102890359’, ‘Etikettentext’: ”, ‘Eindeutige ID’: ‘A6C3DE63-3731-4F6A-947E-DE8A8295779F’, ‘Verknüpfte Änderungen’: ”, ‘Tragende Funktion’: ‘Nicht definiert’, ‘Lage’: ‘Nicht definiert’, ‘Element-Klassifizierung’: ‘Wand’, ‘Umbau-Status’: ‘Bestand’, ‘Anzeigen auf Umbau-Filter’: ‘Alle relevanten Filter’, ‘Struktur - Typ’: ‘Einfach’, ‘ARCHICAD IFC ID’: ‘16DNNqzfP2thtfaOflvsKA’, ‘Externe IFC ID’: ”, ‘Baustoff/Mehrschicht/Profil’: ‘Leichtbeton 102890359’, ‘Außenseite Oberfläche’: ‘Anstrich’, ‘Innenseite Oberfläche’: ‘Anstrich’, ‘Oberfläche Kante’: ‘Anstrich’, ‘Äußerer Neigungswinkel’: 90.0, ‘Innerer Neigungswinkel’: 90.0, ‘Wand Neigungstyp’: ‘gerade’, ‘Lage der Referenzlinie’: ‘Außen’, ‘Geschoss für Oberkantenverknüpfung’: ‘Nicht verknüpft’, ‘Geometriemethode’: ‘Uni’, ‘id’: 27684}, ‘BaseQuantities’: {‘Length’: 11.7, ‘Height’: 2.7, ‘Width’: 0.3, ‘GrossFootprintArea’: 3.51, ‘NetFootprintArea’: 3.51, ‘GrossSideArea’: 31.59, ‘NetSideArea’: 22.01625, ‘GrossVolume’: 9.477, ‘NetVolume’: 6.604875, ‘id’: 27729}, ‘ArchiCADQuantities’: {‘Höhenangabe zum Projekt-Nullpunkt’: 0.0, ‘Höhe zu Geschoss’: 0.0, ‘Höhe’: 2.7, ‘Oberflächenbereich’: 22.82625, ‘Netto-Volumen’: 6.604875, ‘Fläche’: 3.51, ‘Dicke’: 0.3, ‘Wandlänge an der Außenseite’: 12.0, ‘Wandlänge an der Innenseite’: 11.4, ‘Netto-Oberflächenbereich an der Außenseite’: 22.82625, ‘Netto-Oberflächenbereich an der Innenseite’: 21.20625, ‘Netto-Oberflächenbereich an den Kanten’: 8.70802597104, ‘Konditionales Volumen’: 6.604875, ‘Anzahl der Türen’: 1.0, ‘Anzahl der Fenster’: 2.0, ‘Anzahl der Durchbrüche (Anzahl der leeren Öffnungen)’: 0.0, ‘Anzahl der Stützen’: 0.0, ‘Kombinierte Breite der Türen’: 2.01, ‘Kombinierte Breite der Fenster’: 4.0, ‘Wandstärke am Ende’: 0.3, ‘Minimale Höhe der Wand’: 2.7, ‘Maximale Höhe der Wand’: 2.7, ‘Länge der Wand in der Achse’: 11.7, ‘Fläche der Wand’: 3.51, ‘Umfang der Wand’: 24.2485281374, ‘Brutto-Wandoberflächenbereich an der Innenseite’: 30.78, ‘Brutto-Wandoberflächenbereich an der Außenseite’: 32.4, ‘Brutto-Volumen der Wand ’: 9.477, ‘Analytische Oberfläche der Öffnungen an der Innenseite’: 9.57375, ‘Analytische Oberfläche der Öffnungen an der Außenseite’: 9.57375, ‘Analytisches Volumen der Öffnungen in der Wand’: 2.872125, ‘Wand-Schichtdicke an der Außenseite’: 0.0, ‘Wand-Schichtdicke an der Innenseite’: 0.0, ‘Dämmungsschichtdicke’: 0.0, ‘Luftschichtdicke’: 0.0, ‘Minimale Höhe der Wandschicht an der Außenseite’: 0.0, ‘Maximale Höhe der Wandschicht an der Außenseite’: 0.0, ‘Minimale Höhe der Wandschicht an der Innenseite’: 0.0, ‘Maximale Höhe der Wandschicht an der Innenseite’: 0.0, ‘Konditionale Länge an der Außenseite’: 9.99, ‘Konditionale Länge an der Innenseite’: 9.39, ‘Konditionaler Oberflächenbereich an der Außenseite’: 27.62625, ‘Konditionaler Oberflächenbereich an der Innenseite’: 26.00625, ‘Wand-Schichtvolumen an der Außenseite’: 0.0, ‘Wand-Schichtvolumen an der Innenseite’: 0.0, ‘Konditionales Schichtvolumen an der Außenseite’: 0.0, ‘Konditionales Wand-Schichtvolumen an der Innenseite’: 0.0, ‘Länge der Referenzlinie’: 12.0, ‘Abstand zu Ursprungsgeschoss’: 0.0, ‘Abstand Oberkante’: 0.0, ‘Durchschnittliche Länge’: 11.7, ‘Oberflächenbereich der Fenster in der Wand’: 4.8, ‘Oberflächenbereich der Türen in der Wand’: 4.77375, ‘Oberflächenbereich der leeren Öffnungen in der Wand’: 0.0, ‘Volumen der Stützen’: 0.0, ‘id’: 27789}} As you can see, through a simple Python script, we obtain information about all attributes of the corresponding component. Traverse the entire Ifc file Next, we can try to traverse the components in all floors in the entire Ifc model through Python. Let’s look at this data structure diagram of the Ifc model:

通过该图我们可以看到整个Ifc模型数据结构关系图。这时,我们就可以通过Blender中的Python脚本,获取整个模型的构件数据。 import ifcopenshellimport ifcopenshell.utilimport ifcopenshell.util.elementfrom ifcopenshell import *
model = ifcopenshell.open(r’F:\2024\通过blender玩转ifc\AC20-FZK-Haus.ifc’)project=model.by_type(“IfcProject”)[0]print(“project:“+str(project))site= project.IsDecomposedBy[0].RelatedObjects[0]print(“site:“+str(site))building= site.IsDecomposedBy[0].RelatedObjects[0]print(“building:“+str(building))buildingStoreys= building.IsDecomposedBy[0].RelatedObjectsprint(“storeys:“+str(buildingStoreys))for buildingStorey in buildingStoreys: storeyInfo= buildingStorey.get_info() print(storeyInfo) elements= buildingStorey.ContainsElements[0] print(elements) elementsInFloor= elements.RelatedElements print(elementsInFloor)for elementItem in elementsInFloor: print(elementItem) print(elementItem.GlobalId) 来看上述代码的执行结果: project:#66=IfcProject(‘0lY6P5Ur90TAQnnnI6wtnb’,#12,‘Projekt-FZK-Haus’,‘Projekt FZK-House create by KHH Forschuungszentrum Karlsruhe’,,,(#62,#374),#49)site:#389=IfcSite('0KMpiAlnb52RgQuM1CwVfd',#12,'Gelaende','Ebenes Gelaende','LandUse',#115,#383,,.ELEMENT.,(49,6,1,566000),(8,26,11,540400),110.,)building:#434=IfcBuilding(‘2hQBAVPOr5VxhS3Jl0O47h’,#12,‘FZK-Haus’,‘FZK-Haus create by KHH / IAI / FZK’,‘Wohnhaus’,#432,,.ELEMENT.,,)storeys:(#479=IfcBuildingStorey('2eyxpyOx95m90jmsXLOuR0',#12,'Erdgeschoss',,,#477,,‘ACID00000001-0000-0000-0000-000000000000’,.ELEMENT.,0.), #35065=IfcBuildingStorey(‘273g3wqLzDtfYIl7qqkgcO’,#12,‘Dachgeschoss’,,#35064,,'ACID00000002-0000-0000-0000-000000000000',.ELEMENT.,2.7)){'id': 479, 'type': 'IfcBuildingStorey', 'GlobalId': '2eyxpyOx95m90jmsXLOuR0', 'OwnerHistory': #12=IfcOwnerHistory(#7,#11,,.ADDED.,,,1482339244), 'Name': 'Erdgeschoss', 'Description': None, 'ObjectType': None, 'ObjectPlacement': #477=IfcLocalPlacement(#432,#476), 'Representation': None, 'LongName': 'ACID00000001-0000-0000-0000-000000000000', 'CompositionType': 'ELEMENT', 'Elevation': 0.0}#14517=IfcRelContainedInSpatialStructure('13J1BKcWxmCqHLM0nJ4nFJ',#12,,,(#14502,#15042,#15372,#15848,#16507,#16982,#17040,#17468,#18407,#18465,#18698,#19199,#19504,#20069,#20268,#20299,#20329,#20374,#20598,#20808,#21966,#23024,#23944,#27013,#27421,#27833,#28113,#31079,#31470,#31818,#32098,#32407,#32829,#33109,#33389,#33672,#34509,#35053),#479)(#14502=IfcStair('38a9vdh9bF5Qg28GWyHhlr',#12,'Wendeltreppe',,,#502,#14498,'79A67A01-C95B-4209-86-9A-74983B65305C',), #15042=IfcWallStandardCase(‘2XPyKWY018sA1ygZKgQPtU’,#12,‘Wand-Int-ERDG-4’,,#14983,#15037,‘BC6F0F70-6195-495E-A2-FC-239713029DB1’,), #15372=IfcAnnotation('2TSghi3E94BuNE_F6jBcWe',#12,,,#15264,#15369), #15848=IfcAnnotation(‘0j7WClqLTB0gkHE605BLnY’,#12,,,#15384,#15845), #16507=IfcAnnotation('3BTqRqk7D5EhoEfLyYPgs’,#12,,,#15859,#16504), #16982=IfcAnnotation('11pyNSTMP9zfUCy679gsvT',#12,,,#16518,#16979), #17040=IfcWallStandardCase(‘3PfS__Y_DBAfq5naM6zD2Z’,#12,‘Wand-Int-ERDG-2’,,#16993,#17035,‘40F78310-9E7E-4793-BC-9E-DB102FD72B73’,), #17468=IfcDoor('1Oms875aH3Wg9l65H2ZGw’,#12,‘Innentuer-1’,,#17302,#17464,‘E605AACB-6C4E-458D-93-46-5D9D8C7C21D3’,2.01,0.885,,), #18407=IfcAnnotation('3YZcx3Gb58SwNRLuheFOxL',#12,,,#17759,#18404), #18465=IfcWallStandardCase(‘2ptk1k7qn8_Qk22vjh0DE',#12,'Wand-Int-ERDG-1',,,#18418,#18460,'8C826359-B394-49D6-BD-D5-49D50F806B56',), #18698=IfcWallStandardCase(‘3jjW3rL656ex34Gws22EfM’,#12,‘Wand-Int-ERDG-3’,,#18651,#18693,‘2197C9B9-DEF1-444F-B8-1E-1DB092762AB7’,), #19199=IfcDoor('0pGAjlJMP3ifYPATVF5xAR',#12,'Innentuer-2',,,#19029,#19195,'CBFAA406-7368-4C3F-96-65-F3ED0FC60C2F',2.01,0.885,,), #19504=IfcDoor(‘2qiPPF3FrF8OIqfrKiSUqm’,#12,‘Innentuer-3’,,#19486,#19500,‘12291272-8C4D-42C2-A4-E5-68086A355C33’,2.01,0.885,,), #20069=IfcAnnotation('0dGzbiP6H1sPcT0NmqaFGO',#12,,,#19789,#20066), #20268=IfcAnnotation(‘2Ml9lHXiTBN8zHbeU1ns5',#12,,,#20080,#20265), #20299=IfcAnnotation(‘2HtybvLgf93veGIhadqbJ9’,#12,,,#20279,#20296), #20329=IfcAnnotation('1WAtLpg_nDBxKhzIXT_jnH',#12,,,#20310,#20326), #20374=IfcBeam(‘3tCgZT92j6fw8fXgwCL3Jm’,#12,‘Unterzug-1’,,'Radial Gradient Fill 1515460218 200 x 240',#20340,#20370,'EAFC436F-7CDC-482B-8B-93-5FDB86D941A9',), #20598=IfcWallStandardCase(‘1wmdwWPjDYuku_ghVkynE',#12,'Wand-Int-ERDG-5',,,#20551,#20593,'623FF5CC-008F-4D9B-BE-AC-E81A16C53080',), #20808=IfcAnnotation(‘1TKECZOIj9cBBj4ne6lhuA’,#12,,,#20784,#20805), #21966=IfcWallStandardCase('3rPX_Juz59peXXY6wDJl18',#12,'Wand-Ext-ERDG-1',,,#21917,#21961,'BEF1E630-DE4B-41C5-AD-66-B87F1A8D67A1',), #23024=IfcWindow(‘1srAIR4T8ihLXSNHmUSET',#12,'EG-Fenster-6',,,#22372,#23020,'2872C43C-81BB-4535-95-65-B3AC3FB4DE23',1.2,2.,,), #23944=IfcWindow(‘0B1RwEzzP3CfME5NRVqh5',#12,'EG-Fenster-7',,,#23298,#23940,'E5AC7902-7454-439D-AF-DD-A1E5E37A0D08',1.2,2.,,), #27013=IfcDoor(‘2jTRqchjf7oB0yhQ6462T0’,#12,‘Haustuer’,,#24218,#27009,‘3CAFB746-2204-4C6C-BF-ED-F5FE276FA162’,2.01,1.01,,), #27421=IfcWallStandardCase('16DNNqzfP2thtfaOflvsKA',#12,'Wand-Ext-ERDG-4',,,#27374,#27416,'A6C3DE63-3731-4F6A-94-7E-DE8A8295779F',), #27833=IfcWindow(‘25nJxEpYf8LRDJNkMUVO0m’,#12,‘EG-Fenster-4’,,#27815,#27829,‘436D2D20-7879-42FD-A7-70-F2BECB09D642’,1.2,2.,,), #28113=IfcWindow('3BFcylCsX74PQAoRAe5fNv',#12,'EG-Fenster-5',,,#28095,#28109,'EE544359-8729-43CD-AE-E2-4BB37935CFDA',1.2,2.,,), #31079=IfcDoor(‘1MgxUrX1Fiwe3P64ww7U5',#12,'Terrassentuer',,,#28375,#31075,'AA410C09-759E-446C-95-DA-CF8531C8625F',2.375,2.01,,), #31470=IfcWallStandardCase(‘25fsbPyk15VvuXIyNKenK',#12,'Wand-Ext-ERDG-3',,,#31423,#31465,'D1BD94FD-C699-41C5-B0-98-57167561802A',), #31818=IfcWindow(‘13aSY79zb8fP4HApEJ0z_e’,#12,‘EG-Fenster-8’,,#31800,#31814,‘8FAFF59C-23BB-48D6-9C-CE-C4F804C53C9A’,1.2,2.,,), #32098=IfcWindow('2EQh_jhP1B_A_AMuSJc5E0',#12,'EG-Fenster-9',,,#32080,#32094,'A896A1CB-16B1-4CCD-A5-98-F5C5BC0C37DE',1.2,2.,,), #32407=IfcWallStandardCase(‘1bzfVsJqn8De5PukCrqylz’,#12,‘Wand-Ext-ERDG-2’,,#32360,#32402,‘74EAE11D-EA09-459E-92-62-5370AED48E8E’,), #32829=IfcWindow('1TAI4ouKX4Xx4lBDZIu5qM',#12,'EG-Fenster-1',,,#32811,#32825,'EAC2BE5E-BCD2-474E-95-24-57C652F96BF7',1.2,2.,,), #33109=IfcWindow(‘2Q9w7oRXP249jBobEMVqlZ’,#12,‘EG-Fenster-2’,,#33091,#33105,‘84B24574-B3EE-412A-A4-33-CE7E10ED2A8D’,1.2,2.,,), #33389=IfcWindow('1DiYqhfzH9xxuJdVHwXCNa',#12,'EG-Fenster-3',,,#33371,#33385,'EDE1E333-3D1C-441D-BE-45-790DF31E9DDC',1.2,2.,,), #33672=IfcAnnotation(‘0CWpGkM7zEROS7WsgthNfA’,#12,,,#33651,#33669), #34509=IfcSlab('1pPHnf7cXCpPsNEnQf8_6B',#12,'Bodenplatte',,,#34464,#34505,'E4D9CD4B-CA43-4735-94-BD-1FD4376BD455',.BASESLAB.), #35053=IfcAnnotation('1fzvgX3pDB88Tz63VWPBLu',#12,,,#35036,#35050))#14502=IfcStair(‘38a9vdh9bF5Qg28GWyHhlr’,#12,‘Wendeltreppe’,,#502,#14498,‘79A67A01-C95B-4209-86-9A-74983B65305C’,)38a9vdh9bF5Qg28GWyHhlr#15042=IfcWallStandardCase('2XPyKWY018sA1ygZKgQPtU',#12,'Wand-Int-ERDG-4',,,#14983,#15037,'BC6F0F70-6195-495E-A2-FC-239713029DB1',)2XPyKWY018sA1ygZKgQPtU#15372=IfcAnnotation(‘2TSghi3E94BuNE_F6jBcWe’,#12,,,#15264,#15369)2TSghi3E94BuNE_F6jBcWe#15848=IfcAnnotation('0j7WClqLTB0gkHE605BLnY',#12,,,#15384,#15845)0j7WClqLTB0gkHE605BLnY#16507=IfcAnnotation(‘3BTqRqk7D5EhoEfLyYPgs',#12,,,#15859,#16504)3BTqRqk7D5EhoEfLyYPgs#16982=IfcAnnotation('11pyNSTMP9zfUCy679gsvT',#12,,,#16518,#16979)11pyNSTMP9zfUCy679gsvT#17040=IfcWallStandardCase(‘3PfS__Y_DBAfq5naM6zD2Z’,#12,‘Wand-Int-ERDG-2’,,#16993,#17035,‘40F78310-9E7E-4793-BC-9E-DB102FD72B73’,)3PfS__Y_DBAfq5naM6zD2Z#17468=IfcDoor('1Oms875aH3Wg9l65H2ZGw’,#12,‘Innentuer-1’,,#17302,#17464,‘E605AACB-6C4E-458D-93-46-5D9D8C7C21D3’,2.01,0.885,,9l65H2ZGw#18407=IfcAnnotation(‘3YZcx3Gb58SwNRLuheFOxL’,#12,,,#17759,#18404)3YZcx3Gb58SwNRLuheFOxL#18465=IfcWallStandardCase('2ptk1k7qn8_Qk22vjh0DE’,#12,‘Wand-Int-ERDG-1’,,#18418,#18460,‘8C826359-B394-49D6-BD-D5-49D50F806B56’,0DE#18698=IfcWallStandardCase(‘3jjW3rL656ex34Gws22EfM’,#12,‘Wand-Int-ERDG-3’,,#18651,#18693,‘2197C9B9-DEF1-444F-B8-1E-1DB092762AB7’,)3jjW3rL656ex34Gws22EfM#19199=IfcDoor('0pGAjlJMP3ifYPATVF5xAR',#12,'Innentuer-2',,,#19029,#19195,'CBFAA406-7368-4C3F-96-65-F3ED0FC60C2F',2.01,0.885,,)0pGAjlJMP3ifYPATVF5xAR#19504=IfcDoor(‘2qiPPF3FrF8OIqfrKiSUqm’,#12,‘Innentuer-3’,,#19486,#19500,‘12291272-8C4D-42C2-A4-E5-68086A355C33’,2.01,0.885,,)2qiPPF3FrF8OIqfrKiSUqm#20069=IfcAnnotation('0dGzbiP6H1sPcT0NmqaFGO',#12,,,#19789,#20066)0dGzbiP6H1sPcT0NmqaFGO#20268=IfcAnnotation(‘2Ml9lHXiTBN8zHbeU1ns5',#12,,,#20080,#20265)2Ml9lHXiTBN8zHbeU1ns5#20299=IfcAnnotation('2HtybvLgf93veGIhadqbJ9',#12,,,#20279,#20296)2HtybvLgf93veGIhadqbJ9#20329=IfcAnnotation(‘1WAtLpg_nDBxKhzIXT_jnH’,#12,,,#20310,#20326)1WAtLpg_nDBxKhzIXT_jnH#20374=IfcBeam('3tCgZT92j6fw8fXgwCL3Jm',#12,'Unterzug-1',,‘Radial Gradient Fill 1515460218 200 x 240’,#20340,#20370,‘EAFC436F-7CDC-482B-8B-93-5FDB86D941A9’,)3tCgZT92j6fw8fXgwCL3Jm#20598=IfcWallStandardCase('1wmdwWPjDYuku_ghVkynE’,#12,‘Wand-Int-ERDG-5’,,#20551,#20593,‘623FF5CC-008F-4D9B-BE-AC-E81A16C53080’,wmdwWPjDYuku_ghVkynE#20808=IfcAnnotation(‘1TKECZOIj9cBBj4ne6lhuA’,#12,,,#20784,#20805)1TKECZOIj9cBBj4ne6lhuA#21966=IfcWallStandardCase('3rPX_Juz59peXXY6wDJl18',#12,'Wand-Ext-ERDG-1',,,#21917,#21961,'BEF1E630-DE4B-41C5-AD-66-B87F1A8D67A1',)3rPX_Juz59peXXY6wDJl18#23024=IfcWindow(‘1srAIR4T8ihLXSNHmUSET',#12,'EG-Fenster-6',,,#22372,#23020,'2872C43C-81BB-4535-95-65-B3AC3FB4DE23',1.2,2.,,)1srAIR4T8ihLXSNHmUSET#23944=IfcWindow('0B1RwEzzP3CfME5NRVqh5’,#12,‘EG-Fenster-7’,,#23298,#23940,‘E5AC7902-7454-439D-AF-DD-A1E5E37A0D08’,1.2,2.,,Vqh5#27013=IfcDoor(‘2jTRqchjf7oB0yhQ6462T0’,#12,‘Haustuer’,,#24218,#27009,‘3CAFB746-2204-4C6C-BF-ED-F5FE276FA162’,2.01,1.01,,)2jTRqchjf7oB0yhQ6462T0#27421=IfcWallStandardCase('16DNNqzfP2thtfaOflvsKA',#12,'Wand-Ext-ERDG-4',,,#27374,#27416,'A6C3DE63-3731-4F6A-94-7E-DE8A8295779F',)16DNNqzfP2thtfaOflvsKA#27833=IfcWindow(‘25nJxEpYf8LRDJNkMUVO0m’,#12,‘EG-Fenster-4’,,#27815,#27829,‘436D2D20-7879-42FD-A7-70-F2BECB09D642’,1.2,2.,,)25nJxEpYf8LRDJNkMUVO0m#28113=IfcWindow('3BFcylCsX74PQAoRAe5fNv',#12,'EG-Fenster-5',,,#28095,#28109,'EE544359-8729-43CD-AE-E2-4BB37935CFDA',1.2,2.,,)3BFcylCsX74PQAoRAe5fNv#31079=IfcDoor(‘1MgxUrX1Fiwe3P64ww7U5',#12,'Terrassentuer',,,#28375,#31075,'AA410C09-759E-446C-95-DA-CF8531C8625F',2.375,2.01,,)1MgxUrX1Fiwe3P64ww7U5#31470=IfcWallStandardCase('25fsbPyk15VvuXIyNKenK’,#12,‘Wand-Ext-ERDG-3’,,#31423,#31465,‘D1BD94FD-C699-41C5-B0-98-57167561802A’,yNKenK#31818=IfcWindow(‘13aSY79zb8fP4HApEJ0z_e’,#12,‘EG-Fenster-8’,,#31800,#31814,‘8FAFF59C-23BB-48D6-9C-CE-C4F804C53C9A’,1.2,2.,,)13aSY79zb8fP4HApEJ0z_e#32098=IfcWindow('2EQh_jhP1B_A_AMuSJc5E0',#12,'EG-Fenster-9',,,#32080,#32094,'A896A1CB-16B1-4CCD-A5-98-F5C5BC0C37DE',1.2,2.,,)2EQh_jhP1B_A_AMuSJc5E0#32407=IfcWallStandardCase(‘1bzfVsJqn8De5PukCrqylz’,#12,‘Wand-Ext-ERDG-2’,,#32360,#32402,‘74EAE11D-EA09-459E-92-62-5370AED48E8E’,)1bzfVsJqn8De5PukCrqylz#32829=IfcWindow('1TAI4ouKX4Xx4lBDZIu5qM',#12,'EG-Fenster-1',,,#32811,#32825,'EAC2BE5E-BCD2-474E-95-24-57C652F96BF7',1.2,2.,,)1TAI4ouKX4Xx4lBDZIu5qM#33109=IfcWindow(‘2Q9w7oRXP249jBobEMVqlZ’,#12,‘EG-Fenster-2’,,#33091,#33105,‘84B24574-B3EE-412A-A4-33-CE7E10ED2A8D’,1.2,2.,,)2Q9w7oRXP249jBobEMVqlZ#33389=IfcWindow('1DiYqhfzH9xxuJdVHwXCNa',#12,'EG-Fenster-3',,,#33371,#33385,'EDE1E333-3D1C-441D-BE-45-790DF31E9DDC',1.2,2.,,)1DiYqhfzH9xxuJdVHwXCNa#33672=IfcAnnotation(‘0CWpGkM7zEROS7WsgthNfA’,#12,,,#33651,#33669)0CWpGkM7zEROS7WsgthNfA#34509=IfcSlab('1pPHnf7cXCpPsNEnQf8_6B',#12,'Bodenplatte',,,#34464,#34505,'E4D9CD4B-CA43-4735-94-BD-1FD4376BD455',.BASESLAB.)1pPHnf7cXCpPsNEnQf8_6B#35053=IfcAnnotation('1fzvgX3pDB88Tz63VWPBLu',#12,,,#35036,#35050)1fzvgX3pDB88Tz63VWPBLu{‘id’: 35065, ‘type’: ‘IfcBuildingStorey’, ‘GlobalId’: ‘273g3wqLzDtfYIl7qqkgcO’, ‘OwnerHistory’: #12=IfcOwnerHistory(#7,#11,,,1482339244), ‘Name’: ‘Dachgeschoss’, ‘Description’: None, ‘ObjectType’: None, ‘ObjectPlacement’: #35064=IfcLocalPlacement(#432,#35063), ‘Representation’: None, ‘LongName’: ‘ACID00000002-0000-0000-0000-000000000000’, ‘CompositionType’: ‘ELEMENT’, ‘Elevation’: 2.7}#35172=IfcRelContainedInSpatialStructure(‘3w5Kjolx7vw_AxKOfOc7wq’,#12,,(#35169,#35304,#35427,#35550,#35673,#35796,#35919,#36042,#36165,#36288,#36411,#36534,#36657,#36780,#36903,#37026,#37149,#37272,#37395,#37582,#37710,#37833,#37956,#38079,#38202,#38325,#38448,#38571,#38694,#38817,#38940,#39063,#39186,#39309,#39432,#39555,#39678,#39801,#39924,#40047,#40170,#40293,#40416,#40539,#40662,#49831,#59075,#59290,#59553,#59753,#60012,#66459,#67536,#67828,#74280,#75347,#75775,#76112),#35065)(#35169=IfcMember(‘0oTQ6V1VbChulreA_hfmUa’,#12,‘Sparren-1’,,#35085,#35165,‘4E567244-877A-453F-BD-15-E8D98D599364’,), #35304=IfcMember('1tpUOcVEPCGgFqSz0VbniQ',#12,'Sparren-2',,,#35287,#35300,'C5F380CE-4BE5-466B-BC-4B-3A944CEE034E',), #35427=IfcMember(‘1ulHlNTuj798Os3k9phhVC’,#12,‘Sparren-3’,,#35410,#35423,‘6900A38D-6218-470C-AC-22-9AFA78DAFBA8’,), #35550=IfcMember('1OckORehXEoB_KILQGJao5',#12,'Sparren-4',,,#35533,#35546,'4C100AD3-729F-46E0-BD-62-DE5D7DA40117',), #35673=IfcMember(‘0nsN_jkIrBQBuGFMg_zMEg’,#12,‘Sparren-5’,,#35656,#35669,‘3C8A05AD-ECBB-4E09-B7-46-95B6A3DF895C’,), #35796=IfcMember('31Quw2HAvFqv9_JgCuemp’,#12,‘Sparren-6’,,#35779,#35792,‘860FAA0C-B6F9-41C9-B0-FC-435F2488ECA6’,), #35919=IfcMember('35W3cFc4L7MhJR0gIk9uis',#12,'Sparren-7',,,#35902,#35915,'3482C9DC-403F-437C-94-B9-0E7ACBDA5DBF',), #36042=IfcMember(‘3F58AqxJfFQkuoceQhWg3',#12,'Sparren-8',,,#36025,#36038,'05E9C0F2-246F-4C01-A3-3C-ABB1F44064B4',), #36165=IfcMember(‘1nGDFBBHvBJ9NmlweQO0fX’,#12,‘Sparren-9’,,#36148,#36161,‘2968F842-8ADC-4770-91-67-18314645959B’,), #36288=IfcMember('3qFc3Wrr9BBPJyb2wB4Ra’,#12,‘Sparren-10’,,#36271,#36284,‘639CABF2-BEEF-41F8-9F-C4-7379CD6756B8’,), #36411=IfcMember('37ab3q_iz8XRterfnMKTQX',#12,'Sparren-11',,,#36394,#36407,'1AB90595-0D25-474F-96-60-565DF04537D3',), #36534=IfcMember(‘3xdLwxTMD7bw4hWoOQL41M’,#12,‘Sparren-12’,,#36517,#36530,‘38A8137C-9D72-40E7-98-54-BAA748BE06F0’,), #36657=IfcMember('2OHMT7B69F5PRG_f3rMcjF',#12,'Sparren-13',,,#36640,#36653,'72ECFA45-517E-45A7-A9-F0-58BB40719283',), #36780=IfcMember(‘34zPS2PUTBDOe7g7RIRXK0’,#12,‘Sparren-14’,,#36763,#36776,‘00000000-0000-0000-00-00-000000000000’,), #36903=IfcMember('0VzptM87L6uOjQj08tTXIQ',#12,'Sparren-15',,,#36886,#36899,'BE5019AF-A097-455A-8D-66-DE59506D51CF',), #37026=IfcMember(‘2CxE0jXr8iOH1VC2gLCXX',#12,'Sparren-16',,,#37009,#37022,'0EAB97A9-E52A-4D7B-84-E2-0AFFA517A7C3',), #37149=IfcMember(‘3sGiUZAX499eUK87UfZk_',#12,'Sparren-17',,,#37132,#37145,'30C22D1D-028D-4B38-BE-CD-BF763016FE7B',), #37272=IfcMember(‘0q1clcN4jF4gdikC9OySy7’,#12,‘Sparren-18’,,#37255,#37268,‘78E8AC76-2667-4770-91-D7-813BE341C319’,), #37395=IfcMember('36KGWr2Rv8QuUhNnocm2nH',#12,'Sparren-19',,,#37378,#37391,'264D278D-153D-4271-87-B7-5ACB8AB7C031',), #37582=IfcBeam(‘0eaC0nL3XAOfFxRXK_2iAr’,#12,‘Pfette-2-1’,,'',#37501,#37578,'542BAFA7-D3B2-4074-B0-AF-859DB4CE679A',), #37710=IfcMember(‘0OKCG9uG53i9K16_x3YNfz’,#12,‘Sparren-20’,,#37693,#37706,‘ABC5FCBF-447C-455B-8A-94-54C01FF84C7D’,), #37833=IfcMember('3ePWkSzvLApwXTt3b0I2nV',#12,'Sparren-21',,,#37816,#37829,'7D626D3E-AA80-4308-86-DA-76F09E2350F5',), #37956=IfcMember(‘09OmJpUcj4WvNp2dXHFMWj’,#12,‘Sparren-22’,,#37939,#37952,‘478277F6-2A8B-4D9B-A7-C6-59173581CD24’,), #38079=IfcMember('3iSL8frGLDweFar9j4zgJ_',#12,'Sparren-23',,,#38062,#38075,'3DB3AE4B-A425-47F3-BB-76-E3009AE09ABB',), #38202=IfcMember(‘23pmL_2aH88OVqWp_5Lfkf’,#12,‘Sparren-24’,,#38185,#38198,‘1FD04C72-582E-4AB8-B8-09-181F7DD7D62F’,), #38325=IfcMember('06JZMOVBX8VucSQwQ3o8d’,#12,‘Sparren-25’,,#38308,#38321,‘DDE46763-BE57-4EF4-A5-94-B80ED2242C61’,), #38448=IfcMember('31ry3UPYD7weLluBlhQxXZ',#12,'Sparren-26',,,#38431,#38444,'CAE5E5C0-4299-44F4-A2-1A-688219A1DA30',), #38571=IfcMember(‘20AsUDMgH0JwAitydKgsOm’,#12,‘Sparren-27’,,#38554,#38567,‘08446AD9-0161-4E13-8B-5D-20F9D44DB92A’,), #38694=IfcMember('2SfSpj_pX9nvTeCOxeKqTd',#12,'Sparren-28',,,#38677,#38690,'29979C4B-420D-4ED2-B5-48-6AE887E69AD4',), #38817=IfcMember(‘17MHCgVYn2YPLX56yXUJbL’,#12,‘Sparren-29’,,#38800,#38813,‘8B9D9C34-42AA-4C87-A3-E8-C117928F7CD6’,), #38940=IfcMember('2XyYurmzzDOAIoZ52R97Jm',#12,'Sparren-30',,,#38923,#38936,'56BAD4E8-0059-4C72-85-8A-9B23D2E15426',), #39063=IfcMember(‘0hRh9WBjCLwlAiq3vfmg9',#12,'Sparren-31',,,#39046,#39059,'C9E34584-2109-4676-8F-0C-A5C9428DA4B4',), #39186=IfcMember(‘1NBDw_i_jDu7IjvwmbPmx',#12,'Sparren-32',,,#39169,#39182,'62D6313A-B4FB-45BF-B3-97-10D01124A4F9',), #39309=IfcMember(‘2DHOLoObDkAtwqVzNdUnS',#12,'Sparren-33',,,#39292,#39305,'E4FF91FA-3AE7-4591-8D-5F-61E57F7BA5DE',), #39432=IfcMember(‘1qMEiq1Qz6guq8g1GCODiJ’,#12,‘Sparren-34’,,#39415,#39428,‘3A999AF6-1C12-413A-89-B2-BF4A3CAEAD63’,), #39555=IfcMember('2AxITdtlD1h9Y3ye8U93bV',#12,'Sparren-35',,,#39538,#39551,'2B89760B-0C8D-4559-A3-B2-5B1635543320',), #39678=IfcMember(‘0DTRkEz0r6gvzG6VdDr24n’,#12,‘Sparren-36’,,#39661,#39674,‘A4621E86-FF56-40DC-B3-C2-2633C779B3A5’,), #39801=IfcMember('3UTqpydzf7i8J6iMY2tHil',#12,'Sparren-37',,,#39784,#39797,'A64DDEB8-B180-474D-B9-AA-2A96A26C443D',), #39924=IfcMember(‘3CS1rsE3bB7vMHAdjyaamh’,#12,‘Sparren-38’,,#39907,#39920,‘46488648-16DC-44A4-91-12-698B815D6192’,), #40047=IfcMember('2jBFZiQw110vV7XY77KKfx',#12,'Sparren-39',,,#40030,#40043,'EC41283A-3BA0-4DB3-BD-68-564054F72630',), #40170=IfcMember(‘22oN_bO9T4jO5eG4GKW7be’,#12,‘Sparren-40’,,#40153,#40166,‘BC192F3D-2C51-4B28-92-78-5806097A3CB1’,), #40293=IfcMember('2in0QvfYXEawl1f3MP1bq2',#12,'Sparren-41',,,#40276,#40289,'6A479A30-3EE6-49CF-80-83-949E8139A87B',), #40416=IfcBeam(‘3jZHeNcfvDMf9wGwx9XqG',#12,'Pfette-1-1',,”,#40399,#40412,‘C8707AC7-4260-4F76-A6-95-7665806B676D’,), #40539=IfcBeam('20bTaetQDApP5w8egFxj13',#12,'First',,”,#40522,#40535,‘C2B602D2-A015-453B-9E-EF-BB998BB27F3B’,), #40662=IfcMember('3EgsECVVb6zQXnK3YFcWAu',#12,'Sparren-42',,,#40645,#40658,'21F55D0B-AD74-40D8-A5-20-4365CC35D364',), #49831=IfcRailing(‘0o5vgCKyTBzO5QJcI2YDP',#12,'',,,#40768,#49827,'00000000-0000-0000-00-00-000000000000',.HANDRAIL.), #59075=IfcRailing('09axaKU7X1_O8n6dmmiZ1E',#12,'',,,#50014,#59071,'00000000-0000-0000-00-00-000000000000',.HANDRAIL.), #59290=IfcSlab('2RGlQk4xH47RHK93zcTzUL',#12,'Slab-033',,,#59253,#59286,'DA0A17AC-B773-47AC-99-C5-D390C73AD5CC',.FLOOR.), #59553=IfcSlab('07Enbsqm9C7AQC9iyBwfSD',#12,'Dach-1',,,#59508,#59549,'E142B455-80E4-4B96-83-EC-E1589CA998DB',.ROOF.), #59753=IfcSlab('2IxUUNUVPB6ObeicCfP2N’,#12,‘Dach-2’,,#59716,#59749,‘BD6D9414-37DF-40A8-88-40-301A32A9A5B5’,.ROOF.), #60012=IfcWallStandardCase(‘0knNIAVBPBFvBy_m5QVHsU’,#12,‘Wand-Ext-OG-1’,,#59911,#60007,‘7B65A2FF-2B2E-4F49-B4-A1-7B41CF4110EE’,), #66459=IfcWindow('1zOBw0Gej5Wf0QAJfHnOc0',#12,'OG-Fenster-2',,,#60773,#66455,'FA683FAD-0F01-4AF4-93-87-2834E91204A6',1.,1.,,), #67536=IfcWallStandardCase(‘25OWQvmXj5BPgyergP43tY’,#12,‘Wand-Ext-OG-2’,,#67479,#67531,‘79A3F0D1-59C9-4AE1-9D-6D-772238A0ECC7’,), #67828=IfcWallStandardCase('3VCarUKgH1buLo22Ozxe6J',#12,'Wand-Ext-OG-3',,,#67727,#67823,'5D0903EC-02FE-4DE0-98-05-1D4D15974A41',), #74280=IfcWindow(‘2ACmFFQhT1Ouf0x4YRUh9m’,#12,‘OG-Fenster-1’,,#68594,#74276,‘671AB351-B612-4D9E-BC-6F-DAEBA688142F’,1.,1.,,), #75347=IfcWallStandardCase('3Ttjr59XEWfWN1WUHjelZ’,#12,‘Wand-Ext-OG-4’,,#75290,#75342,‘C0070317-136B-4A93-BD-CC-3B8478F23A5C’,), #75775=IfcAnnotation('2BEAsxujfCOxQo3wTVr7Wr',#12,,,#75541,#75772), #76112=IfcAnnotation(‘0OL3LCjon8C8eMGVs718Tk’,#12,,,#75786,#76109))#35169=IfcMember('0oTQ6V1VbChulreA_hfmUa',#12,'Sparren-1',,,#35085,#35165,'4E567244-877A-453F-BD-15-E8D98D599364',)0oTQ6V1VbChulreA_hfmUa#35304=IfcMember(‘1tpUOcVEPCGgFqSz0VbniQ’,#12,‘Sparren-2’,,#35287,#35300,‘C5F380CE-4BE5-466B-BC-4B-3A944CEE034E’,)1tpUOcVEPCGgFqSz0VbniQ#35427=IfcMember('1ulHlNTuj798Os3k9phhVC',#12,'Sparren-3',,,#35410,#35423,'6900A38D-6218-470C-AC-22-9AFA78DAFBA8',)1ulHlNTuj798Os3k9phhVC#35550=IfcMember(‘1OckORehXEoB_KILQGJao5’,#12,‘Sparren-4’,,#35533,#35546,‘4C100AD3-729F-46E0-BD-62-DE5D7DA40117’,)1OckORehXEoB_KILQGJao5#35673=IfcMember('0nsN_jkIrBQBuGFMg_zMEg',#12,'Sparren-5',,,#35656,#35669,'3C8A05AD-ECBB-4E09-B7-46-95B6A3DF895C',)0nsN_jkIrBQBuGFMg_zMEg#35796=IfcMember(‘31Quw2HAvFqv9_JgCuemp',#12,'Sparren-6',,,#35779,#35792,'860FAA0C-B6F9-41C9-B0-FC-435F2488ECA6',)31Quw2HAvFqv9_JgCuemp#35919=IfcMember('35W3cFc4L7MhJR0gIk9uis',#12,'Sparren-7',,,#35902,#35915,'3482C9DC-403F-437C-94-B9-0E7ACBDA5DBF',)35W3cFc4L7MhJR0gIk9uis#36042=IfcMember(‘3F58AqxJfFQkuoceQhWg3',#12,'Sparren-8',,,#36025,#36038,'05E9C0F2-246F-4C01-A3-3C-ABB1F44064B4',)3F58AqxJfFQkuoceQhWg3#36165=IfcMember('1nGDFBBHvBJ9NmlweQO0fX',#12,'Sparren-9',,,#36148,#36161,'2968F842-8ADC-4770-91-67-18314645959B',)1nGDFBBHvBJ9NmlweQO0fX#36288=IfcMember(‘3qFc3Wrr9BBPJyb2wB4Ra',#12,'Sparren-10',,,#36271,#36284,'639CABF2-BEEF-41F8-9F-C4-7379CD6756B8',)3qFc3Wrr9BBPJyb2wB4Ra#36411=IfcMember('37ab3q_iz8XRterfnMKTQX',#12,'Sparren-11',,,#36394,#36407,'1AB90595-0D25-474F-96-60-565DF04537D3',)37ab3q_iz8XRterfnMKTQX#36534=IfcMember(‘3xdLwxTMD7bw4hWoOQL41M’,#12,‘Sparren-12’,,#36517,#36530,‘38A8137C-9D72-40E7-98-54-BAA748BE06F0’,)3xdLwxTMD7bw4hWoOQL41M#36657=IfcMember('2OHMT7B69F5PRG_f3rMcjF',#12,'Sparren-13',,,#36640,#36653,'72ECFA45-517E-45A7-A9-F0-58BB40719283',)2OHMT7B69F5PRG_f3rMcjF#36780=IfcMember(‘34zPS2PUTBDOe7g7RIRXK0’,#12,‘Sparren-14’,,#36763,#36776,‘00000000-0000-0000-00-00-000000000000’,)34zPS2PUTBDOe7g7RIRXK0#36903=IfcMember('0VzptM87L6uOjQj08tTXIQ',#12,'Sparren-15',,,#36886,#36899,'BE5019AF-A097-455A-8D-66-DE59506D51CF',)0VzptM87L6uOjQj08tTXIQ#37026=IfcMember(‘2CxE0jXr8iOH1VC2gLCXX',#12,'Sparren-16',,,#37009,#37022,'0EAB97A9-E52A-4D7B-84-E2-0AFFA517A7C3',)2CxE0jXr8iOH1VC2gLCXX#37149=IfcMember('3sGiUZAX499eUK87UfZk_’,#12,‘Sparren-17’,,#37132,#37145,‘30C22D1D-028D-4B38-BE-CD-BF763016FE7B’,iUZAX499eUK87UfZk_#37272=IfcMember(‘0q1clcN4jF4gdikC9OySy7’,#12,‘Sparren-18’,,#37255,#37268,‘78E8AC76-2667-4770-91-D7-813BE341C319’,)0q1clcN4jF4gdikC9OySy7#37395=IfcMember('36KGWr2Rv8QuUhNnocm2nH',#12,'Sparren-19',,,#37378,#37391,'264D278D-153D-4271-87-B7-5ACB8AB7C031',)36KGWr2Rv8QuUhNnocm2nH#37582=IfcBeam(‘0eaC0nL3XAOfFxRXK_2iAr’,#12,‘Pfette-2-1’,,'',#37501,#37578,'542BAFA7-D3B2-4074-B0-AF-859DB4CE679A',)0eaC0nL3XAOfFxRXK_2iAr#37710=IfcMember(‘0OKCG9uG53i9K16_x3YNfz’,#12,‘Sparren-20’,,#37693,#37706,‘ABC5FCBF-447C-455B-8A-94-54C01FF84C7D’,)0OKCG9uG53i9K16_x3YNfz#37833=IfcMember('3ePWkSzvLApwXTt3b0I2nV',#12,'Sparren-21',,,#37816,#37829,'7D626D3E-AA80-4308-86-DA-76F09E2350F5',)3ePWkSzvLApwXTt3b0I2nV#37956=IfcMember(‘09OmJpUcj4WvNp2dXHFMWj’,#12,‘Sparren-22’,,#37939,#37952,‘478277F6-2A8B-4D9B-A7-C6-59173581CD24’,)09OmJpUcj4WvNp2dXHFMWj#38079=IfcMember('3iSL8frGLDweFar9j4zgJ_',#12,'Sparren-23',,,#38062,#38075,'3DB3AE4B-A425-47F3-BB-76-E3009AE09ABB',)3iSL8frGLDweFar9j4zgJ_#38202=IfcMember(‘23pmL_2aH88OVqWp_5Lfkf’,#12,‘Sparren-24’,,#38185,#38198,‘1FD04C72-582E-4AB8-B8-09-181F7DD7D62F’,)23pmL_2aH88OVqWp_5Lfkf#38325=IfcMember('06JZMOVBX8VucSQwQ3o8d’,#12,‘Sparren-25’,,#38308,#38321,‘DDE46763-BE57-4EF4-A5-94-B80ED2242C61’,8d#38448=IfcMember(‘31ry3UPYD7weLluBlhQxXZ’,#12,‘Sparren-26’,,#38431,#38444,‘CAE5E5C0-4299-44F4-A2-1A-688219A1DA30’,)31ry3UPYD7weLluBlhQxXZ#38571=IfcMember('20AsUDMgH0JwAitydKgsOm',#12,'Sparren-27',,,#38554,#38567,'08446AD9-0161-4E13-8B-5D-20F9D44DB92A',)20AsUDMgH0JwAitydKgsOm#38694=IfcMember(‘2SfSpj_pX9nvTeCOxeKqTd’,#12,‘Sparren-28’,,#38677,#38690,‘29979C4B-420D-4ED2-B5-48-6AE887E69AD4’,)2SfSpj_pX9nvTeCOxeKqTd#38817=IfcMember('17MHCgVYn2YPLX56yXUJbL',#12,'Sparren-29',,,#38800,#38813,'8B9D9C34-42AA-4C87-A3-E8-C117928F7CD6',)17MHCgVYn2YPLX56yXUJbL#38940=IfcMember(‘2XyYurmzzDOAIoZ52R97Jm’,#12,‘Sparren-30’,,#38923,#38936,‘56BAD4E8-0059-4C72-85-8A-9B23D2E15426’,)2XyYurmzzDOAIoZ52R97Jm#39063=IfcMember('0hRh9WBjCLwlAiq3vfmg9’,#12,‘Sparren-31’,,#39046,#39059,‘C9E34584-2109-4676-8F-0C-A5C9428DA4B4’,jCLwlAiq3vfmg9#39186=IfcMember(‘1NBDw_i_jDu7IjvwmbPmx',#12,'Sparren-32',,,#39169,#39182,'62D6313A-B4FB-45BF-B3-97-10D01124A4F9',)1NBDw_i_jDu7IjvwmbPmx#39309=IfcMember('2DHOLoObDkAtwqVzNdUnS’,#12,‘Sparren-33’,,#39292,#39305,‘E4FF91FA-3AE7-4591-8D-5F-61E57F7BA5DE’,OLoObDkAtwqVzNdUnS#39432=IfcMember(‘1qMEiq1Qz6guq8g1GCODiJ’,#12,‘Sparren-34’,,#39415,#39428,‘3A999AF6-1C12-413A-89-B2-BF4A3CAEAD63’,)1qMEiq1Qz6guq8g1GCODiJ#39555=IfcMember('2AxITdtlD1h9Y3ye8U93bV',#12,'Sparren-35',,,#39538,#39551,'2B89760B-0C8D-4559-A3-B2-5B1635543320',)2AxITdtlD1h9Y3ye8U93bV#39678=IfcMember(‘0DTRkEz0r6gvzG6VdDr24n’,#12,‘Sparren-36’,,#39661,#39674,‘A4621E86-FF56-40DC-B3-C2-2633C779B3A5’,)0DTRkEz0r6gvzG6VdDr24n#39801=IfcMember('3UTqpydzf7i8J6iMY2tHil',#12,'Sparren-37',,,#39784,#39797,'A64DDEB8-B180-474D-B9-AA-2A96A26C443D',)3UTqpydzf7i8J6iMY2tHil#39924=IfcMember(‘3CS1rsE3bB7vMHAdjyaamh’,#12,‘Sparren-38’,,#39907,#39920,‘46488648-16DC-44A4-91-12-698B815D6192’,)3CS1rsE3bB7vMHAdjyaamh#40047=IfcMember('2jBFZiQw110vV7XY77KKfx',#12,'Sparren-39',,,#40030,#40043,'EC41283A-3BA0-4DB3-BD-68-564054F72630',)2jBFZiQw110vV7XY77KKfx#40170=IfcMember(‘22oN_bO9T4jO5eG4GKW7be’,#12,‘Sparren-40’,,#40153,#40166,‘BC192F3D-2C51-4B28-92-78-5806097A3CB1’,)22oN_bO9T4jO5eG4GKW7be#40293=IfcMember('2in0QvfYXEawl1f3MP1bq2',#12,'Sparren-41',,,#40276,#40289,'6A479A30-3EE6-49CF-80-83-949E8139A87B',)2in0QvfYXEawl1f3MP1bq2#40416=IfcBeam(‘3jZHeNcfvDMf9wGwx9XqG',#12,'Pfette-1-1',,”,#40399,#40412,‘C8707AC7-4260-4F76-A6-95-7665806B676D’,wx9XqG#40539=IfcBeam(‘20bTaetQDApP5w8egFxj13’,#12,‘First’,,'',#40522,#40535,'C2B602D2-A015-453B-9E-EF-BB998BB27F3B',)20bTaetQDApP5w8egFxj13#40662=IfcMember(‘3EgsECVVb6zQXnK3YFcWAu’,#12,‘Sparren-42’,,#40645,#40658,‘21F55D0B-AD74-40D8-A5-20-4365CC35D364’,)3EgsECVVb6zQXnK3YFcWAu#49831=IfcRailing('0o5vgCKyTBzO5QJcI2YDP’,#12,”,,#40768,#49827,‘00000000-0000-0000-00-00-000000000000’,.HANDRAIL.)0o5vgCKyTBzO5QJcI2YDP#59075=IfcRailing('09axaKU7X1_O8n6dmmiZ1E',#12,'',,,#50014,#59071,'00000000-0000-0000-00-00-000000000000',.HANDRAIL.)09axaKU7X1_O8n6dmmiZ1E#59290=IfcSlab('2RGlQk4xH47RHK93zcTzUL',#12,'Slab-033',,,#59253,#59286,'DA0A17AC-B773-47AC-99-C5-D390C73AD5CC',.FLOOR.)2RGlQk4xH47RHK93zcTzUL#59553=IfcSlab('07Enbsqm9C7AQC9iyBwfSD',#12,'Dach-1',,,#59508,#59549,'E142B455-80E4-4B96-83-EC-E1589CA998DB',.ROOF.)07Enbsqm9C7AQC9iyBwfSD#59753=IfcSlab('2IxUUNUVPB6ObeicCfP2N’,#12,‘Dach-2’,,#59716,#59749,‘BD6D9414-37DF-40A8-88-40-301A32A9A5B5’,.ROOF.)2IxUUNUVPB6ObeicCfP2N#60012=IfcWallStandardCase('0knNIAVBPBFvBy_m5QVHsU',#12,'Wand-Ext-OG-1',,,#59911,#60007,'7B65A2FF-2B2E-4F49-B4-A1-7B41CF4110EE',)0knNIAVBPBFvBy_m5QVHsU#66459=IfcWindow(‘1zOBw0Gej5Wf0QAJfHnOc0’,#12,‘OG-Fenster-2’,,#60773,#66455,‘FA683FAD-0F01-4AF4-93-87-2834E91204A6’,1.,1.,,)1zOBw0Gej5Wf0QAJfHnOc0#67536=IfcWallStandardCase('25OWQvmXj5BPgyergP43tY',#12,'Wand-Ext-OG-2',,,#67479,#67531,'79A3F0D1-59C9-4AE1-9D-6D-772238A0ECC7',)25OWQvmXj5BPgyergP43tY#67828=IfcWallStandardCase(‘3VCarUKgH1buLo22Ozxe6J’,#12,‘Wand-Ext-OG-3’,,#67727,#67823,‘5D0903EC-02FE-4DE0-98-05-1D4D15974A41’,)3VCarUKgH1buLo22Ozxe6J#74280=IfcWindow('2ACmFFQhT1Ouf0x4YRUh9m',#12,'OG-Fenster-1',,,#68594,#74276,'671AB351-B612-4D9E-BC-6F-DAEBA688142F',1.,1.,,)2ACmFFQhT1Ouf0x4YRUh9m#75347=IfcWallStandardCase(‘3Ttjr59XEWfWN1WUHjelZ',#12,'Wand-Ext-OG-4',,,#75290,#75342,'C0070317-136B-4A93-BD-CC-3B8478F23A5C',)3Ttjr59XEWfWN1WUHjelZ#75775=IfcAnnotation('2BEAsxujfCOxQo3wTVr7Wr',#12,,,#75541,#75772)2BEAsxujfCOxQo3wTVr7Wr#76112=IfcAnnotation(‘0OL3LCjon8C8eMGVs718Tk’,#12,,$,#75786,#76109)0OL3LCjon8C8eMGVs718Tk As you can see, the results of code execution are displayed using the EXPRESS mentioned at the beginning of this article. This code completely traverses all floors and components in the project. Of course, we can also get the model data we need by directly interacting with blender’s python extension. For example, the following code obtains all IfcWalls displayed in the current interface. import bpywalls = [obj for obj in bpy.context.scene.objects if obj.name.startswith(“IfcWall”)]print(walls) The following code writes properties to the selected component: import bpy# Adding a Psetpset = bpy.context.active_object.BIMObjectProperties.psets.add()pset.name = “MyPset”# Adding a property of type string_valueprop = pset.properties.add()prop.name = “MyProperty”prop.string_value = “Hello World !” We can even perform collision checking through related code: import bpyimport collisionimport numpy as npimport bmeshimport ifcclash
def get_collision_results(set_a=None, set_b=None): a_cm = collision.CollisionManager() b_cm = collision.CollisionManager() add_to_cm(a_cm, set_a) add_to_cm(b_cm, set_b)return a_cm.in_collision_other(b_cm, return_data=True)
def add_to_cm(cm, object_names):for object_name in object_names: name = object_name.name obj = bpy.data.objects[name] triangulated_mesh = triangulate_mesh(obj) mat = np.array(obj.matrix_world) mesh = ifcclash.Mesh() mesh.vertices = np.array([tuple(v.co) for v in triangulated_mesh.vertices]) mesh.faces = np.array([tuple(p.vertices) for p in triangulated_mesh.polygons]) cm.add_object(name, mesh, mat)
def triangulate_mesh(obj): mesh = obj.evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh() bm = bmesh.new() bm.from_mesh(mesh) bmesh.ops.triangulate(bm, faces=bm.faces) bm.to_mesh(mesh) bm.free() del bmreturn mesh
set_a = [ bpy.data.scenes[‘Scene’].objects[‘Cube’],]set_b = [ bpy.data.scenes[‘Scene’].objects[‘Cube.001’], bpy.data.scenes[‘Scene’].objects[‘Cube.002’],]
err, results = get_collision_results(set_a=set_a, set_b=set_b) seen_pairs = set()for result in results: result_pair = result.names result_names_str = str(result_pair)if result_names_str in seen_pairs:continue seen_pairs.add(str(result_pair)) print(35 * ”-”) print(result_names_str) Summarize 本文介绍了基于Blender及BlenderBIM对Ifc模型进行数据分析和编辑的方法。通过与Blender进行交互,同时协同相应的Python脚本,我们使用Ifc模型的能力得以大幅度提升。BIM模型在我们设计施工过程中的价值,可以借此被进一步的发掘和提升。同时借助Blender原生的功能以及基于Blender的生态,Ifc模型应用的可能性也得以进一步的扩展。 We welcome like-minded partners to join us, 一起来做点好玩的事情。

We will bring you more surprises in the future, so follow our official account!
*This document is automatically collected and organized by AI from non-deconstructed public accounts and is for learning reference only. *
Original Source: https://mp.weixin.qq.com/s/Zk1QVnqWtRFTAmoz1BxDBQ
LOADING…