[ {"note": "solid.move Create Copy: the box keeps the original body where it was and adds a transformed copy beside it. Escape commits nothing, a typed distance reaches the command unchanged, and reopening the feature brings the box back ticked."}, {"call": "engine.execute", "params": {"command": "solid.box", "params": {"length": 20, "width": 20, "height": 20}}}, {"call": "ui.view", "params": {"view": "iso"}}, {"note": "Cancelled: the window opens, the box is ticked, a distance is typed, Escape leaves the design exactly as it was."}, {"start": "solid.move"}, {"click": {"world": [10, 10, 20]}}, {"expect": {"dialog": "Move", "bodies": 1, "features": 1, "errors": 0}}, {"click": {"handle": "dialog:Create Copy"}}, {"click": {"handle": "dialog:X Distance"}}, {"key": "A", "cmd": true}, {"text": "30 mm"}, {"expect": {"dialog": "copy\": Bool(true)"}}, {"key": "Escape"}, {"expect": {"dialog": null, "errors": 0, "bodies": 1, "features": 1, "volume": 8000}}, {"expect": {"bbox": {"body": "Body1", "min": [0, 0, 0], "max": [20, 20, 20]}}}, {"note": "Typed: the 30 mm reaches solid.move, the original stays at the origin, the copy lands 30 mm along X with the same volume."}, {"start": "solid.move"}, {"click": {"world": [10, 10, 20]}}, {"click": {"handle": "dialog:Create Copy"}}, {"click": {"handle": "dialog:X Distance"}}, {"key": "A", "cmd": true}, {"text": "30 mm"}, {"key": "Enter"}, {"expect": {"dialog": null, "errors": 0, "bodies": 2, "volume": 16000}}, {"expect": {"bbox": {"body": "Body1", "min": [0, 0, 0], "max": [20, 20, 20]}}}, {"expect": {"bbox": {"body": "Body1 (2)", "min": [30, 0, 0], "max": [50, 20, 20]}}}, {"expect": {"body_volume": {"body": "Body1", "volume": 8000}}}, {"expect": {"body_volume": {"body": "Body1 (2)", "volume": 8000}}}, {"note": "The saved flag comes back: editing the move reopens the window with the box ticked and the distance filled in."}, {"call": "ui.editFeature", "params": {"feature": "Move1"}}, {"expect": {"dialog": "x: \"30 mm\""}}, {"expect": {"dialog": "copy\": Bool(true)"}}, {"key": "Escape"}, {"expect": {"dialog": null, "errors": 0, "bodies": 2}}, {"note": "Dragged: the triad moves a copy the same way, and the original is left behind."}, {"start": "solid.move"}, {"click": {"world": [10, 10, 20]}}, {"click": {"handle": "dialog:Create Copy"}}, {"drag": [{"gizmo": "x"}, {"gizmo": "x", "by": [20, 0, 0]}]}, {"key": "Enter"}, {"expect": {"dialog": null, "errors": 0, "bodies": 3}}, {"expect": {"bbox": {"body": "Body1", "min": [0, 0, 0], "max": [20, 20, 20]}}}, {"shot": "solid_move_copy"} ]