From 5acbf4658f914b66ba7bee44932ad8b776fcae1c Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 3 Nov 2022 23:44:47 +1100 Subject: [PATCH] Material UI now prompts to add a profile if none exist in your library --- .../blenderbim/bim/module/material/data.py | 2 ++ .../blenderbim/bim/module/material/ui.py | 17 +++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/material/data.py b/src/blenderbim/blenderbim/bim/module/material/data.py index e8238f1016..a356e53330 100644 --- a/src/blenderbim/blenderbim/bim/module/material/data.py +++ b/src/blenderbim/blenderbim/bim/module/material/data.py @@ -179,6 +179,8 @@ class ObjectMaterialData: for item in items or []: data = {"id": item.id(), "name": item.Name or "Unnamed", "icon": icon} + if item.is_a("IfcMaterialProfile") and not item.Name: + data["name"] = item.Profile.ProfileName or "Unnamed" if item.is_a("IfcMaterialLayer"): data["name"] += f" ({item.LayerThickness})" if not item.is_a("IfcMaterialList"): diff --git a/src/blenderbim/blenderbim/bim/module/material/ui.py b/src/blenderbim/blenderbim/bim/module/material/ui.py index 5790903ce7..ce45872412 100644 --- a/src/blenderbim/blenderbim/bim/module/material/ui.py +++ b/src/blenderbim/blenderbim/bim/module/material/ui.py @@ -195,12 +195,17 @@ class BIM_PT_object_material(Panel): blenderbim.bim.helper.draw_attributes(self.props.material_set_attributes, self.layout) blenderbim.bim.helper.draw_attributes(self.props.material_set_usage_attributes, self.layout) - row = self.layout.row(align=True) - if ObjectMaterialData.data["set_item_name"] == "profile": - row.prop(self.mprops, "profiles", icon="ITALIC", text="") - prop_with_search(row, self.props, "material", icon="MATERIAL", text="") - op = row.operator(f"bim.add_{ObjectMaterialData.data['set_item_name']}", icon="ADD", text="") - setattr(op, f"{ObjectMaterialData.data['set_item_name']}_set", ObjectMaterialData.data["set"]["id"]) + if ObjectMaterialData.data["set_item_name"] == "profile" and not self.mprops.profiles: + row = self.layout.row(align=True) + row.label(text="No Profiles Available") + row.operator("bim.add_profile_def", icon="ADD", text="") + else: + row = self.layout.row(align=True) + if ObjectMaterialData.data["set_item_name"] == "profile": + row.prop(self.mprops, "profiles", icon="ITALIC", text="") + prop_with_search(row, self.props, "material", icon="MATERIAL", text="") + op = row.operator(f"bim.add_{ObjectMaterialData.data['set_item_name']}", icon="ADD", text="") + setattr(op, f"{ObjectMaterialData.data['set_item_name']}_set", ObjectMaterialData.data["set"]["id"]) total_items = len(ObjectMaterialData.data["set_items"]) for index, set_item in enumerate(ObjectMaterialData.data["set_items"]):