Copy, cut and paste sketch geometry (Ctrl+C/X/V, context menu) (#1500)

* Copy, cut and paste sketch geometry (Ctrl+C/X/V, context menu)

Sketch geometry had no copy or paste: Ctrl+C / Ctrl+X / Ctrl+V arrive as
clipboard events that nothing handled, and the sketch context menu had no
Copy, Cut or Paste.

- sketch.copy / sketch.cut / sketch.paste: lines, arcs, circles, ellipses,
  splines, conics, points and text. Constraints and dimensions wholly among
  the copied entities come along (each dimension gets its own parameter
  with the same expression); ones that reach outside, fixes and pattern or
  offset relations are dropped. Paste goes centred at `at`, by
  `translate`, or offset from the original (same sketch) / at the same
  coordinates (another sketch, on its plane). One undo step; the pasted
  geometry is selected.
- Ctrl+C / Ctrl+X / Ctrl+V in a sketch (paste at the cursor), and Cut,
  Copy and Paste in the sketch context menu. Outside a sketch Ctrl+C /
  Ctrl+V copy and paste the selected timeline features. A copy also puts a
  line of text on the system clipboard so the next Ctrl+V is delivered.

Fixes #1480

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Keep a pasted text's height and angle expressions, drop its place's

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
bherbruckandClaude Opus 5.5 authored and GitHub committed 2026-10-15 15:55:10 -04:00
1 parent 7934edcad4
commit 843c548589
20 files changed
+981 -8

No files matched your search

+8 -5
View File
@@ -1,8 +1,8 @@
# Features
SolidCraft's commands by area, generated by `cargo xtask features` from the command registry (`solidcraft-cli commands`). **368 commands.** Planned (registered, not built yet): 4. Every command runs the same way from the toolbar, a script, `solidcraft-cli exec <id> '<json>'`, the control channel and MCP; parameters are in the [command reference](book/src/reference/commands.md) (`cargo xtask book`). Status and plans: [ROADMAP](../ROADMAP.md).
SolidCraft's commands by area, generated by `cargo xtask features` from the command registry (`solidcraft-cli commands`). **373 commands.** Planned (registered, not built yet): 3. Every command runs the same way from the toolbar, a script, `solidcraft-cli exec <id> '<json>'`, the control channel and MCP; parameters are in the [command reference](book/src/reference/commands.md) (`cargo xtask book`). Status and plans: [ROADMAP](../ROADMAP.md).
## Sketch (99)
## Sketch (102)
| Command | Id | Toolbar |
|---|---|---|
@@ -104,6 +104,9 @@ SolidCraft's commands by area, generated by `cargo xtask features` from the comm
| Break Link | `sketch.break_link` | – |
| Auto-Project Edges on Reference | `sketch.auto_project` | – |
| Redefine Sketch Plane | `sketch.redefine` | – |
| Copy Sketch Entities | `sketch.copy` | – |
| Cut Sketch Entities | `sketch.cut` | – |
| Paste Sketch Entities | `sketch.paste` | – |
| Inspect Sketch | `sketch.inspect` | – |
## Solid modelling (35)
@@ -146,7 +149,7 @@ SolidCraft's commands by area, generated by `cargo xtask features` from the comm
| Align | `solid.align` | SOLID › MODIFY |
| Remove | `solid.remove` | SOLID › MODIFY |
## Surfaces (14, 3 planned)
## Surfaces (15, 2 planned)
| Command | Id | Toolbar |
|---|---|---|
@@ -162,7 +165,7 @@ SolidCraft's commands by area, generated by `cargo xtask features` from the comm
| Offset Surface | `surface.offset` | SURFACE › CREATE |
| Ruled Surface | `surface.ruled` | SURFACE › CREATE |
| Boundary Surface *(planned: [#763](https://github.com/bherbruck/solidcraft/issues/763))* | `surface.boundary` | SURFACE › CREATE |
| Blend Surface *(planned: [#764](https://github.com/bherbruck/solidcraft/issues/764))* | `surface.blend` | SURFACE › CREATE |
| Blend Surface | `surface.blend` | SURFACE › CREATE |
| Untrim | `surface.untrim` | SURFACE › MODIFY |
| Unstitch | `surface.unstitch` | SURFACE › MODIFY |
| Reverse Normal | `surface.reverse_normal` | SURFACE › MODIFY |
@@ -238,7 +241,7 @@ SolidCraft's commands by area, generated by `cargo xtask features` from the comm
| Paste New | `component.paste_new` | – |
| Capture Position | `component.capture_position` | SOLID › POSITION |
| Revert Position | `component.revert_position` | SOLID › POSITION |
| Insert Design | `component.insert_design` | – |
| Insert Design | `component.insert_design` | SOLID › ASSEMBLE |
| Update Links | `component.update_links` | – |
| Break Link | `component.break_link` | – |
| List Links | `component.links` | – |