From a378b6b66f8a5992fc1452567ff59bdb613abc80 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sun, 16 May 2021 06:32:39 +0200 Subject: [PATCH] Arch, import IFC, fix in materials --- src/Mod/Arch/importIFCHelper.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Mod/Arch/importIFCHelper.py b/src/Mod/Arch/importIFCHelper.py index 46fdd8e1da..c705e83890 100644 --- a/src/Mod/Arch/importIFCHelper.py +++ b/src/Mod/Arch/importIFCHelper.py @@ -241,15 +241,18 @@ def buildRelMattable(ifcfile): mattable = {} # { objid:matid } for r in ifcfile.by_type("IfcRelAssociatesMaterial"): - for o in r.RelatedObjects: - 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() + # the related object might not exist + # https://forum.freecadweb.org/viewtopic.php?f=39&t=58607 + if r.RelatedObjects: + for o in r.RelatedObjects: + 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() return mattable