UI scenarios: the user's four open bugs as ignored targets (s31 sketch on a face projects its loops, s32 a cut in the active component leaves others alone, s33 Move opens at 0 and its X arrow moves along X, s34 moving a component carries its sketches); Fold, configurations, motion study and autosave/recovery enabled against the landed features (s22–s25); retests: fillets follow their edge after a sketch edit (s06 volume, s15 widens the sample plate), one canvas panel (s19); s30 patterns a hole as a feature (ignored: one hole results). Harness: manipulator handles published by name (scenario::publish_handle; ui.at {handle}; timeline items as timeline:<name>), restart after a crash or close, autosave into the scenario's folder, exact widget text before menu-label prefixes, checks for sketch curves, body volume and sketch points in the world

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 13:27:43 +00:00
1 parent 0a1b6f0fff
commit 59b59a83e6
18 files changed
+1328 -117

No files matched your search

@@ -1,49 +1,226 @@
[
{"note": "Target: a motion study keys a revolute joint and plays it (FusionMotionStudyCommand, motion.play by solvecraft-params; dialog by solvecraft-dialogs). Starts like s07; adjust the study steps when the dialog lands."},
{"start": "FusionCreateNewComponentCommand"},
{"key": "Enter"},
{"start": "SketchCreate"},
{"click": {"plane": "XY"}},
{"start": "ShapeRectangleTwoPoint"},
{"click": {"sketch": [0, 0]}},
{"click": {"sketch": [20, 20]}},
{"key": "Escape"},
{"start": "SketchStop"},
{"call": "ui.view", "params": {"view": "iso"}},
{"start": "Extrude"},
{"text": "10"},
{"key": "Enter"},
{"call": "ui.menu", "params": {"x": 100, "y": 170, "target": {"type": "component", "id": 0}}},
{"call": "ui.menuPick", "params": {"item": "Activate"}},
{"start": "FusionCreateNewComponentCommand"},
{"key": "Enter"},
{"start": "SketchCreate"},
{"click": {"plane": "XZ"}},
{"start": "ShapeRectangleTwoPoint"},
{"click": {"sketch": [30, 0]}},
{"click": {"sketch": [50, 10]}},
{"key": "Escape"},
{"start": "SketchStop"},
{"call": "ui.view", "params": {"view": "iso"}},
{"start": "Extrude"},
{"click": {"world": [40, 0, 5]}},
{"text": "20"},
{"key": "Enter"},
{"start": "JointAssembleCmdNew"},
{"click": {"world": [10, 10, 10]}},
{"click": {"world": [40, -20, 5]}},
{"widget": "Rigid"},
{"widget": "Revolute"},
{"widget": "OK"},
{"start": "FusionMotionStudyCommand"},
{"widget": "Add Key"},
{"widget": "0 deg", "near": "Value"},
{"key": "A", "cmd": true},
{"text": "90"},
{"key": "Enter"},
{"widget": "OK"},
{"expect": {"dialog": null, "errors": 0}},
{"call": "engine.execute", "params": {"command": "motion.play", "params": {"study": 1, "step": 100}}},
{"expect": {"query": {"command": "joint.list", "path": ["joints", 0, "values", 0, "value"], "value": 90}}},
{"shot": "s24_motion_end"}
]
{
"note": "Motion study: key a revolute joint and play it (FusionMotionStudyCommand, motion.play)."
},
{
"start": "FusionCreateNewComponentCommand"
},
{
"key": "Enter"
},
{
"start": "SketchCreate"
},
{
"click": {
"plane": "XY"
}
},
{
"start": "ShapeRectangleTwoPoint"
},
{
"click": {
"sketch": [
0,
0
]
}
},
{
"click": {
"sketch": [
20,
20
]
}
},
{
"key": "Escape"
},
{
"start": "SketchStop"
},
{
"call": "ui.view",
"params": {
"view": "iso"
}
},
{
"start": "Extrude"
},
{
"text": "10"
},
{
"key": "Enter"
},
{
"call": "ui.menu",
"params": {
"x": 100,
"y": 170,
"target": {
"type": "component",
"id": 0
}
}
},
{
"call": "ui.menuPick",
"params": {
"item": "Activate"
}
},
{
"start": "FusionCreateNewComponentCommand"
},
{
"key": "Enter"
},
{
"start": "SketchCreate"
},
{
"click": {
"plane": "XZ"
}
},
{
"start": "ShapeRectangleTwoPoint"
},
{
"click": {
"sketch": [
30,
0
]
}
},
{
"click": {
"sketch": [
50,
10
]
}
},
{
"key": "Escape"
},
{
"start": "SketchStop"
},
{
"call": "ui.view",
"params": {
"view": "iso"
}
},
{
"start": "Extrude"
},
{
"click": {
"world": [
40,
0,
5
]
}
},
{
"text": "20"
},
{
"key": "Enter"
},
{
"start": "JointAssembleCmdNew"
},
{
"click": {
"world": [
10,
10,
10
]
}
},
{
"click": {
"world": [
40,
-20,
5
]
}
},
{
"widget": "Rigid"
},
{
"widget": "Revolute"
},
{
"widget": "OK"
},
{
"start": "FusionMotionStudyCommand"
},
{
"widget": "Add Key"
},
{
"widget": "0 deg",
"near": "Value"
},
{
"key": "A",
"cmd": true
},
{
"text": "90"
},
{
"key": "Enter"
},
{
"widget": "OK"
},
{
"expect": {
"dialog": null,
"errors": 0
}
},
{
"call": "engine.execute",
"params": {
"command": "motion.play",
"params": {
"study": 1,
"step": 100
}
}
},
{
"expect": {
"query": {
"command": "joint.list",
"path": [
"joints",
0,
"values",
0,
"value"
],
"value": 90
}
}
},
{
"shot": "s24_motion_end"
}
]