通过Blender玩转IFC
通过Blender玩转IFC
公众号:非解构 · 作者:上叶侬(用户提供链接,标记为上叶侬)
Ifc模型 Ifc(Industry Foundation Classes)作为当下最流行的通用BIM数据标准,蕴含了建筑工程从设计规划到施工运维等全生命周期内放方方面面的数据。IFC起始于1994年,由buildingSMART组织(前身为国际互操作性联盟,IAI)开发和维护,并已在国际标准化组织注册,最新版的标准号为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模型的修改。虽然在它的架构下,工程师可以开发一些插件满足自己个性化的需求,但是这个门槛还是比较高的。

为了解决上述问题,小编在这里为大家推荐Blender+BlenderBim的方案,帮助大家便捷地查看,修改ifc模型,同时也能快速地解析ifc模型相关数据,以便我们进一步决策。Blender是一款开源免费的三维全功能软件,同时支持Windows、Mac和Linux系统。功能包含建模、材质、灯光、实时渲染、三维动画、雕刻、材质绘制、后期合成、绿屏抠像、摄影机跟踪、物理特效模拟等。BlenderBIM是一款基于Blender的IFC插件,用户可以通过该插件,在Blender中创建建筑的ifc模型,编辑ifc模型的相关属性,获取ifc模型的相关数据。 Blender及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) 安装完Blender后,点击Edit=》Preferences

在add-ons选项卡下点击install,安装之前下载BlenderBim插件。点击插件名称前的单选框,启动BlenderBim插件。

安装完成后,点击Blender的File菜单,出现了New Ifc Project,Open Ifc Project等命令。此时BlenderBim插件安装成功。在软件界面的左侧,也出现和很多绿色的图标,用于创建Ifc模型中的构件。

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

双击界面下的任一构件,我们可以在Blender界面右侧的scense property窗口中查看对应构件的属性。对应构件的一系列属性,包括GlobalId, Attributes, Properties, Quantities等等都可以从该窗口中进行查看。我们甚至可以通过这个窗口修改相关的属性,或者相关对象的坐标,尺寸等等。

模型及构件的创建 点击文件菜单中的New Ifc Project,就可新建一个新的Ifc模型。

通过view窗体的Add菜单,可以在创建一个立方体。

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

我们同样地可以通过BlenderBim预设的一些按钮创建构件。如点击Create Wall按钮,跟着窗口的各项引导,我们就可以创建对应坐标和对应几何尺寸的构件。

Python激活你的Ifc 简单的脚本 Scripting是Blender的一个重要模块。我们可以在Scripting窗体中输入Python脚本,通过Python脚本与当前的模型进行交互。点击Scripting,然后点击New,此时我们就可以输入相应的Python代码。

我们可以尝试通过以下一段代码,获取ifc模型中的构件的属性: import ifcopenshell.utilimport ifcopenshell.util.element model = ifcopenshell.open(r’F:\2024\通过blender玩转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}} 可以看到,通过简单的Python脚本,我们获取了对应构件所有属性的信息。 遍历整个Ifc文件 接下来,我们就可以尝试通过Python,遍历整个Ifc模型中的所有楼层中的构件。 来看这样一张Ifc模型的数据结构关系图:

通过该图我们可以看到整个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 可以看到,代码执行的结果是以本文开头提及的EXPRESS进行展示的。此段代码完整地遍历了项目中所有楼层和构件。 当然,我们也可以通过直接与blender的python扩展交互的方式,获取我们需要的模型数据。如下面这段代码是获取当前界面中显示的所有的IfcWall。 import bpywalls = [obj for obj in bpy.context.scene.objects if obj.name.startswith(“IfcWall”)]print(walls) 以下代码为将属性写入选中的构件: 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 !” 甚至我们还可以通过相关的代码进行碰撞检查: 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) 总结 本文介绍了基于Blender及BlenderBIM对Ifc模型进行数据分析和编辑的方法。通过与Blender进行交互,同时协同相应的Python脚本,我们使用Ifc模型的能力得以大幅度提升。BIM模型在我们设计施工过程中的价值,可以借此被进一步的发掘和提升。同时借助Blender原生的功能以及基于Blender的生态,Ifc模型应用的可能性也得以进一步的扩展。 欢迎志同道合的伙伴们加入我们, 一起来做点好玩的事情。

接下来还会给您带来更多惊喜,关注我们公众号吧!
本文档由AI从非解构公众号自动采集整理,仅供学习参考。
LOADING…