forked from 1b-agent/opencadstudio-upstream
feat(dynamic-input): ARC specs + ellipse-arc preview fixes
- ARC: per-step DynSpec for the typed-value modes — included-angle (SCA, CSA), chord length (SCL, CSL) and radius (SER) show their box and route the typed value through on_text_input via a new dyn_commit_as_text() hook; the angle box previews the live span. Point/3P/SCE steps stay on the legacy polar path. - ARC + ellipse-arc: derive the previewed sweep direction from the swept angle with a ~10° tolerance and advance the reference only on a clear move, so small cursor jitter no longer flips the arc. Ellipse uses the parametric angle so a flat ellipse isn't sticky. - Ellipse arc: the start-angle step now shows a line from the centre to the cursor (it only picks the start angle) instead of a misleading arc. - Ellipse arc: use the same minor-axis direction (Z x major) as the rendered entity so the committed arc matches the preview instead of mirroring across the major axis. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
e31dbcb5c4
commit
5128d94b2b
5 files changed
+177
-31
No files matched your search
+4
-1
@@ -8014,7 +8014,10 @@ impl OpenCADStudio {
|
||||
let wants_text = self.tabs[i]
|
||||
.active_cmd
|
||||
.as_ref()
|
||||
.map(|c| c.wants_text_input() && !c.point_step_accepts_keywords())
|
||||
.map(|c| {
|
||||
(c.wants_text_input() && !c.point_step_accepts_keywords())
|
||||
|| c.dyn_commit_as_text()
|
||||
})
|
||||
.unwrap_or(false);
|
||||
if wants_text {
|
||||
let text = self.tabs[i]
|
||||
|
||||
@@ -736,6 +736,11 @@ impl OpenCADStudio {
|
||||
.map(|(idx, f)| {
|
||||
let value = match (&f.buffer, live) {
|
||||
(Some(b), _) => b.clone(),
|
||||
// An angle step with a command-supplied live value
|
||||
// (ARC span / direction) shows it in degrees.
|
||||
(None, Some(lv)) if f.component == DynComponent::Angle => {
|
||||
format!("{lv:.1}")
|
||||
}
|
||||
(None, Some(lv))
|
||||
if matches!(
|
||||
f.component,
|
||||
|
||||
Reference in new issue
Block a user