mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 14:41:25 +00:00
Support natural sorting of types closes #5050
This commit is contained in:
@@ -25,6 +25,7 @@ import ifcopenshell.util.schema
|
|||||||
from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc
|
from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc
|
||||||
import bonsai.tool as tool
|
import bonsai.tool as tool
|
||||||
from math import degrees
|
from math import degrees
|
||||||
|
from natsort import natsorted
|
||||||
|
|
||||||
|
|
||||||
def refresh():
|
def refresh():
|
||||||
@@ -165,7 +166,7 @@ class AuthoringData:
|
|||||||
if not type_class:
|
if not type_class:
|
||||||
return []
|
return []
|
||||||
results = []
|
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]
|
elements = elements[(cls.props.type_page - 1) * cls.types_per_page : cls.props.type_page * cls.types_per_page]
|
||||||
for element in elements:
|
for element in elements:
|
||||||
predefined_type = ifcopenshell.util.element.get_predefined_type(element)
|
predefined_type = ifcopenshell.util.element.get_predefined_type(element)
|
||||||
@@ -256,7 +257,7 @@ class AuthoringData:
|
|||||||
if not ifc_class and ifc_classes:
|
if not ifc_class and ifc_classes:
|
||||||
ifc_class = ifc_classes[0][0]
|
ifc_class = ifc_classes[0][0]
|
||||||
if ifc_class:
|
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)
|
results.extend(elements)
|
||||||
return [(str(e.id()), e.Name or "Unnamed", e.Description or "") for e in results]
|
return [(str(e.id()), e.Name or "Unnamed", e.Description or "") for e in results]
|
||||||
return []
|
return []
|
||||||
|
|||||||
Reference in New Issue
Block a user