From ed316ba691941f368dbb589a7ee3cdbad07aa986 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sun, 6 Jun 2021 20:55:25 +1000 Subject: [PATCH] Fix #1382. You can now search property values agnostic of pset names. Thanks stefkeB! --- .../blenderbim/bim/module/search/operator.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/search/operator.py b/src/blenderbim/blenderbim/bim/module/search/operator.py index 500fd42cc3..93ed1fb61b 100644 --- a/src/blenderbim/blenderbim/bim/module/search/operator.py +++ b/src/blenderbim/blenderbim/bim/module/search/operator.py @@ -111,11 +111,16 @@ class SelectPset(bpy.types.Operator): continue element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) psets = ifcopenshell.util.element.get_psets(element) + if search_pset_name == "": + props = {} + [props.update(p) for p in psets.values()] + else: + props = None if context.scene.BIMSearchProperties.should_ignorecase: - props = next((v for k, v in psets.items() if k.lower() == search_pset_name.lower()), {}) + props = props or next((v for k, v in psets.items() if k.lower() == search_pset_name.lower()), {}) value = str(next((v for k, v in props.items() if k.lower() == search_prop_name.lower()), None)) else: - props = psets.get(search_pset_name, {}) + props = props or psets.get(search_pset_name, {}) value = props.get(search_prop_name, None) if does_keyword_exist(pattern, value): obj.select_set(True) @@ -163,11 +168,16 @@ class ColourByPset(bpy.types.Operator): continue element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) psets = ifcopenshell.util.element.get_psets(element) + if search_pset_name == "": + props = {} + [props.update(p) for p in psets.values()] + else: + props = None if context.scene.BIMSearchProperties.should_ignorecase: - props = next((v for k, v in psets.items() if k.lower() == search_pset_name.lower()), {}) + props = props or next((v for k, v in psets.items() if k.lower() == search_pset_name.lower()), {}) value = str(next((v for k, v in props.items() if k.lower() == search_prop_name.lower()), None)) else: - props = psets.get(search_pset_name, {}) + props = props or psets.get(search_pset_name, {}) value = str(props.get(search_prop_name, None)) if value not in values: values[value] = next(colours)