Sketch dimensions drawn as dimensions: extension lines, dimension lines and arcs with arrowheads (flipped outside when tight), the value centred on the line (fx: for expressions), R/Ø leaders, angle arcs, arc-length mark, driven ones in parentheses in a muted colour; click selects, Delete removes, drag moves the text (sketch.dimension_text, kept relative to the dimension), double-click edits the value in place with parameter completion

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AS5Tn3xieewUSg3uxrMVdL
This commit is contained in:
bherbruckandClaude Opus 5.5 committed 2026-10-08 04:44:24 +00:00
1 parent 4adfd69d6a
commit 187ffd0a03
12 files changed
+946 -57

No files matched your search

+5 -1
View File
@@ -421,6 +421,10 @@ pub struct Constraint {
/// A driven (reference) dimension: it measures, it does not constrain.
#[serde(default, skip_serializing_if = "std::ops::Not::not")]
pub driven: bool,
/// For dimensions: where the value text was placed, relative to the dimension's frame
/// (see [`crate::dim_frame`]); None for the default place.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub text: Option<Vec2>,
}
/// A 2D sketch. Point 0 is always the fixed sketch origin (id `origin`).
@@ -597,7 +601,7 @@ impl Sketch {
}
self.validate(&kind)?;
let id = self.fresh("k");
self.constraints.push(Constraint { id: id.clone(), kind, param, driven: false });
self.constraints.push(Constraint { id: id.clone(), kind, param, driven: false, text: None });
Ok(id)
}