From e56648e393fa9a1a3c632eeb39259cea23435c79 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 6 Aug 2020 20:27:10 +1000 Subject: [PATCH] Simple recipe to merge two IFC files --- src/ifcpatch/recipes/MergeProject.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/ifcpatch/recipes/MergeProject.py diff --git a/src/ifcpatch/recipes/MergeProject.py b/src/ifcpatch/recipes/MergeProject.py new file mode 100644 index 0000000000..cfe775551f --- /dev/null +++ b/src/ifcpatch/recipes/MergeProject.py @@ -0,0 +1,19 @@ +import ifcopenshell +import ifcopenshell.util.element + +class Patcher: + def __init__(self, src, file, logger, args=None): + self.src = src + self.file = file + self.logger = logger + self.args = args + + def patch(self): + source = ifcopenshell.open(self.args[0]) + original_project = self.file.by_type('IfcProject')[0] + merged_project = self.file.add(source.by_type('IfcProject')[0]) + for element in source.by_type('IfcRoot'): + self.file.add(element) + for inverse in self.file.get_inverse(merged_project): + ifcopenshell.util.element.replace_attribute(inverse, merged_project, original_project) + self.file.remove(merged_project)