forked from 1b-agent/opencadstudio-upstream
TRIM / EXTEND: Standard mode and TRIMEXTENDMODE (#1733)
Both commands gain a mOde option [Quick/Standard]. Quick (the default) starts ready to pick, every object a cutting or boundary edge; Standard starts by selecting those edges, Enter with none taking every object. The choice is TRIMEXTENDMODE (1 Quick, 0 Standard), kept in the profile and settable with SETVAR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7f411bc02d
commit
368dd0d7a5
5 files changed
+135
-4
No files matched your search
@@ -756,6 +756,7 @@ inventory::submit!(crate::command::CommandRegistration {
|
||||
"UOSNAP",
|
||||
"FIELDDISPLAY",
|
||||
"FILEDIA",
|
||||
"TRIMEXTENDMODE",
|
||||
"SURFACEASSOCIATIVITY",
|
||||
"LAYOUTCREATEVIEWPORT",
|
||||
"FIELDEVAL",
|
||||
|
||||
@@ -1214,6 +1214,7 @@ impl OpenCADStudio {
|
||||
| "UOSNAP"
|
||||
| "FIELDDISPLAY"
|
||||
| "FILEDIA"
|
||||
| "TRIMEXTENDMODE"
|
||||
| "SURFACEASSOCIATIVITY"
|
||||
| "UCSORTHO"
|
||||
| "UCSVIEW"
|
||||
@@ -1603,6 +1604,33 @@ impl OpenCADStudio {
|
||||
}
|
||||
return Some(self.finish_dispatch(cmd));
|
||||
}
|
||||
if name == "TRIMEXTENDMODE" {
|
||||
use crate::modules::draw::modify::trim;
|
||||
let current = i16::from(trim::quick_mode());
|
||||
let prompt = format!("Enter new value for TRIMEXTENDMODE <{current}>:");
|
||||
match value
|
||||
.as_deref()
|
||||
.map(|v| v.trim().parse::<i16>().ok().filter(|v| (0..=1).contains(v)))
|
||||
{
|
||||
Some(Some(mode)) => {
|
||||
if current != mode {
|
||||
trim::set_quick_mode(mode == 1);
|
||||
self.save_config();
|
||||
}
|
||||
}
|
||||
Some(None) => {
|
||||
self.command_line
|
||||
.push_error(crate::t!("Requires 0 or 1 only.").as_ref());
|
||||
self.command_line.push_output(&prompt);
|
||||
self.pending_setvar = Some(name.clone());
|
||||
}
|
||||
None => {
|
||||
self.command_line.push_output(&prompt);
|
||||
self.pending_setvar = Some(name.clone());
|
||||
}
|
||||
}
|
||||
return Some(self.finish_dispatch(cmd));
|
||||
}
|
||||
if name == "FILEDIA" {
|
||||
let current = i16::from(crate::sys::file_dia());
|
||||
match value
|
||||
|
||||
@@ -441,6 +441,8 @@ pub struct UserSettings {
|
||||
pub xref_fade: i32,
|
||||
/// FILEDIA: file dialogs of commands that have a command-line form.
|
||||
pub file_dia: bool,
|
||||
/// TRIMEXTENDMODE: TRIM and EXTEND start in Quick mode (else Standard).
|
||||
pub trim_extend_quick: bool,
|
||||
/// The file type ATTACH's picker was last left on (1-based).
|
||||
pub attach_filter: u32,
|
||||
/// SURFACEASSOCIATIVITY: new surfaces stay associative to their sources.
|
||||
@@ -915,6 +917,7 @@ impl Default for UserSettings {
|
||||
field_display: true,
|
||||
xref_fade: 50,
|
||||
file_dia: true,
|
||||
trim_extend_quick: true,
|
||||
attach_filter: 7,
|
||||
surface_associativity: true,
|
||||
ucs_ortho: true,
|
||||
|
||||
@@ -810,6 +810,7 @@ impl OpenCADStudio {
|
||||
field_display: crate::entities::field::display(),
|
||||
xref_fade: crate::scene::cache::block_cache::xref_fade_ctl(),
|
||||
file_dia: crate::sys::file_dia(),
|
||||
trim_extend_quick: crate::modules::draw::modify::trim::quick_mode(),
|
||||
attach_filter: crate::sys::attach_filter(),
|
||||
surface_associativity: crate::scene::model::sweep_model::surface_associativity(),
|
||||
ucs_ortho: crate::modules::view::view_cmd::ucs_ortho(),
|
||||
@@ -946,6 +947,7 @@ impl OpenCADStudio {
|
||||
crate::scene::cache::block_cache::set_xref_fade_ctl(s.xref_fade);
|
||||
self.ribbon.xref_fade = crate::scene::cache::block_cache::xref_fade_ctl();
|
||||
crate::sys::set_file_dia(s.file_dia);
|
||||
crate::modules::draw::modify::trim::set_quick_mode(s.trim_extend_quick);
|
||||
crate::sys::set_attach_filter(s.attach_filter);
|
||||
crate::scene::model::sweep_model::set_surface_associativity(s.surface_associativity);
|
||||
crate::modules::view::view_cmd::set_ucs_ortho(s.ucs_ortho);
|
||||
|
||||
Reference in new issue
Block a user