Sketch inline dimensions while drawing (line length/angle, rectangle width/height, circle diameter, arc radius/sweep, polygon radius/sides, slot length/width): boxes sit on what they measure, typing goes into the first box and locks it, Tab moves on, Enter places the shape, typed values become dimension constraints (expressions and units); Press Pull (Q: faces extrude/cut by sign, edges fillet), X toggles construction on selected curves, Move dialog (M) with preview

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-07 21:40:14 +00:00
1 parent ea3dd0ed6e
commit eb22a149b1
11 files changed
+411 -25

No files matched your search

+19
View File
@@ -17,6 +17,7 @@ pub mod icons;
pub mod palette;
pub mod preview;
pub mod selection;
pub mod sketch_dims;
pub mod theme;
pub mod timeline;
pub mod toolbar;
@@ -185,6 +186,24 @@ impl SolveApp {
}
return;
}
// Press Pull: edges get a fillet, faces and profiles an extrude.
if id == "FusionPressPullCommand" {
let edges = self.session.selection.iter().any(|s| matches!(s, solvecraft_engine::Sel::Edge { .. }));
return self.start(if edges { "FusionFilletEdgesCommand" } else { "Extrude" });
}
// Construction toggle: selected sketch curves switch at once, otherwise pick them.
if id == "sketch.construction" {
let curves: Vec<String> = self
.session
.selection
.iter()
.filter_map(|s| if let solvecraft_engine::Sel::SketchCurve { id } = s { Some(id.clone()) } else { None })
.collect();
if !curves.is_empty() {
let _ = self.run(id, json!({ "curves": curves }));
return;
}
}
if let Some(t) = tools::Tool::for_command(id) {
self.tool = Some(t);
self.set_status(tools::hint(id), false);