From 9ae3f1bc6f9c4f33344a927f9ecedc7fe4bfbd80 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Sun, 11 Sep 2016 13:28:40 -0300 Subject: [PATCH] Arch: Better retrieval of materials from IFC files --- src/Mod/Arch/importIFC.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Mod/Arch/importIFC.py b/src/Mod/Arch/importIFC.py index 4e1545b34..116c3c236 100644 --- a/src/Mod/Arch/importIFC.py +++ b/src/Mod/Arch/importIFC.py @@ -395,7 +395,14 @@ def insert(filename,docname,skip=[],only=[],root=None): properties[obj.id()].update(prop_by_category) for r in ifcfile.by_type("IfcRelAssociatesMaterial"): for o in r.RelatedObjects: - mattable[o.id()] = r.RelatingMaterial.id() + if r.RelatingMaterial.is_a("IfcMaterial"): + mattable[o.id()] = r.RelatingMaterial.id() + elif r.RelatingMaterial.is_a("IfcMaterialLayer"): + mattable[o.id()] = r.RelatingMaterial.Material.id() + elif r.RelatingMaterial.is_a("IfcMaterialLayerSet"): + mattable[o.id()] = r.RelatingMaterial.MaterialLayers[0].Material.id() + elif r.RelatingMaterial.is_a("IfcMaterialLayerSetUsage"): + mattable[o.id()] = r.RelatingMaterial.ForLayerSet.MaterialLayers[0].Material.id() for r in ifcfile.by_type("IfcStyledItem"): if r.Styles: if r.Styles[0].is_a("IfcPresentationStyleAssignment"): @@ -879,7 +886,8 @@ def insert(filename,docname,skip=[],only=[],root=None): # Materials if DEBUG and materials: print "Creating materials..." - + print "mattable:",mattable + print "materials:",materials fcmats = {} for material in materials: name = "Material"