forked from 1b-agent/opencadstudio-upstream
feat(layers): add non-printing layer support
This commit is contained in:
1 parent
b1b5d31be5
commit
eb5cbaeca0
7 files changed
+192
-6
No files matched your search
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user