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.
This commit is contained in:
Ryan Schultz
2026-04-15 17:12:22 -05:00
parent a14b02d32f
commit 2a91d212b3
@@ -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 = []