feat(layers): add non-printing layer support

This commit is contained in:
gianlucafiore committed 2026-08-20 20:37:27 -03:00
1 parent b1b5d31be5
commit eb5cbaeca0
7 files changed
+192 -6

No files matched your search

+1
View File
@@ -2013,6 +2013,7 @@ pub enum Message {
LayerToggleVisible(usize),
LayerToggleLock(usize),
LayerToggleFreeze(usize),
LayerTogglePlot(usize),
/// Sort the Layer Manager table by a clicked column header.
LayerSort(crate::ui::window::layers::LayerSortCol),
/// Toggle per-viewport freeze: (layer_index, vp_col_index)
+1 -1
View File
@@ -171,7 +171,7 @@ fn plot_scene_content(
let (mut paper_wires, mut model_wires) = scene.plot_wire_groups(render_mode_override);
paper_wires.retain(|wire| wire.plot_visible);
model_wires.retain(|wire| wire.plot_visible);
let paper_hatches = scene.paper_canvas_hatches().as_ref().clone();
let paper_hatches = scene.paper_plot_hatches().as_ref().clone();
let paper_wipeouts = scene.paper_canvas_wipeouts().as_ref().clone();
if scene.current_layout == "Model" {
let splits = crate::io::pdf_export::PlotGroupSplits {
+50
View File
@@ -2427,6 +2427,56 @@ impl OpenCADStudio {
}
Task::none()
}
Message::LayerTogglePlot(idx) => {
let i = self.active_tab;
let plottable = self.tabs[i]
.layers
.layers
.get(idx)
.map(|layer| !layer.plottable);
let targets = self.layer_row_action_targets(i, idx);
if let Some(plottable) = plottable {
if !targets.is_empty() {
let undo = self.begin_layer_undo(i, "LAYER PLOT/NOPLOT", &targets);
for name in &targets {
if let Some(layer) = self.tabs[i].scene.document.layers.get_mut(name) {
layer.is_plottable = plottable;
}
if let Some(layer) = self.tabs[i]
.layers
.layers
.iter_mut()
.find(|layer| &layer.name == name)
{
layer.plottable = plottable;
}
}
self.tabs[i]
.scene
.invalidate_layer_dependencies(&targets);
self.tabs[i].dirty = true;
self.commit_layer_undo(i, undo);
self.command_line.push_output(
crate::tf!(
"{} layer(s) set to {}",
targets.len(),
if plottable { "Plot" } else { "No Plot" }
)
.as_ref(),
);
}
}
Task::none()
},
Message::LayerToggleVpFreeze(layer_idx, vp_col_idx) => {
self.on_layer_toggle_vp_freeze(layer_idx, vp_col_idx)