From 4408a23873c06602353d36a87ef0e7c593e51c1e Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 28 Oct 2022 22:30:43 +1100 Subject: [PATCH] Merge duplicate types IfcPatch recipe can now merge based on any attribute --- ...geDuplicateTypesByTag.py => MergeDuplicateTypes.py} | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) rename src/ifcpatch/ifcpatch/recipes/{MergeDuplicateTypesByTag.py => MergeDuplicateTypes.py} (93%) diff --git a/src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypesByTag.py b/src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypes.py similarity index 93% rename from src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypesByTag.py rename to src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypes.py index 345ff5bbce..ab29957464 100644 --- a/src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypesByTag.py +++ b/src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypes.py @@ -28,9 +28,13 @@ class Patcher: self.args = args def patch(self): - tags = {} + if self.args: + key = self.args[0] + else: + key = "Tag" + keys = {} for element_type in self.file.by_type("IfcTypeObject"): - original_type = tags.get(element_type.Tag, None) + original_type = keys.get(getattr(element_type, key), None) if original_type: for element in ifcopenshell.util.element.get_types(element_type): self.assign_type(element, original_type) @@ -38,7 +42,7 @@ class Patcher: ifcopenshell.util.element.replace_attribute(inverse, element_type, original_type) self.file.remove(element_type) else: - tags[element_type.Tag] = element_type + keys[getattr(element_type, key)] = element_type def assign_type(self, related_object, relating_type): # This is basically a portion of the type.assign_type API which only