From 09d193045af3881175aee0643d4b7a9d50c939e4 Mon Sep 17 00:00:00 2001 From: falken10vdl Date: Sun, 18 Jan 2026 00:05:07 +0100 Subject: [PATCH] Enhance filter value suggestions to support enumerated properties in search --- .../bonsai/bim/module/search/operator.py | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/search/operator.py b/src/bonsai/bonsai/bim/module/search/operator.py index 2c7a506e78..52992fc8a5 100644 --- a/src/bonsai/bonsai/bim/module/search/operator.py +++ b/src/bonsai/bonsai/bim/module/search/operator.py @@ -445,20 +445,17 @@ class FilterValueSuggestions(Operator): if pset.HasProperties: for prop in pset.HasProperties: if hasattr(prop, "Name") and prop.Name == property_name: - if hasattr(prop, "NominalValue") and prop.NominalValue: - try: - value = prop.NominalValue.wrappedValue - if value is not None and value != "": - if not hasattr(value, "is_a") and not isinstance( - value, (tuple, list) - ): - str_value = str(value) - if not str_value.startswith("#") and not str_value.startswith( - "(" - ): - property_values.add(str_value) - except: - continue + if prop.is_a("IfcPropertyEnumeratedValue"): + if hasattr(prop, "EnumerationReference") and prop.EnumerationReference: + enum_reference = prop.EnumerationReference + if hasattr(enum_reference, "EnumerationValues"): + for enum_value in enum_reference.EnumerationValues: + property_values.add(str(enum_value.wrappedValue)) + if hasattr(prop, "EnumerationValues") and prop.EnumerationValues: + for enum_value in prop.EnumerationValues: + property_values.add(str(enum_value.wrappedValue)) + elif hasattr(prop, "NominalValue") and prop.NominalValue: + property_values.add(str(prop.NominalValue.wrappedValue)) except: continue return property_values