From 74141bec73a27cfb656fb479c410e433d3bd83af Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 29 Jul 2024 10:43:15 +1000 Subject: [PATCH] Sort pset names and properties alphabetically Can't believe it took this long to get around to doing this --- src/blenderbim/blenderbim/bim/module/pset/data.py | 4 ++-- src/blenderbim/blenderbim/tool/pset.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/pset/data.py b/src/blenderbim/blenderbim/bim/module/pset/data.py index 35a48d6b02..c5207791d9 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/data.py +++ b/src/blenderbim/blenderbim/bim/module/pset/data.py @@ -51,13 +51,13 @@ class Data: psetqtos = ifcopenshell.util.element.get_psets( element, psets_only=psets_only, qtos_only=qtos_only, should_inherit=False ) - for name, data in psetqtos.items(): + for name, data in sorted(psetqtos.items()): results.append( { "id": data["id"], "Name": name, "is_expanded": is_expanded.get(data["id"], True), - "Properties": [{"Name": k, "NominalValue": v} for k, v in data.items() if k != "id"], + "Properties": [{"Name": k, "NominalValue": v} for k, v in sorted(data.items()) if k != "id"], } ) return sorted(results, key=lambda v: v["Name"]) diff --git a/src/blenderbim/blenderbim/tool/pset.py b/src/blenderbim/blenderbim/tool/pset.py index 9f297753f3..f26f2c478b 100644 --- a/src/blenderbim/blenderbim/tool/pset.py +++ b/src/blenderbim/blenderbim/tool/pset.py @@ -98,7 +98,7 @@ class Pset(blenderbim.core.tool.Pset): elif pset.is_a("IfcMaterialProperties") or pset.is_a("IfcProfileProperties"): pset_props = pset.Properties - for prop in pset_props: + for prop in sorted(pset_props, key=lambda p: p.Name): if props.properties.get(prop.Name): continue # This property has already been added from a template if prop.is_a("IfcPropertyEnumeratedValue"): @@ -213,7 +213,7 @@ class Pset(blenderbim.core.tool.Pset): del data["id"] else: data = {} - for prop_template in pset_template.HasPropertyTemplates: + for prop_template in sorted(pset_template.HasPropertyTemplates, key=lambda p: p.Name): if not prop_template.is_a("IfcSimplePropertyTemplate"): continue # Other types not yet supported if prop_template.TemplateType == "P_SINGLEVALUE":