diff --git a/src/bonsai/bonsai/bim/module/classification/ui.py b/src/bonsai/bonsai/bim/module/classification/ui.py index 300cfc5b8c..fcef0ad4bd 100644 --- a/src/bonsai/bonsai/bim/module/classification/ui.py +++ b/src/bonsai/bonsai/bim/module/classification/ui.py @@ -313,10 +313,8 @@ class BIM_PT_material_classifications(Panel, ReferenceUI): if not tool.Ifc.get(): return False props = context.scene.BIMMaterialProperties - if props.materials and props.active_material_index < len(props.materials): - material = props.materials[props.active_material_index] - if material.ifc_definition_id: - return True + if props.is_editing and (material := props.active_material) and material.ifc_definition_id: + return True return False def draw(self, context): diff --git a/src/bonsai/bonsai/bim/module/material/prop.py b/src/bonsai/bonsai/bim/module/material/prop.py index e6cf5ae827..b623083d5f 100644 --- a/src/bonsai/bonsai/bim/module/material/prop.py +++ b/src/bonsai/bonsai/bim/module/material/prop.py @@ -124,6 +124,11 @@ class BIMMaterialProperties(PropertyGroup): styles: EnumProperty(items=get_styles, name="Styles") contexts: EnumProperty(items=get_contexts, name="Contexts") + @property + def active_material(self): + if self.active_material_index < len(self.materials): + return self.materials[self.active_material_index] + class BIMObjectMaterialProperties(PropertyGroup): material_type: EnumProperty(items=get_object_material_type, name="Material Type") diff --git a/src/bonsai/bonsai/bim/module/pset/ui.py b/src/bonsai/bonsai/bim/module/pset/ui.py index 119d4c2c83..69333ac9b4 100644 --- a/src/bonsai/bonsai/bim/module/pset/ui.py +++ b/src/bonsai/bonsai/bim/module/pset/ui.py @@ -402,10 +402,8 @@ class BIM_PT_material_psets(Panel): if not ifc_file or ifc_file.schema == "IFC2X3": return False # We don't support material psets in IFC2X3 because they suck props = context.scene.BIMMaterialProperties - if props.materials and props.active_material_index < len(props.materials): - material = props.materials[props.active_material_index] - if material.ifc_definition_id: - return True + if props.is_editing and (material := props.active_material) and material.ifc_definition_id: + return True return False def draw(self, context):