feat: add missing Annotate tab commands and icons

New dimension commands: QDIM, DIMEDIT, DIMTEDIT, DIMBREAK, DIMSPACE,
DIMJOGLINE with full command workflows and SVG icons.

New multileader commands: MLEADERADD, MLEADERREMOVE, MLEADERALIGN,
MLEADERCOLLECT with entity injection pattern for in-place editing.

Updated annotate ribbon: all tools exposed across Text, Dimensions,
Leaders, Tables, Markup, and Annotation Scaling groups. Added STYLE,
FIND, DIMSTYLE shortcut buttons.

Added `inject_picked_entity` to the CadCommand trait for commands that
need a cloned copy of the picked entity to modify (DIMTEDIT, MLEADERADD,
MLEADERREMOVE). Sentinel-based dispatch in cmd_result.rs handles
DIMBREAK, DIMSPACE, DIMJOGLINE, MLEADERALIGN, and MLEADERCOLLECT.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-04-09 03:26:47 +03:00
commit 08b9a21d31
25 changed files with 1408 additions and 1 deletions

View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="3" y1="14" x2="8" y2="14" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="11" y1="14" x2="13" y2="14" stroke="#4cc9f0" stroke-width="1.5" stroke-dasharray="2,1"/>
<line x1="16" y1="14" x2="21" y2="14" stroke="#4cc9f0" stroke-width="1.5"/>
<polygon points="3,12 3,16 5,14" fill="#4cc9f0"/>
<polygon points="21,12 21,16 19,14" fill="#4cc9f0"/>
<line x1="3" y1="8" x2="3" y2="14" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="21" y1="8" x2="21" y2="14" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="12" y1="4" x2="12" y2="20" stroke="#e0e0e0" stroke-width="1.2"/>
<line x1="9" y1="11" x2="15" y2="17" stroke="#4cc9f0" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 736 B

11
assets/icons/dim_edit.svg Normal file
View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="3" y1="16" x2="21" y2="16" stroke="#4cc9f0" stroke-width="1.4"/>
<polygon points="3,14 3,18 5,16" fill="#4cc9f0"/>
<polygon points="21,14 21,18 19,16" fill="#4cc9f0"/>
<line x1="3" y1="10" x2="3" y2="16" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="21" y1="10" x2="21" y2="16" stroke="#e0e0e0" stroke-width="1.0"/>
<text x="8" y="13" font-family="monospace" font-size="7" fill="#4cc9f0">T</text>
<line x1="13" y1="6" x2="19" y2="6" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="19" y1="6" x2="17" y2="8" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="19" y1="6" x2="17" y2="4" stroke="#e0e0e0" stroke-width="1.0"/>
</svg>

After

Width:  |  Height:  |  Size: 717 B

8
assets/icons/dim_jog.svg Normal file
View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="3" y1="14" x2="21" y2="14" stroke="#4cc9f0" stroke-width="1.4"/>
<polygon points="3,12 3,16 5,14" fill="#4cc9f0"/>
<polygon points="21,12 21,16 19,14" fill="#4cc9f0"/>
<line x1="3" y1="8" x2="3" y2="14" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="21" y1="8" x2="21" y2="14" stroke="#e0e0e0" stroke-width="1.0"/>
<polyline points="9,14 11,11 13,17 15,14" fill="none" stroke="#e0e0e0" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 498 B

View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="3" y1="18" x2="21" y2="18" stroke="#4cc9f0" stroke-width="1.4"/>
<line x1="3" y1="13" x2="21" y2="13" stroke="#4cc9f0" stroke-width="1.4"/>
<line x1="3" y1="8" x2="21" y2="8" stroke="#4cc9f0" stroke-width="1.4"/>
<line x1="3" y1="5" x2="3" y2="21" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="21" y1="5" x2="21" y2="21" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="12" y1="8" x2="12" y2="18" stroke="#e0e0e0" stroke-width="0.8" stroke-dasharray="2,1"/>
<polygon points="11,8 13,8 12,5" fill="#e0e0e0"/>
<polygon points="11,13 13,13 12,10" fill="#e0e0e0"/>
<polygon points="11,18 13,18 12,21" fill="#e0e0e0"/>
</svg>

After

Width:  |  Height:  |  Size: 711 B

View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="3" y1="16" x2="21" y2="16" stroke="#4cc9f0" stroke-width="1.4"/>
<polygon points="3,14 3,18 5,16" fill="#4cc9f0"/>
<polygon points="21,14 21,18 19,16" fill="#4cc9f0"/>
<line x1="3" y1="10" x2="3" y2="16" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="21" y1="10" x2="21" y2="16" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="4" y1="20" x2="20" y2="20" stroke="#e0e0e0" stroke-width="0.8"/>
<line x1="4" y1="22" x2="14" y2="22" stroke="#4cc9f0" stroke-width="1.2"/>
<line x1="10" y1="6" x2="14" y2="6" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="12" y1="4" x2="12" y2="8" stroke="#e0e0e0" stroke-width="1.0"/>
</svg>

After

Width:  |  Height:  |  Size: 712 B

View file

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="3" y1="17" x2="21" y2="17" stroke="#4cc9f0" stroke-width="1.4"/>
<polygon points="3,15 3,19 5,17" fill="#4cc9f0"/>
<polygon points="21,15 21,19 19,17" fill="#4cc9f0"/>
<line x1="3" y1="11" x2="3" y2="17" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="21" y1="11" x2="21" y2="17" stroke="#e0e0e0" stroke-width="1.0"/>
<rect x="9" y="10" width="6" height="5" fill="none" stroke="#4cc9f0" stroke-width="1.0" stroke-dasharray="2,1"/>
<line x1="12" y1="7" x2="12" y2="10" stroke="#e0e0e0" stroke-width="1.0" stroke-dasharray="1,1"/>
<polygon points="10,7 14,7 12,4" fill="#e0e0e0"/>
</svg>

After

Width:  |  Height:  |  Size: 673 B

6
assets/icons/find.svg Normal file
View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<circle cx="10" cy="10" r="6" fill="none" stroke="#e0e0e0" stroke-width="1.4"/>
<line x1="14.5" y1="14.5" x2="20" y2="20" stroke="#4cc9f0" stroke-width="1.8" stroke-linecap="round"/>
<line x1="8" y1="10" x2="12" y2="10" stroke="#4cc9f0" stroke-width="1.2"/>
<line x1="10" y1="8" x2="10" y2="12" stroke="#4cc9f0" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 409 B

View file

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="4" y1="18" x2="12" y2="10" stroke="#4cc9f0" stroke-width="1.4"/>
<polygon points="4,18 6,16 4,14 3,17" fill="#4cc9f0"/>
<line x1="12" y1="10" x2="20" y2="10" stroke="#4cc9f0" stroke-width="1.4"/>
<rect x="14" y="7" width="7" height="5" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="8" y1="18" x2="12" y2="14" stroke="#4cc9f0" stroke-width="1.2"/>
<polygon points="8,18 10,16 8,14 7,17" fill="#4cc9f0"/>
<line x1="19" y1="16" x2="23" y2="16" stroke="#4cc9f0" stroke-width="1.6"/>
<line x1="21" y1="14" x2="21" y2="18" stroke="#4cc9f0" stroke-width="1.6"/>
</svg>

After

Width:  |  Height:  |  Size: 663 B

View file

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="2" y1="6" x2="2" y2="20" stroke="#4cc9f0" stroke-width="1.4"/>
<line x1="2" y1="8" x2="9" y2="8" stroke="#4cc9f0" stroke-width="1.2"/>
<polygon points="2,8 4,6 4,10" fill="#4cc9f0"/>
<rect x="9" y="5" width="7" height="5" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="2" y1="13" x2="9" y2="13" stroke="#4cc9f0" stroke-width="1.2"/>
<polygon points="2,13 4,11 4,15" fill="#4cc9f0"/>
<rect x="9" y="10" width="7" height="5" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="2" y1="18" x2="9" y2="18" stroke="#4cc9f0" stroke-width="1.2"/>
<polygon points="2,18 4,16 4,20" fill="#4cc9f0"/>
<rect x="9" y="15" width="7" height="5" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
</svg>

After

Width:  |  Height:  |  Size: 798 B

View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="4" y1="6" x2="12" y2="12" stroke="#4cc9f0" stroke-width="1.2"/>
<polygon points="4,6 6,8 4,10 3,7" fill="#4cc9f0"/>
<line x1="4" y1="18" x2="12" y2="12" stroke="#4cc9f0" stroke-width="1.2"/>
<polygon points="4,18 6,16 4,14 3,17" fill="#4cc9f0"/>
<line x1="12" y1="12" x2="20" y2="12" stroke="#4cc9f0" stroke-width="1.4"/>
<rect x="14" y="9" width="7" height="5" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
</svg>

After

Width:  |  Height:  |  Size: 502 B

View file

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="4" y1="18" x2="12" y2="10" stroke="#4cc9f0" stroke-width="1.4"/>
<polygon points="4,18 6,16 4,14 3,17" fill="#4cc9f0"/>
<line x1="12" y1="10" x2="20" y2="10" stroke="#4cc9f0" stroke-width="1.4"/>
<rect x="14" y="7" width="7" height="5" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="8" y1="18" x2="12" y2="14" stroke="#e0e0e0" stroke-width="1.2" stroke-dasharray="2,1"/>
<polygon points="8,18 10,16 8,14 7,17" fill="#e0e0e0"/>
<line x1="19" y1="16" x2="23" y2="16" stroke="#4cc9f0" stroke-width="1.6"/>
</svg>

After

Width:  |  Height:  |  Size: 608 B

16
assets/icons/qdim.svg Normal file
View file

@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<line x1="3" y1="18" x2="21" y2="18" stroke="#e0e0e0" stroke-width="1.2"/>
<line x1="5" y1="14" x2="5" y2="18" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="9" y1="14" x2="9" y2="18" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="15" y1="14" x2="15" y2="18" stroke="#e0e0e0" stroke-width="1.0"/>
<line x1="19" y1="14" x2="19" y2="18" stroke="#e0e0e0" stroke-width="1.0"/>
<polygon points="5,16 3,17 5,18" fill="#4cc9f0"/>
<polygon points="9,16 11,17 9,18" fill="#4cc9f0"/>
<line x1="5" y1="17" x2="9" y2="17" stroke="#4cc9f0" stroke-width="1.0"/>
<polygon points="15,16 13,17 15,18" fill="#4cc9f0"/>
<polygon points="19,16 21,17 19,18" fill="#4cc9f0"/>
<line x1="15" y1="17" x2="19" y2="17" stroke="#4cc9f0" stroke-width="1.0"/>
<rect x="3" y="5" width="4" height="6" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
<rect x="10" y="5" width="5" height="4" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
<rect x="17" y="5" width="4" height="5" fill="none" stroke="#e0e0e0" stroke-width="1.0"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<text x="2" y="14" font-family="serif" font-size="14" font-weight="bold" fill="#4cc9f0">A</text>
<text x="12" y="14" font-family="sans-serif" font-size="10" fill="#e0e0e0">A</text>
<line x1="2" y1="17" x2="22" y2="17" stroke="#e0e0e0" stroke-width="0.8"/>
<line x1="2" y1="19" x2="16" y2="19" stroke="#4cc9f0" stroke-width="1.2"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B