From 99ca1c7eb4952b67e4c996eda95dec2a3285d062 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Tue, 2 Sep 2025 17:03:51 +0500 Subject: [PATCH] Add description for pset enum properties too Example - https://files.catbox.moe/ysmw6v.png --- src/bonsai/bonsai/bim/ui.py | 12 ++++++++++++ src/bonsai/bonsai/tool/pset.py | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/bonsai/bonsai/bim/ui.py b/src/bonsai/bonsai/bim/ui.py index 889f8406c0..20068422f5 100644 --- a/src/bonsai/bonsai/bim/ui.py +++ b/src/bonsai/bonsai/bim/ui.py @@ -37,6 +37,7 @@ import bonsai.tool as tool from ifcopenshell.util.file import IfcHeaderExtractor from bonsai.bim.prop import Attribute from bonsai.bim.module.bsdd.prop import BIMBSDDProperties +from bonsai.bim.module.pset.prop import IfcProperty from typing import Optional, TYPE_CHECKING, Literal from natsort import natsorted @@ -1424,6 +1425,17 @@ def draw_custom_context_menu(self: bpy.types.Menu, context: bpy.types.Context) - if isinstance(prop_struct, Attribute): attr = prop_struct + + # Hacky way to get Attribute containing description for enumerated values. + pset_enum_identifier = ".enumerated_value.enumerated_values[" + attr_path = prop_struct.path_from_id() + if pset_enum_identifier in attr_path: + attr_path = attr_path.partition(pset_enum_identifier)[0] + assert (data_block := prop_struct.id_data) + attr = data_block.path_resolve(attr_path) + assert isinstance(attr, IfcProperty) + attr = attr.metadata + description = attr.description ifc_class = attr.ifc_class if ifc_class: diff --git a/src/bonsai/bonsai/tool/pset.py b/src/bonsai/bonsai/tool/pset.py index d5b82c9aa6..b6901238ba 100644 --- a/src/bonsai/bonsai/tool/pset.py +++ b/src/bonsai/bonsai/tool/pset.py @@ -210,6 +210,7 @@ class Pset(bonsai.core.tool.Pset): metadata.name = prop.Name metadata.is_null = len(simple_prop.enumerated_value.enumerated_values) == 0 metadata.is_optional = True + process_prop_description(metadata) enum_reference = prop.EnumerationReference selected_enum_items = [v.wrappedValue for v in (prop.EnumerationValues or ())] @@ -297,6 +298,7 @@ class Pset(bonsai.core.tool.Pset): metadata.is_null = data.get(prop_template.Name, None) is None metadata.is_optional = True metadata.special_type = "URI" if prop_template.PrimaryMeasureType == "IfcURIReference" else "" + bonsai.bim.helper.add_attribute_description(metadata, prop_template) # Cute hack to abuse the metadata to find the Blender data_type metadata.set_value(enum_items[0])