forked from 1b-agent/opencadstudio-upstream
CLIP on raster images and viewports, IMAGECLIP, VPCLIP, clip depth rules
- CLIP continues as IMAGECLIP on a raster image and as VPCLIP on a layout viewport, with the reference prompts and stored data. - Image clip boundaries sit on pixel centres, OFF only clears the display flag, and an inverted boundary cuts the image. - VPCLIP polygon (Arc/Length/Close/Undo), clipping object and Delete; the viewport shrinks to the boundary's exact extents, view kept. - XCLIP Clipdepth: Remove clears only the plane asked, a front plane behind the back one is rejected with the reference message. - Attached and imported images carry the reference display flags. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
857f2f2e58
commit
bd17e7e0d4
12 files changed
+569
-112
No files matched your search
@@ -715,6 +715,18 @@ impl OpenCADStudio {
|
||||
self.command_line.push_info(&command.prompt());
|
||||
self.tabs[i].active_cmd = Some(Box::new(command));
|
||||
}
|
||||
"IMAGECLIP" => {
|
||||
use crate::command::CadCommand;
|
||||
let command = crate::modules::insert::pdf_clip::PdfClipCommand::image();
|
||||
self.command_line.push_info(&command.prompt());
|
||||
self.tabs[i].active_cmd = Some(Box::new(command));
|
||||
}
|
||||
"VPCLIP" => {
|
||||
use crate::command::CadCommand;
|
||||
let command = crate::modules::layout::mview::MviewCommand::vpclip_select();
|
||||
self.command_line.push_info(&command.prompt());
|
||||
self.tabs[i].active_cmd = Some(Box::new(command));
|
||||
}
|
||||
"CLIP" => {
|
||||
use crate::command::CadCommand;
|
||||
let command = crate::modules::insert::xclip::ClipCommand::new();
|
||||
|
||||
@@ -37,6 +37,9 @@ impl OpenCADStudio {
|
||||
inserts: Vec<codec::Handle>,
|
||||
action: XclipAction,
|
||||
) {
|
||||
if let XclipAction::Depth { rejected: true, .. } = action {
|
||||
self.command_line.push_error(crate::modules::insert::xclip::DEPTH_REJECTED);
|
||||
}
|
||||
self.push_undo_snapshot(i, "XCLIP");
|
||||
let extents: Vec<_> = inserts.iter().map(|h| self.insert_extents(i, *h)).collect();
|
||||
let current_layer = self.tabs[i].scene.document.header.current_layer_name.clone();
|
||||
@@ -51,7 +54,7 @@ impl OpenCADStudio {
|
||||
XclipAction::Delete => {
|
||||
clip::remove_insert_clip(doc, *insert);
|
||||
}
|
||||
XclipAction::Depth { front, back } => {
|
||||
XclipAction::Depth { front, back, .. } => {
|
||||
clip::set_insert_clip_depth(doc, *insert, *front, *back);
|
||||
}
|
||||
XclipAction::New { boundary, inverted } => {
|
||||
|
||||
Reference in new issue
Block a user