From 6b85e9ec851054867b35b96fbbd3b607a926e8f3 Mon Sep 17 00:00:00 2001 From: falken10 <33285113+falken10@users.noreply.github.com> Date: Mon, 10 Mar 2025 19:18:46 +0100 Subject: [PATCH] Update operator.py This will sort the groups by name so it is easy to find them. --- .../bonsai/bim/module/group/operator.py | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/group/operator.py b/src/bonsai/bonsai/bim/module/group/operator.py index 9a9124ebfa..113b520e7f 100644 --- a/src/bonsai/bonsai/bim/module/group/operator.py +++ b/src/bonsai/bonsai/bim/module/group/operator.py @@ -35,9 +35,12 @@ class LoadGroups(bpy.types.Operator, tool.Ifc.Operator): self.expanded_groups = json.loads(context.scene.ExpandedGroups.json_string) self.props.groups.clear() - for group in tool.Ifc.get().by_type("IfcGroup", include_subtypes=False): - if not group.HasAssignments: - self.load_group(group) + groups = [group for group in tool.Ifc.get().by_type("IfcGroup", include_subtypes=False) if not group.HasAssignments] + sorted_groups = sorted(groups, key=lambda group: group.Name or "Unnamed") + + for group in sorted_groups: + self.load_group(group) + self.props.is_editing = True bpy.ops.bim.disable_editing_group() @@ -51,14 +54,14 @@ class LoadGroups(bpy.types.Operator, tool.Ifc.Operator): new.has_children = False new.is_expanded = group.id() in self.expanded_groups - for rel in group.IsGroupedBy or []: - for related_object in rel.RelatedObjects: - if not related_object.is_a("IfcGroup"): - continue - new.has_children = True - if not new.is_expanded: - return - self.load_group(related_object, tree_depth=tree_depth + 1) + related_groups = [related_object for rel in group.IsGroupedBy or [] for related_object in rel.RelatedObjects if related_object.is_a("IfcGroup")] + sorted_related_groups = sorted(related_groups, key=lambda group: group.Name or "Unnamed") + + for related_group in sorted_related_groups: + new.has_children = True + if not new.is_expanded: + return + self.load_group(related_group, tree_depth=tree_depth + 1) class ToggleGroup(bpy.types.Operator, tool.Ifc.Operator):