forked from 1b-agent/opencadstudio-upstream
fix(annotative): start new drawings at the unit-aware annotation scale
A new drawing is metric with metre insertion units, but its annotation multiplier stayed at Scene::new()'s unitless 1 while opened files and CANNOSCALE convert paper millimetres into drawing units (0.001 at 1:1). Annotative text and dimensions were drawn 1000x too large until the first scale change, then shrank to their real size and looked gone, also after switching back to 1:1. One helper now derives the multiplier from the header; new drawings, file open and every INSUNITS change (UNITS, the units popup, DWGUNITS, SETVAR) go through it. Fixes #1674 Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
85627ebc8a
commit
5d0390bcdf
6 files changed
+31
-31
No files matched your search
@@ -893,6 +893,7 @@ impl OpenCADStudio {
|
||||
|
||||
self.push_undo_snapshot(i, "DWGUNITS");
|
||||
self.tabs[i].scene.document.header.insertion_units = to;
|
||||
self.tabs[i].scene.sync_annotation_scale_from_header();
|
||||
|
||||
let factor = units::conversion_factor(from, to).filter(|f| (f - 1.0).abs() > 1e-12);
|
||||
let (from_label, to_label) = (units::label(from), units::label(to));
|
||||
|
||||
@@ -3088,6 +3088,10 @@ impl OpenCADStudio {
|
||||
self.delete_objects = value;
|
||||
}
|
||||
if changed {
|
||||
if name == "INSUNITS" {
|
||||
self.tabs[i].scene.sync_annotation_scale_from_header();
|
||||
self.tabs[i].scene.invalidate_annotation_dependencies();
|
||||
}
|
||||
if matches!(
|
||||
name.as_str(),
|
||||
"ZOOMWHEEL"
|
||||
|
||||
Reference in new issue
Block a user