Tommaso Bianchi
b7397b48bd
Transform: drag the body, the numbers follow
...
The Placement > Transform verb opened a card of spin controls — dx/dy/dz, an
axis combo, an angle — with nothing on the geometry. The 3-axis drag gizmo the
charter asks for already existed and was fully implemented (arrows, rotation
rings, click-to-type per axis), reachable only from a small icon button in the
tree card header. The prominent verb opened the form; the geometry-first
control was hidden behind an icon. That was backwards.
Transform now arms that same gizmo on the target body. The card stays as L2's
typed half: the drag writes dx/dy/dz, the axis and the angle, and the pivot is
seeded from the body's centroid so the parametric feature reproduces exactly
what was dragged.
Decomposition is exact for the interaction that matters — the gizmo's rings are
per-world-axis, so a ring drag is an axial rotation. A pose composed from two
rings is not axial and the card can only name one axis, so it reports the
dominant one rather than refusing to answer.
Three things this had to get right:
- The gizmo bakes its drag into the display transform so the body follows the
cursor, and the feature performs the same motion parametrically. Committing
without reverting first would move the body twice.
- tool_confirm() and tool_cancel() both tested moving_body() BEFORE the active
tool, so with the gizmo armed Confirm would have dropped the gizmo and never
created the feature. Both are now guarded on Tool::None.
- close_tool() is the single revert point. Esc, Cancel and switching tools all
pass through it, so a Transform that was never committed cannot leave the body
displaced.
Edit mode is untouched: re-seeding the gizmo from a stored feature is a separate
problem, so editing an existing Transform still gets the card alone.
Reviewed and compiled (libslic3r_gui, RC=0); not exercised. snaporca-qtf4.
2026-08-12 20:04:45 +02:00
..
2026-07-23 23:24:29 +08:00
2026-07-24 09:41:24 -03:00
2026-07-25 12:28:33 +02:00
2026-07-18 02:08:13 +08:00
2026-07-22 16:30:43 -03:00
2026-04-26 18:44:59 +08:00
2026-07-24 09:41:24 -03:00
2026-03-05 11:33:07 -03:00
2025-05-05 17:59:00 +08:00
2026-04-13 19:45:39 +08:00
2026-06-30 00:24:39 +02:00
2026-07-20 09:05:21 +08:00
2026-07-09 01:16:26 +08:00
2026-07-11 20:24:03 +03:00
2026-07-17 19:32:44 +08:00
2026-07-16 13:08:48 +08:00
2026-07-24 09:41:24 -03:00
2026-07-17 05:06:09 +08:00
2026-07-24 09:41:24 -03:00
2026-07-18 01:46:23 +08:00
2026-07-18 01:46:10 +08:00
2026-07-17 06:48:15 +08:00
2026-07-18 01:46:23 +08:00
2026-07-17 13:20:41 +08:00
2026-07-17 06:48:15 +08:00
2025-10-28 15:29:47 +08:00
2026-06-18 09:13:51 -03:00
2025-06-01 18:35:48 +08:00
2026-03-25 11:28:00 +08:00
2026-07-15 17:18:46 +08:00
2026-06-18 12:45:26 +08:00
2026-07-11 20:24:03 +03:00
2025-09-18 17:04:10 +08:00
2026-03-24 20:50:44 +08:00
2025-10-05 16:02:17 +08:00
2025-09-16 20:11:02 +08:00
2025-12-18 12:14:56 +00:00
2025-10-28 15:29:51 +08:00
2026-06-11 02:47:33 +08:00
2026-04-20 19:27:38 -03:00
2026-06-18 09:13:51 -03:00
2025-05-16 23:49:07 +08:00
2026-07-16 00:17:01 +08:00
2026-01-03 23:06:57 +08:00
2026-04-13 19:45:39 +08:00
2025-08-24 23:18:04 +08:00
2026-03-25 11:26:32 +08:00
2026-03-25 11:26:32 +08:00
2026-07-11 20:24:03 +03:00
2026-07-11 20:24:03 +03:00
2026-04-24 21:39:32 +08:00
2025-12-18 12:14:56 +00:00
2025-10-28 15:30:00 +08:00
2026-05-01 18:01:29 +08:00
2025-05-26 17:41:58 +08:00
2026-06-18 09:13:51 -03:00
2025-10-28 15:29:59 +08:00
2026-06-18 09:13:51 -03:00
2025-09-17 14:17:13 +08:00
2026-06-18 09:13:51 -03:00
2026-01-03 23:06:57 +08:00
2026-07-09 01:16:26 +08:00
2026-05-16 19:13:40 +08:00
2026-07-09 01:16:26 +08:00
2026-07-09 01:16:26 +08:00
2026-06-18 09:13:51 -03:00
2026-07-09 01:16:26 +08:00
2026-07-09 01:16:26 +08:00
2026-04-13 19:45:39 +08:00
2025-09-09 09:39:43 +08:00
2026-07-17 06:48:15 +08:00
2025-03-27 21:56:09 +08:00
2025-03-27 21:56:09 +08:00
2025-11-08 20:44:37 +08:00
2025-09-09 15:40:26 +08:00
2026-04-24 16:29:29 +08:00
2025-07-06 11:34:47 +08:00
2026-07-14 15:34:13 -03:00
2026-06-28 22:30:40 +08:00
2026-07-16 17:37:09 -03:00
2026-06-18 09:13:51 -03:00
2025-10-02 17:07:21 +08:00
2026-06-07 13:12:51 +08:00
2026-05-19 20:03:54 +00:00
2026-06-28 13:07:09 +08:00
2025-09-18 17:13:09 +08:00
2026-06-18 09:13:51 -03:00
2026-05-19 17:13:07 +08:00
2026-05-19 17:13:07 +08:00
2026-08-12 19:57:14 +02:00
2026-08-12 13:45:37 +02:00
2026-08-02 09:57:53 +02:00
2026-08-12 20:04:45 +02:00
2026-08-12 20:04:45 +02:00
2026-08-12 13:45:37 +02:00
2026-08-12 13:45:37 +02:00
2026-06-18 09:13:51 -03:00
2026-04-13 17:21:05 +08:00
2026-07-18 01:46:10 +08:00
2026-07-18 03:15:11 +08:00
2026-07-18 01:46:10 +08:00
2026-07-18 01:46:23 +08:00
2026-03-24 20:34:32 +08:00
2024-06-15 14:56:44 +08:00
2025-03-29 20:14:10 +08:00
2024-06-15 14:56:44 +08:00
2026-06-18 09:13:51 -03:00
2025-07-17 15:26:55 +08:00
2025-07-17 15:26:55 +08:00
2026-07-11 16:37:50 +08:00
2026-07-11 16:37:50 +08:00
2026-01-09 21:25:48 +08:00
2025-06-04 09:30:36 +08:00
2025-09-30 14:31:54 +08:00
2025-10-01 15:47:44 +08:00
2026-07-05 10:39:25 +08:00
2026-07-05 10:39:25 +08:00
2026-05-19 01:01:53 +08:00
2026-05-17 02:29:39 -05:00
2026-07-24 09:41:24 -03:00
2025-12-18 12:14:56 +00:00
2026-07-21 15:17:22 -03:00
2026-07-14 13:10:42 +08:00
2026-07-17 05:06:09 +08:00
2026-07-17 05:06:09 +08:00
2026-07-09 18:57:05 +08:00
2026-07-09 18:57:05 +08:00
2026-07-11 16:37:50 +08:00
2026-07-11 16:37:50 +08:00
2026-07-24 09:41:24 -03:00
2026-07-11 16:37:50 +08:00
2026-05-16 01:12:30 +08:00
2025-12-18 12:14:56 +00:00
2026-07-08 20:24:55 +08:00
2024-06-15 14:56:44 +08:00
2025-04-20 16:09:31 +08:00
2026-07-24 09:41:24 -03:00
2026-07-20 18:14:01 -03:00
2026-07-31 18:11:59 +02:00
2026-07-31 18:11:59 +02:00
2026-07-12 13:30:55 -03:00
2026-02-10 13:08:22 +08:00
2026-04-13 19:45:39 +08:00
2024-06-15 14:56:44 +08:00
2026-04-13 19:45:39 +08:00
2026-07-12 21:44:30 -03:00
2026-05-19 01:38:37 +08:00
2025-10-31 16:53:08 +08:00
2024-11-12 00:09:15 +08:00
2024-06-15 14:56:44 +08:00
2026-07-23 23:24:29 +08:00
2026-07-21 15:40:40 -03:00
2024-08-12 00:00:20 +08:00
2026-07-24 09:41:24 -03:00
2026-04-24 16:28:28 +08:00
2024-06-15 14:56:44 +08:00
2025-04-04 23:07:00 +08:00
2026-06-18 09:13:51 -03:00
2025-09-24 22:49:14 -04:00
2025-11-17 10:29:44 +08:00
2025-08-22 20:02:26 +08:00
2026-07-14 02:54:20 +08:00
2026-05-17 02:29:39 -05:00
2026-05-21 09:04:27 +08:00
2026-06-30 08:55:09 +08:00
2026-06-30 08:55:09 +08:00
2026-05-21 09:04:27 +08:00
2025-11-15 11:11:20 -05:00
2025-09-24 22:49:14 -04:00
2026-06-11 23:56:16 +08:00
2026-06-11 23:56:16 +08:00
2025-06-14 09:52:33 +08:00
2026-07-02 17:49:36 +08:00
2026-05-01 18:01:29 +08:00
2025-09-07 23:58:51 +08:00
2025-09-07 23:58:51 +08:00
2026-06-18 09:13:51 -03:00
2026-07-17 12:46:45 +08:00
2025-09-21 13:47:51 +08:00
2026-07-19 20:16:17 +08:00
2025-10-02 09:30:48 +08:00
2026-05-01 18:01:29 +08:00
2026-05-01 18:01:29 +08:00
2026-07-24 09:41:24 -03:00
2026-04-13 19:45:39 +08:00
2025-12-23 01:30:03 +08:00
2025-11-17 15:30:35 +00:00
2026-07-24 09:41:24 -03:00
2026-07-16 11:02:55 +08:00
2026-06-25 22:31:33 +08:00
2026-06-18 09:13:51 -03:00
2026-05-15 00:46:05 +08:00
2026-07-16 11:02:55 +08:00
2026-07-16 11:02:55 +08:00
2026-05-15 00:57:52 +08:00
2024-05-22 15:26:52 +08:00
2026-07-24 09:41:24 -03:00
2026-04-13 19:45:39 +08:00
2026-04-13 19:45:39 +08:00
2026-08-03 11:05:45 +02:00
2026-07-10 18:12:53 +02:00
2026-07-27 07:21:06 +02:00
2026-06-30 15:32:51 +02:00
2026-07-24 09:41:24 -03:00
2025-10-02 09:30:48 +08:00
2026-07-17 08:30:22 +08:00
2026-03-11 14:59:29 +08:00
2026-04-13 19:45:39 +08:00
2024-06-15 14:56:44 +08:00
2025-10-28 15:29:56 +08:00
2026-07-24 09:41:24 -03:00
2026-07-17 08:30:22 +08:00
2025-10-28 15:29:56 +08:00
2026-07-15 15:06:17 +08:00
2026-07-24 09:41:24 -03:00
2026-07-09 01:16:26 +08:00
2026-05-18 19:46:47 +08:00
2026-05-18 19:46:47 +08:00
2026-02-27 11:19:22 -03:00
2025-08-24 23:18:24 +08:00
2026-02-04 11:40:02 +00:00
2025-09-21 23:01:08 +08:00
2026-01-03 16:30:14 +08:00
2024-08-12 00:00:20 +08:00
2025-10-02 09:30:48 +08:00
2025-09-25 20:33:50 +08:00
2026-02-04 11:40:02 +00:00
2024-08-12 00:00:20 +08:00
2026-07-21 01:21:40 +03:00
2026-07-21 01:21:40 +03:00
2025-11-17 11:17:54 +08:00
2026-04-25 18:14:51 +08:00
2026-04-25 18:14:51 +08:00
2026-07-22 09:48:28 -03:00
2026-07-02 17:49:36 +08:00
2025-12-18 12:14:56 +00:00
2025-12-18 12:14:56 +00:00
2026-06-21 18:20:58 +08:00
2026-06-21 18:20:58 +08:00
2026-06-18 09:13:51 -03:00
2026-04-15 22:36:25 +08:00
2026-07-24 09:41:24 -03:00
2026-05-21 09:04:27 +08:00
2026-07-16 11:02:55 +08:00
2026-03-24 20:39:45 +08:00
2026-07-24 09:41:24 -03:00
2026-07-02 17:49:36 +08:00
2026-05-10 15:14:35 +08:00
2024-09-09 22:42:27 +08:00
2026-06-14 18:55:40 +08:00
2026-04-25 18:14:51 +08:00
2026-07-25 12:28:33 +02:00
2026-07-25 12:28:33 +02:00
2025-09-26 10:55:19 +08:00
2026-06-11 17:10:31 -03:00
2026-05-21 13:18:52 +03:00
2026-07-24 09:41:24 -03:00
2026-01-23 17:05:56 +08:00
2026-07-25 12:28:33 +02:00
2026-07-25 12:28:33 +02:00
2026-07-24 09:41:24 -03:00
2025-09-23 16:50:33 +08:00
2026-07-02 17:49:36 +08:00
2026-07-15 20:12:51 +08:00
2026-07-04 22:14:55 +08:00
2026-07-04 22:14:55 +08:00
2026-07-17 16:09:19 +08:00
2026-07-17 16:09:19 +08:00
2026-07-20 14:47:26 +08:00
2026-07-20 14:47:26 +08:00
2026-07-06 18:14:26 +08:00
2026-07-06 12:31:34 +08:00
2026-07-06 12:31:34 +08:00
2026-07-20 12:48:17 +08:00
2026-07-17 21:12:55 +08:00
2026-07-17 16:09:19 +08:00
2026-07-10 19:57:35 +08:00
2026-07-25 12:28:33 +02:00
2026-07-03 17:19:24 -03:00
2026-07-22 19:09:57 -03:00
2026-07-22 19:09:57 -03:00
2026-07-05 10:39:25 +08:00
2026-07-05 10:39:25 +08:00
2026-07-14 02:54:20 +08:00
2025-09-28 14:19:02 +08:00
2026-06-05 20:45:43 +08:00
2026-07-13 12:19:33 -03:00
2026-07-22 15:14:49 -03:00
2026-05-16 15:22:31 +08:00
2026-05-28 19:45:03 +08:00
2026-05-16 15:22:31 +08:00
2026-07-24 09:41:24 -03:00
2026-05-28 08:10:21 +00:00
2026-07-24 09:41:24 -03:00
2026-07-16 19:28:50 +08:00
2025-12-18 12:14:56 +00:00
2025-12-18 12:14:56 +00:00
2026-07-02 17:49:36 +08:00
2026-07-02 17:49:36 +08:00
2025-06-01 18:35:48 +08:00
2024-07-23 18:00:21 +08:00
2024-06-29 22:13:57 +08:00
2026-06-18 09:13:51 -03:00
2026-07-10 15:41:57 +08:00
2026-07-10 15:41:57 +08:00
2025-11-17 10:29:44 +08:00
2025-07-13 20:10:42 +08:00
2025-12-18 12:14:56 +00:00
2025-12-18 12:14:56 +00:00
2026-07-17 16:25:10 +08:00
2026-02-11 16:00:04 +08:00
2025-01-07 23:25:32 +08:00
2026-03-03 17:36:42 -03:00
2025-10-28 15:29:54 +08:00
2026-07-24 09:41:24 -03:00
2026-02-06 23:02:48 +08:00
2025-10-14 08:56:18 +08:00
2025-10-14 08:56:18 +08:00
2026-05-22 10:46:29 +08:00
2026-05-21 09:04:26 +08:00
2026-07-13 14:54:42 +08:00
2026-06-18 09:13:51 -03:00
2026-07-24 09:41:24 -03:00
2026-07-22 19:09:57 -03:00
2026-07-17 10:20:24 +08:00
2026-01-03 23:06:57 +08:00
2026-06-18 09:13:51 -03:00
2026-01-23 17:05:56 +08:00
2026-04-13 19:45:39 +08:00
2026-07-18 01:46:23 +08:00
2026-01-03 23:06:57 +08:00
2025-06-14 10:27:10 +08:00
2025-06-14 10:27:10 +08:00
2026-07-26 17:48:11 +02:00
2026-07-01 19:19:23 +02:00
2026-04-13 19:45:39 +08:00
2025-09-26 14:35:06 +08:00
2025-08-24 23:18:24 +08:00
2026-06-18 09:13:51 -03:00
2026-07-17 22:37:56 +08:00
2026-07-17 22:37:56 +08:00
2026-07-24 09:41:24 -03:00
2026-07-17 09:41:01 +08:00
2026-07-11 20:24:03 +03:00
2026-07-03 17:19:24 -03:00
2025-02-26 23:07:23 +08:00
2026-07-24 09:41:24 -03:00
2026-07-17 06:48:15 +08:00
2026-03-24 20:50:44 +08:00
2026-07-24 09:41:24 -03:00
2026-07-15 17:18:46 +08:00
2026-02-04 11:40:02 +00:00
2025-12-14 14:26:16 +01:00
2026-03-25 15:58:39 +08:00
2025-09-16 21:21:40 +08:00
2026-01-23 17:05:56 +08:00
2026-01-23 17:05:56 +08:00
2026-07-02 17:49:36 +08:00
2026-07-02 17:49:36 +08:00
2026-04-13 19:45:39 +08:00
2025-10-28 15:30:06 +08:00
2025-10-28 15:30:06 +08:00
2026-07-21 15:16:07 -03:00
2026-06-06 23:44:39 +08:00
2026-07-13 12:19:33 -03:00
2026-05-21 09:04:26 +08:00
2025-12-18 12:14:56 +00:00
2026-07-19 20:16:17 +08:00
2026-07-17 09:41:01 +08:00
2026-05-01 18:01:29 +08:00
2025-10-28 15:29:56 +08:00
2026-06-26 18:37:33 +08:00
2026-04-24 13:54:09 +08:00
2026-07-13 12:19:33 -03:00
2026-05-01 18:01:29 +08:00
2026-07-24 09:41:24 -03:00
2026-05-01 18:01:29 +08:00
2026-05-21 11:42:18 +08:00
2025-10-28 15:29:58 +08:00
2026-07-06 11:28:03 +08:00
2026-04-25 18:14:51 +08:00
2026-03-24 20:44:32 +08:00
2026-05-13 00:01:10 +08:00
2026-05-13 00:01:10 +08:00
2025-05-26 14:43:32 +08:00