forked from 1b-agent/opencadstudio-upstream
Dimensional constraints: DCFORM, DIMCONSTRAINT options, -PARAMETERS, value prompt, save without display overrides
DCFORM sets the annotational or dynamic form and continues into the DIMCONSTRAINT option prompt, whose wording and last-used default match the reference. -PARAMETERS manages parameters from the command line; a double-clicked constraint dimension opens its value prompt. Dynamic dimensions rescale on every camera change and their display overrides stay out of the saved file. A driving dimension between an entity's own ends no longer has its length retained, so a new value moves the second point along the dimension axis; parameter edits hold the first constraint point. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
aa51765a62
commit
3e28604752
12 files changed
+810
-34
No files matched your search
@@ -1464,7 +1464,7 @@ impl OpenCADStudio {
|
||||
|
||||
self.prepare_native_save(i);
|
||||
let version = self.tabs[i].scene.document.version;
|
||||
let snapshot = self.tabs[i].scene.document.clone();
|
||||
let snapshot = self.tabs[i].scene.document_for_save();
|
||||
crate::io::save_owned_as_version_atomic(
|
||||
snapshot,
|
||||
&path,
|
||||
@@ -1893,7 +1893,7 @@ impl OpenCADStudio {
|
||||
path: std::path::PathBuf,
|
||||
) -> Task<Message> {
|
||||
let i = self.active_tab;
|
||||
let document = self.tabs[i].scene.document.clone();
|
||||
let document = self.tabs[i].scene.document_for_save();
|
||||
let handles: Vec<_> = self.tabs[i].scene.selected.iter().copied().collect();
|
||||
let worker_name = block_name.clone();
|
||||
let worker_path = path.clone();
|
||||
@@ -2298,7 +2298,7 @@ impl OpenCADStudio {
|
||||
crate::ui::wrap_bar::dropdown_bounds(crate::app::view::VIEWPORT_CAPTURE_BOUNDS_ID)
|
||||
});
|
||||
let clone_started = iced::time::Instant::now();
|
||||
let mut snapshot = self.tabs[i].scene.document.clone();
|
||||
let mut snapshot = self.tabs[i].scene.document_for_save();
|
||||
// Save-As across folders: rebase relative reference paths onto the
|
||||
// new base dir inside the snapshot only (live strings are untouched).
|
||||
if purpose == crate::app::SavePurpose::SaveAs {
|
||||
|
||||
@@ -5060,6 +5060,15 @@ properties={:.1}ms picked={}",
|
||||
{
|
||||
return Task::none();
|
||||
}
|
||||
// A constraint dimension edits its parameter from the
|
||||
// command line, standing in for the reference's in-place
|
||||
// value editor.
|
||||
if let Some(prompt) = self.dynamic_dimension_value_command(i, handle) {
|
||||
use crate::command::CadCommand;
|
||||
self.command_line.push_info(&prompt.prompt());
|
||||
self.tabs[i].active_cmd = Some(Box::new(prompt));
|
||||
return Task::none();
|
||||
}
|
||||
// Any text-bearing entity opens its in-place editor
|
||||
// (plain box or rich MText editor, per type). A
|
||||
// Leader resolves to the entity it annotates.
|
||||
|
||||
Reference in new issue
Block a user