Introduces a toggle to turn on/off material layers in printed svg.

This commit is contained in:
Ryan Schultz
2025-10-11 09:52:55 -05:00
parent feecb89c8e
commit cc6ef0268f
3 changed files with 14 additions and 5 deletions
@@ -627,7 +627,7 @@ class CreateDrawing(bpy.types.Operator):
path.attrib["d"] = d path.attrib["d"] = d
group.append(g) group.append(g)
def generate_wall_layers(self, context: bpy.types.Context, root) -> None: def generate_material_layers(self, context: bpy.types.Context, root) -> None:
for el in root.findall(".//{http://www.w3.org/2000/svg}g[@{http://www.ifcopenshell.org/ns}guid]"): for el in root.findall(".//{http://www.w3.org/2000/svg}g[@{http://www.ifcopenshell.org/ns}guid]"):
if "projection" in el.get("class", "").split(): if "projection" in el.get("class", "").split():
continue continue
@@ -842,7 +842,8 @@ class CreateDrawing(bpy.types.Operator):
if tool.Drawing.is_camera_orthographic(): if tool.Drawing.is_camera_orthographic():
self.generate_bisect_linework(context, root) self.generate_bisect_linework(context, root)
self.generate_wall_layers(context, root) if self.cprops.generate_material_layers:
self.generate_material_layers(context, root)
self.merge_linework_and_add_metadata(root) self.merge_linework_and_add_metadata(root)
self.move_elements_to_top(root) self.move_elements_to_top(root)
@@ -940,12 +941,14 @@ class CreateDrawing(bpy.types.Operator):
if self.cprops.cut_mode == "BISECT": if self.cprops.cut_mode == "BISECT":
self.remove_cut_linework(root) self.remove_cut_linework(root)
self.generate_bisect_linework(context, root) self.generate_bisect_linework(context, root)
self.generate_wall_layers(context, root) if self.cprops.generate_material_layers:
self.generate_material_layers(context, root)
self.merge_linework_and_add_metadata(root) self.merge_linework_and_add_metadata(root)
self.move_elements_to_top(root) self.move_elements_to_top(root)
elif self.cprops.cut_mode == "OPENCASCADE": elif self.cprops.cut_mode == "OPENCASCADE":
self.move_projection_to_bottom(root) self.move_projection_to_bottom(root)
self.generate_wall_layers(context, root) if self.cprops.generate_material_layers:
self.generate_material_layers(context, root)
self.merge_linework_and_add_metadata(root) self.merge_linework_and_add_metadata(root)
self.move_elements_to_top(root) self.move_elements_to_top(root)
@@ -498,6 +498,11 @@ class BIMCameraProperties(PropertyGroup):
name="Linework Mode", name="Linework Mode",
update=get_update_layer_callback("linework_mode", "LineworkMode"), update=get_update_layer_callback("linework_mode", "LineworkMode"),
) )
generate_material_layers: bpy.props.BoolProperty(
name="Generate Material Layers",
description="Generate material layer linework in drawings",
default=True
)
fill_mode: EnumProperty( fill_mode: EnumProperty(
items=[ items=[
("NONE", "None", "Disable filling areas seen in projection"), ("NONE", "None", "Disable filling areas seen in projection"),
+2 -1
View File
@@ -99,12 +99,13 @@ class BIM_PT_camera(Panel):
row = self.layout.row() row = self.layout.row()
row.prop(props, "linework_mode") row.prop(props, "linework_mode")
row = self.layout.row()
row.prop(props, "generate_material_layers")
if props.linework_mode == "OPENCASCADE": if props.linework_mode == "OPENCASCADE":
row = self.layout.row() row = self.layout.row()
row.prop(props, "fill_mode") row.prop(props, "fill_mode")
row = self.layout.row() row = self.layout.row()
row.prop(props, "cut_mode") row.prop(props, "cut_mode")
row = self.layout.row() row = self.layout.row()
row.prop(props, "width") row.prop(props, "width")
row = self.layout.row() row = self.layout.row()