From 21137b926885e6a9a1aca449bf6297d2cf62c8f7 Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Thu, 25 Sep 2025 14:57:41 -0500 Subject: [PATCH] closes:#6821 - This modification checks if the layer's material has a Category attribute and if it's not empty, then adds it as a CSS class with the format layer-material-category-{category_name}. This will give you additional styling granularity when working with material layers, allowing you to target elements not just by their material name but also by their material category in your SVG styling. --- src/bonsai/bonsai/bim/module/drawing/operator.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/drawing/operator.py b/src/bonsai/bonsai/bim/module/drawing/operator.py index 4138415da0..a00feedaad 100644 --- a/src/bonsai/bonsai/bim/module/drawing/operator.py +++ b/src/bonsai/bonsai/bim/module/drawing/operator.py @@ -1266,9 +1266,15 @@ class CreateDrawing(bpy.types.Operator): if layer: classes.append(layer.is_a()) - material_name = layer.Material.Name or "null" - material_name = tool.Drawing.canonicalise_class_name(material_name) - classes.append(f"layer-material-{material_name}") + layer_material = layer.Material + layer_material_name = layer_material.Name or "null" + layer_material_name = tool.Drawing.canonicalise_class_name(layer_material_name) + classes.append(f"layer-material-{layer_material_name}") + + # Add material category if available + if hasattr(layer_material, 'Category') and layer_material.Category: + layer_material_category = tool.Drawing.canonicalise_class_name(layer_material.Category) + classes.append(f"layer-material-category-{layer_material_category}") for key in self.metadata: value = ifcopenshell.util.selector.get_element_value(element, key)