From f708d9cb4d0f90783d7ee4628e2cece2b6c4f2f8 Mon Sep 17 00:00:00 2001 From: Manu Varkey Date: Fri, 20 Sep 2024 01:09:27 +0530 Subject: [PATCH] Support natural sorting of types closes #5050 --- src/bonsai/bonsai/bim/module/model/data.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/data.py b/src/bonsai/bonsai/bim/module/model/data.py index 16ea184fb1..fd5528e910 100644 --- a/src/bonsai/bonsai/bim/module/model/data.py +++ b/src/bonsai/bonsai/bim/module/model/data.py @@ -25,6 +25,7 @@ import ifcopenshell.util.schema from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc import bonsai.tool as tool from math import degrees +from natsort import natsorted def refresh(): @@ -165,7 +166,7 @@ class AuthoringData: if not type_class: return [] results = [] - elements = sorted(tool.Ifc.get().by_type(type_class), key=lambda e: e.Name or "Unnamed") + elements = natsorted(tool.Ifc.get().by_type(type_class), key=lambda e: e.Name or "Unnamed") elements = elements[(cls.props.type_page - 1) * cls.types_per_page : cls.props.type_page * cls.types_per_page] for element in elements: predefined_type = ifcopenshell.util.element.get_predefined_type(element) @@ -256,7 +257,7 @@ class AuthoringData: if not ifc_class and ifc_classes: ifc_class = ifc_classes[0][0] if ifc_class: - elements = sorted(tool.Ifc.get().by_type(ifc_class), key=lambda s: (s.Name or "Unnamed").lower()) + elements = natsorted(tool.Ifc.get().by_type(ifc_class), key=lambda s: (s.Name or "Unnamed").lower()) results.extend(elements) return [(str(e.id()), e.Name or "Unnamed", e.Description or "") for e in results] return []