From ffc8ec8c8d64c1bb6357e7eb82f136e78e320c7a Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 25 Feb 2020 17:43:48 +1100 Subject: [PATCH] Accomodate deprecated IFC2X3 ways of relating type products --- src/ifcblenderexport/blenderbim/import_ifc.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/import_ifc.py b/src/ifcblenderexport/blenderbim/import_ifc.py index edea2b12ec..2221803aaf 100644 --- a/src/ifcblenderexport/blenderbim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/import_ifc.py @@ -365,9 +365,18 @@ class IfcImporter(): new_prop.string_value = str(prop.NominalValue.wrappedValue) def add_defines_by_type_relation(self, element, obj): - if not hasattr(element, 'IsTypedBy') or not element.IsTypedBy: - return - obj.BIMObjectProperties.type_product = self.type_products[element.IsTypedBy[0].RelatingType.GlobalId] + if self.file.schema == 'IFC2X3': + if not hasattr(element, 'IsDefinedBy') or not element.IsDefinedBy: + return + for relationship in element.IsDefinedBy: + if relationship.is_a('IfcRelDefinesByType'): + related_type = relationship.RelatingType + break + else: + if not hasattr(element, 'IsTypedBy') or not element.IsTypedBy: + return + related_type = element.IsTypedBy[0].RelatingType + obj.BIMObjectProperties.type_product = self.type_products[related_type.GlobalId] def load_diff(self): if not self.ifc_import_settings.diff_file: