From ead489592cf15388eb382e85ff4a11d072659bf8 Mon Sep 17 00:00:00 2001 From: jyviko <2501648+jyviko@users.noreply.github.com> Date: Fri, 16 Oct 2026 00:49:54 -0400 Subject: [PATCH] ui: arc-length displacement limit as typed fields The step form's displacement limit was a raw JSON box; it is now a group of node, direction and displacement fields (#449). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo --- crates/engine/src/cmd/forms.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/engine/src/cmd/forms.rs b/crates/engine/src/cmd/forms.rs index 2c98800..7e45b3b 100644 --- a/crates/engine/src/cmd/forms.rs +++ b/crates/engine/src/cmd/forms.rs @@ -684,9 +684,18 @@ const PROCEDURE: Field = variants( .help("Cylindrical: displacements only. Spherical: displacements and load factor.") .def("\"cylindrical\""), positive("max_load_factor", "Max load factor", D::None).help("Stop when the load factor reaches this.").def("1"), - json("displacement_limit", "Displacement limit") - .help("Stop when a node's displacement reaches a value, as JSON.") - .hint("{\"node\": 1, \"direction\": 3, \"displacement\": -10}"), + group( + "displacement_limit", + "Displacement limit", + &[ + int("node", "Node", 1, u32::MAX as i64).help("The label of the node watched.").req(), + int("direction", "Direction", 1, 3).help("1, 2, 3: its translation along X, Y, Z.").req().def("3"), + num("displacement", "Displacement", D::Length) + .help("The step stops when that translation reaches this size (its sign is ignored).") + .req(), + ], + ) + .help("Stop when a node's displacement reaches a value; at the max load factor when empty."), ], ) .help("Follow the load-displacement path through limit points (snap-through), with the load factor as an unknown."),