feat(clipboard): paste menu with paste-to-original and paste-as-block

Turn the ribbon Clipboard "Paste" button into a dropdown:
- Paste — existing pick-a-point paste.
- Paste to Original Coordinates — drops the clipboard at its source
  coordinates with no prompt.
- Paste as Block — wraps the clipboard contents in a new block definition
  and starts an interactive insert (prompts for the drop point, with the
  geometry rubber-banding under the cursor).

Also fixes two bugs the new commands exposed:
- entities_centroid summed the NaN separator points wire models carry,
  so the paste base point came out NaN; non-finite points are now
  skipped. A NaN base previously froze block tessellation outright.
- PASTEORIG added clipboard entities with their original handles
  (duplicates on same-document paste); it now goes through
  add_entity_clone and merges referenced records like the other pastes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Opus 4.8 committed 2026-06-18 16:09:47 +03:00
1 parent 446430d2b3
commit 47f74a9b98
7 files changed
+183 -10

No files matched your search

+7 -1
View File
@@ -214,7 +214,13 @@ impl CadModule for DrawModule {
RibbonGroup {
title: "Clipboard",
tools: vec![
RibbonItem::LargeTool(paste::tool()),
RibbonItem::LargeDropdown {
id: "PASTE_MENU",
label: "Paste",
icon: paste::ICON,
items: paste::MENU_ITEMS.to_vec(),
default: "PASTECLIP",
},
copy_clip::tool().into(),
cut::tool().into(),
],