From 52036e9bd40208d31c2b69cdce3d07b3c976c4f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Mon, 20 Nov 2023 16:38:10 -0300 Subject: [PATCH] merged the branch 'improvements-on-override-duplicat' --- .../bim/module/geometry/operator.py | 53 +++---------------- 1 file changed, 6 insertions(+), 47 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index 2137e742d5..60a5f2b077 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -866,32 +866,6 @@ 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]), - # ) - - # # 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(): @@ -1028,27 +1002,12 @@ class DuplicateMoveLinkedAggregate(bpy.types.Operator): old_to_new = OverrideDuplicateMove.execute_ifc_duplicate_operator(self, context, linked=True) - # TODO check how this will interact with the new code from duplicate operator - for old_element, new_element in old_to_new.items(): - old_aggregate = ifcopenshell.util.element.get_aggregate(old_element) - if old_aggregate: - if old_element.GlobalId == selected_element.GlobalId: - blenderbim.core.aggregate.unassign_object( - tool.Ifc, - tool.Aggregate, - tool.Collector, - relating_obj=tool.Ifc.get_object(old_aggregate), - related_obj=tool.Ifc.get_object(new_element[0]), - ) - else: - 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_element[0]), - ) + + # Recreate assembly relationship + for old in old_to_new.keys(): + if old.is_a("IfcElementAssembly"): + tool.Root.recreate_assembly(old_to_new) + blenderbim.bim.handler.refresh_ui_data()