From 61bd98e7dbf8d5f05a9bffeebe26570f54e5f23d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Tue, 7 Nov 2023 18:28:43 -0300 Subject: [PATCH] moved 'recreate_assembly' to tool/root.py --- .../bim/module/geometry/operator.py | 52 +++++++++---------- src/blenderbim/blenderbim/tool/root.py | 28 ++++++++++ 2 files changed, 54 insertions(+), 26 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index 67e3aa1512..92627c7ebc 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -810,7 +810,7 @@ class OverrideDuplicateMove(bpy.types.Operator): # Recreate assembly relationship for old in old_to_new.keys(): if old.is_a("IfcElementAssembly"): - OverrideDuplicateMove.recreate_assembly(old_to_new) + tool.Root.recreate_assembly(old_to_new) # Remove connections with old objects and recreates paths OverrideDuplicateMove.remove_old_connections(old_to_new) @@ -856,32 +856,32 @@ class OverrideDuplicateMove(bpy.types.Operator): return arrays_to_create, array_children - @staticmethod - def recreate_assembly(old_to_new): - for old, new in old_to_new.items(): - old_aggregate = ifcopenshell.util.element.get_aggregate(old) - if old_aggregate: - new_aggregate = old_to_new[old_aggregate] - blenderbim.core.aggregate.assign_object( - tool.Ifc, - tool.Aggregate, - tool.Collector, - relating_obj=tool.Ifc.get_object(new_aggregate[0]), - related_obj=tool.Ifc.get_object(new[0]), - ) + # @staticmethod + # def recreate_assembly(old_to_new): + # for old, new in old_to_new.items(): + # old_aggregate = ifcopenshell.util.element.get_aggregate(old) + # if old_aggregate: + # new_aggregate = old_to_new[old_aggregate] + # blenderbim.core.aggregate.assign_object( + # tool.Ifc, + # tool.Aggregate, + # tool.Collector, + # relating_obj=tool.Ifc.get_object(new_aggregate[0]), + # related_obj=tool.Ifc.get_object(new[0]), + # ) - # Make sure that the array children also get reassigned to the correct aggregate - pset = ifcopenshell.util.element.get_pset(new[0], "BBIM_Array") - if pset: - array_children = tool.Blender.Modifier.Array.get_all_children_objects(new[0]) - for obj in array_children: - blenderbim.core.aggregate.assign_object( - tool.Ifc, - tool.Aggregate, - tool.Collector, - relating_obj=tool.Ifc.get_object(new_aggregate[0]), - related_obj=tool.Ifc.get_object(tool.Ifc.get_entity(obj)), - ) + # # Make sure that the array children also get reassigned to the correct aggregate + # pset = ifcopenshell.util.element.get_pset(new[0], "BBIM_Array") + # if pset: + # array_children = tool.Blender.Modifier.Array.get_all_children_objects(new[0]) + # for obj in array_children: + # blenderbim.core.aggregate.assign_object( + # tool.Ifc, + # tool.Aggregate, + # tool.Collector, + # relating_obj=tool.Ifc.get_object(new_aggregate[0]), + # related_obj=tool.Ifc.get_object(tool.Ifc.get_entity(obj)), + # ) def remove_old_connections(old_to_new): for new in old_to_new.values(): diff --git a/src/blenderbim/blenderbim/tool/root.py b/src/blenderbim/blenderbim/tool/root.py index 0dc657353f..364c01a276 100644 --- a/src/blenderbim/blenderbim/tool/root.py +++ b/src/blenderbim/blenderbim/tool/root.py @@ -230,6 +230,34 @@ class Root(blenderbim.core.tool.Root): relating_connection=data["relating_connection_type"], related_connection=data["related_connection_type"], ) + + + @classmethod + def recreate_assembly(cls, old_to_new): + for old, new in old_to_new.items(): + old_aggregate = ifcopenshell.util.element.get_aggregate(old) + if old_aggregate: + new_aggregate = old_to_new[old_aggregate] + blenderbim.core.aggregate.assign_object( + tool.Ifc, + tool.Aggregate, + tool.Collector, + relating_obj=tool.Ifc.get_object(new_aggregate[0]), + related_obj=tool.Ifc.get_object(new[0]), + ) + + # Make sure that the array children also get reassigned to the correct aggregate + pset = ifcopenshell.util.element.get_pset(new[0], "BBIM_Array") + if pset: + array_children = tool.Blender.Modifier.Array.get_all_children_objects(new[0]) + for obj in array_children: + blenderbim.core.aggregate.assign_object( + tool.Ifc, + tool.Aggregate, + tool.Collector, + relating_obj=tool.Ifc.get_object(new_aggregate[0]), + related_obj=tool.Ifc.get_object(tool.Ifc.get_entity(obj)), + ) @classmethod