From 8b360742a7594888d7838bc426a56087bac2ae4d Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 15 Feb 2024 16:04:01 +0500 Subject: [PATCH] sort representation items in ui based on shape aspect - display shape aspect along with the repsentation type - sort representation items based on shape aspects name, items without shape aspects come last --- src/blenderbim/blenderbim/bim/module/geometry/operator.py | 5 +++++ src/blenderbim/blenderbim/bim/module/geometry/ui.py | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index bbd1682289..a58ca6ab50 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -1603,6 +1603,11 @@ class EnableEditingRepresentationItems(bpy.types.Operator, Operator): new.shape_aspect = shape_aspect.Name new.shape_aspect_id = shape_aspect.id() + # sort created items + sorted_items = sorted(props.items[:], key=lambda i: (not i.shape_aspect, i.shape_aspect)) + for i, item in enumerate(sorted_items[:-1]): # last item is sorted automatically + props.items.move(props.items[:].index(item), i) + class DisableEditingRepresentationItems(bpy.types.Operator, Operator): bl_idname = "bim.disable_editing_representation_items" diff --git a/src/blenderbim/blenderbim/bim/module/geometry/ui.py b/src/blenderbim/blenderbim/bim/module/geometry/ui.py index 8063787912..ea596cad28 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/ui.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/ui.py @@ -507,7 +507,10 @@ class BIM_UL_representation_items(UIList): if item: icon = "MATERIAL" if item.surface_style else "MESH_UVSPHERE" row = layout.row(align=True) - row.label(text=item.name, icon=icon) + item_name = item.name + if item.shape_aspect: + item_name = f"{item.shape_aspect} {item_name}" + row.label(text=item_name, icon=icon) if item.layer: row.label(text="", icon="STICKY_UVS_LOC") op = row.operator("bim.remove_representation_item", icon="X", text="")