diff --git a/src/blenderbim/blenderbim/bim/module/material/data.py b/src/blenderbim/blenderbim/bim/module/material/data.py index 9e1d4154b9..7d96782ff3 100644 --- a/src/blenderbim/blenderbim/bim/module/material/data.py +++ b/src/blenderbim/blenderbim/bim/module/material/data.py @@ -173,6 +173,8 @@ class ObjectMaterialData: items = cls.material.MaterialProfiles elif cls.material.is_a("IfcMaterialConstituentSet"): items = cls.material.MaterialConstituents + elif cls.material.is_a("IfcMaterialList"): + items = cls.material.Materials icon = "LAYER_ACTIVE" if "Layer" in cls.material.is_a(): @@ -191,7 +193,9 @@ class ObjectMaterialData: data["name"] = "No Profile" if item.is_a("IfcMaterialLayer"): data["name"] += f" ({item.LayerThickness})" - if not item.is_a("IfcMaterialList"): + if item.is_a("IfcMaterial"): + data["material"] = item.Name or "Unnamed" + else: data["material"] = item.Material.Name or "Unnamed" results.append(data) return results diff --git a/src/blenderbim/blenderbim/bim/module/material/operator.py b/src/blenderbim/blenderbim/bim/module/material/operator.py index dd245000ab..fc591ef171 100644 --- a/src/blenderbim/blenderbim/bim/module/material/operator.py +++ b/src/blenderbim/blenderbim/bim/module/material/operator.py @@ -174,7 +174,7 @@ class AssignMaterial(bpy.types.Operator, tool.Ifc.Operator): def _execute(self, context): objects = [bpy.data.objects.get(self.obj)] if self.obj else tool.Blender.get_selected_objects() - core.assign_material(tool.Ifc, tool.Material, material_type= self.material_type , objects=objects ) + core.assign_material(tool.Ifc, tool.Material, material_type=self.material_type, objects=objects) class UnassignMaterial(bpy.types.Operator, tool.Ifc.Operator): @@ -185,7 +185,7 @@ class UnassignMaterial(bpy.types.Operator, tool.Ifc.Operator): def _execute(self, context): objects = [bpy.data.objects.get(self.obj)] if self.obj else tool.Blender.get_selected_objects() - core.unassign_material(tool.Ifc, tool.Material, objects=objects ) + core.unassign_material(tool.Ifc, tool.Material, objects=objects) class AddConstituent(bpy.types.Operator, tool.Ifc.Operator): @@ -350,10 +350,8 @@ class AddListItem(bpy.types.Operator, tool.Ifc.Operator): ifcopenshell.api.run( "material.add_list_item", self.file, - **{ - "material_list": self.file.by_id(self.list_item_set), - "material": self.file.by_id(int(obj.BIMObjectMaterialProperties.material)), - }, + material_list=self.file.by_id(self.list_item_set), + material=self.file.by_id(int(obj.BIMObjectMaterialProperties.material)), ) diff --git a/src/blenderbim/blenderbim/bim/module/material/ui.py b/src/blenderbim/blenderbim/bim/module/material/ui.py index dc50a8db14..fcdc30b75c 100644 --- a/src/blenderbim/blenderbim/bim/module/material/ui.py +++ b/src/blenderbim/blenderbim/bim/module/material/ui.py @@ -284,9 +284,11 @@ class BIM_PT_object_material(Panel): setattr(op, f"{ObjectMaterialData.data['set_item_name']}_index", index) def draw_read_only_set_ui(self): - row = self.layout.row(align=True) - row.label(text="Name") - row.label(text=ObjectMaterialData.data["set"]["name"]) + if ObjectMaterialData.data["material_class"] != "IfcMaterialList": + row = self.layout.row(align=True) + row.label(text="Name") + row.label(text=ObjectMaterialData.data["set"]["name"]) + if ObjectMaterialData.data["set"]["description"]: row = self.layout.row(align=True) row.label(text="Description")