From db9af13843b672f4b5e848b766464bf1f5fce75b Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 20 Sep 2022 22:46:07 +1000 Subject: [PATCH] Fix #2427. Don't treat missing mandatory attributes as fatal in IFC version migration --- src/ifcopenshell-python/ifcopenshell/util/schema.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/util/schema.py b/src/ifcopenshell-python/ifcopenshell/util/schema.py index 3ec12889f9..214810f880 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/schema.py +++ b/src/ifcopenshell-python/ifcopenshell/util/schema.py @@ -125,6 +125,8 @@ class Migrator: } def migrate(self, element, new_file): + if element.id() == 0: + return new_file.create_entity(element.is_a(), element.wrappedValue) try: return new_file.by_id(self.migrated_ids[element.id()]) except: @@ -214,13 +216,12 @@ class Migrator: for item in value: new_value.append(self.migrate(item, new_file)) value = new_value - setattr(new_element, attribute.name(), value) + if value is not None: + setattr(new_element, attribute.name(), value) def generate_default_value(self, attribute, new_file): if attribute.name() in self.default_values: return self.default_values[attribute.name()] - elif self.default_entities[attribute.name()]: - return self.default_entities[attribute.name()] elif attribute.name() == "OwnerHistory": self.default_entities[attribute.name()] = new_file.create_entity( "IfcOwnerHistory", @@ -249,4 +250,4 @@ class Migrator: "CreationDate": int(time.time()), }, ) - return self.default_entities[attribute.name()] + return self.default_entities.get(attribute.name(), None)