From 2a91d212b3a2be5d8ab4584e27086b331132bb8f Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Wed, 15 Apr 2026 17:12:22 -0500 Subject: [PATCH] Deduplicate aggregates in select_aggregate clipboard query All selected objects sharing the same aggregate would produce duplicate entries in the clipboard query. Aggregates are now collected into a dict keyed by id before selection and query generation. Generated with the assistance of an AI coding tool. --- src/bonsai/bonsai/bim/module/aggregate/operator.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/aggregate/operator.py b/src/bonsai/bonsai/bim/module/aggregate/operator.py index 84fd4250b5..8bb658f274 100644 --- a/src/bonsai/bonsai/bim/module/aggregate/operator.py +++ b/src/bonsai/bonsai/bim/module/aggregate/operator.py @@ -282,19 +282,21 @@ class BIM_OT_select_aggregate(bpy.types.Operator): return self.execute(context) def execute(self, context): - all_parts = [] + aggregates = {} for obj in context.selected_objects: element = tool.Ifc.get_entity(obj) if element: aggregate = ifcopenshell.util.element.get_aggregate(element) if aggregate: - all_parts.append(aggregate) + aggregates[aggregate.id()] = aggregate obj.select_set(False) else: pass if not element: obj.select_set(False) + all_parts = list(aggregates.values()) + if self.select_parts: selected_parts = []