diff --git a/src/blenderbim/blenderbim/bim/module/material/operator.py b/src/blenderbim/blenderbim/bim/module/material/operator.py index 07f541e777..3cb818f5c1 100644 --- a/src/blenderbim/blenderbim/bim/module/material/operator.py +++ b/src/blenderbim/blenderbim/bim/module/material/operator.py @@ -496,16 +496,21 @@ class EditAssignedMaterial(bpy.types.Operator): if self.material_set_usage: material_set_usage = self.file.by_id(self.material_set_usage) attributes = blenderbim.bim.helper.export_attributes(props.material_set_usage_attributes) - if attributes.get("CardinalPoint", None): - attributes["CardinalPoint"] = int(attributes["CardinalPoint"]) - ifcopenshell.api.run( - "material.edit_profile_usage", - self.file, - **{"usage": material_set_usage, "attributes": attributes}, - ) if material_set_usage.is_a("IfcMaterialLayerSetUsage"): + ifcopenshell.api.run( + "material.edit_layer_usage", + self.file, + **{"usage": material_set_usage, "attributes": attributes}, + ) Data.load_layer_usages() elif material_set_usage.is_a("IfcMaterialProfileSetUsage"): + if attributes.get("CardinalPoint", None): + attributes["CardinalPoint"] = int(attributes["CardinalPoint"]) + ifcopenshell.api.run( + "material.edit_profile_usage", + self.file, + **{"usage": material_set_usage, "attributes": attributes}, + ) Data.load_profile_usages() if material_set.is_a("IfcMaterialConstituentSet"): diff --git a/src/blenderbim/blenderbim/bim/module/material/ui.py b/src/blenderbim/blenderbim/bim/module/material/ui.py index d083e4b07a..d0e2b1ade4 100644 --- a/src/blenderbim/blenderbim/bim/module/material/ui.py +++ b/src/blenderbim/blenderbim/bim/module/material/ui.py @@ -318,11 +318,11 @@ class BIM_PT_object_material(Panel): item_name = item.get("Name", "Unnamed") or "Unnamed" thickness = item.get("LayerThickness") if thickness: - item_name += f" ({thickness})" + item_name += f" ({thickness:.3f})" total_thickness += thickness row.label(text=item_name, icon="ALIGN_CENTER") row.label(text=Data.materials[item["Material"]]["Name"], icon="MATERIAL") if total_thickness: row = self.layout.row(align=True) - row.label(text=f"Total Thickness: {total_thickness}") + row.label(text=f"Total Thickness: {total_thickness:.3f}") diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer_usage.py b/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer_usage.py new file mode 100644 index 0000000000..6902672574 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer_usage.py @@ -0,0 +1,10 @@ +class Usecase: + def __init__(self, file, **settings): + self.file = file + self.settings = {"usage": None, "attributes": {}} + for key, value in settings.items(): + self.settings[key] = value + + def execute(self): + for name, value in self.settings["attributes"].items(): + setattr(self.settings["usage"], name, value)