Files
OrcaSlicer/docs/ux/offer_atlas.html
T
Tommaso BianchiandClaude Opus 5 fd1bc092d8 Design: slot Radius caption, keyboard offer, plane combo removal, mass props, docs
Mirror of snaporca ac85277bac..0e7cb3ec78 (six changes, applied as a patch to
DesignPanel.cpp rather than copied, so this fork's 30 permitted divergent lines survive
— parity re-checked afterwards: the five shared files are byte-identical, DesignCanvas.cpp
and DesignPanel.cpp differ by exactly 16 and 30 lines).

- The straight slot's inline field says Radius, which is what it sets. It stores the
  half-width and passed the typed number through unchanged, so 30 produced a 60 mm slot.
- The offer opens from the keyboard (Menu, Shift+F10), anchored on the viewport rather
  than wherever the pointer happens to be. The card hint names the new route.
- The sketch card's Plane combo is gone; the plane comes from the viewport. Also stops
  build_candidate collapsing a face plane to a base plane while editing.
- Mass properties and the dead Edit row are wired into the offer; DesignOffer.hpp is
  regenerated from tool_atlas.json, verified by re-running the generator and diffing.
- docs/rig_build_traps.md + scripts/rig-build.sh, which derives its fork identity from
  project() so it cannot be pointed at the other fork's image or volume.
- docs/design_tab.md refreshed (44 commits stale) + a PR description, with this fork's
  own merge-base and diff shape rather than snaporca's.

Built green in the deps container with the new script and verified on the rig: Menu and
Shift+F10 both open the offer at the viewport centre with the pointer parked off-canvas,
and the sketch card shows no Plane row.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LyRwbuq6fjn3VV9U9UvhBM
2026-08-01 06:21:08 +02:00

79 lines
34 KiB
HTML

<!doctype html><meta charset="utf-8"><title>Design tab — offer atlas</title>
<style>
:root{color-scheme:dark;--bg:#15181c;--panel:#1c2026;--line:#2c323a;--tx:#e7ecf1;--mu:#93a0ad;--ac:#4f9bd9}
body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.55 Inter,system-ui,sans-serif}
header{padding:38px 40px 22px;border-bottom:1px solid var(--line)}
h1{margin:0 0 6px;font-size:26px;letter-spacing:-.02em}
h2{margin:38px 0 12px;font-size:18px} p{color:var(--mu);max-width:78ch}
main{padding:0 40px 60px}
.stats{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0 6px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 16px;min-width:130px}
.stat b{display:block;font-size:24px} .stat span{color:var(--mu);font-size:12px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:18px}
figure{margin:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}
figure img{width:100%;display:block}
figcaption{padding:9px 13px;font-size:13px;color:var(--mu);border-top:1px solid var(--line)}
table{border-collapse:collapse;width:100%;font-size:13px;margin-top:10px}
th,td{border-bottom:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}
th{color:var(--mu);font-weight:500} td.n{text-align:right;font-variant-numeric:tabular-nums}
td.d{color:var(--mu);font-size:12px}
.wrap{overflow-x:auto}
</style>
<header>
<h1>The offer — atlas of every state</h1>
<p>Every state of the object-driven tool offer, generated from
<code>docs/ux/tool_atlas.json</code>. The invariant under test: a verb has one address, that
address is the same in every selection where it appears, and slots that do not apply are drawn
empty rather than compacted.</p>
<div class="stats">
<div class="stat"><b>60</b><span>verbs mapped</span></div>
<div class="stat"><b>20</b><span>selection kinds</span></div>
<div class="stat"><b>40</b><span>primary rings</span></div>
<div class="stat"><b>73</b><span>secondary rings</span></div>
<div class="stat"><b>113</b><span>states total</span></div>
<div class="stat"><b>3.5/8</b><span>mean slots filled</span></div>
<div class="stat"><b>5</b><span>verbs with no GUI yet</span></div>
</div>
</header>
<main>
<h2>Decision 0 — ring or vertical list</h2>
<p>The live question. Both forms carry the SAME map and the same invariant — fixed order, never
re-sorted, nothing compacted; only the geometry differs. Left-click selects; right-click opens the
offer. What the list buys: a disabled row can state its own reason in the words the product
already ships, where an empty slot in a ring is mute; nine sketch primitives fit without an
overflow; shortcuts line up in a readable column; long translated names fit; and it is navigable
by arrow key and by screen reader, which a radial is not. What it costs: no equidistant flick
gesture, and travel to the last row is longer than to the nearest direction. Pairs below —
list first, the same state as a ring second.</p>
<h2>Decision 1 — ring capacity</h2>
<p>The same three selections at eight and at twelve. Eight keeps 45° between neighbours, which is
the reliable eyes-free pointing threshold and maps 1:1 to the numpad; twelve buys direct addresses
for more verbs at 30° spacing and positions that stop being nameable.</p>
<div class="grid"><figure><img src="mockups/cmp_8__face_planar.svg" loading="lazy"><figcaption>8 slots — face_planar</figcaption></figure><figure><img src="mockups/cmp_8__edge_str.svg" loading="lazy"><figcaption>8 slots — edge_str</figcaption></figure><figure><img src="mockups/cmp_8__sk_line.svg" loading="lazy"><figcaption>8 slots — sk_line</figcaption></figure></div>
<div class="grid" style="margin-top:18px"><figure><img src="mockups/cmp_12__face_planar.svg" loading="lazy"><figcaption>12 slots — face_planar</figcaption></figure><figure><img src="mockups/cmp_12__edge_str.svg" loading="lazy"><figcaption>12 slots — edge_str</figcaption></figure><figure><img src="mockups/cmp_12__sk_line.svg" loading="lazy"><figcaption>12 slots — sk_line</figcaption></figure></div>
<h2>Decision 2 — one map or one per mode</h2>
<p>These renders use ONE shared map: sketch verbs occupy the same eight families as model verbs,
so dress-up is south-east whether you picked a solid edge or a sketch line. Compare the sketch-mode
states below against the model-mode ones — if a verb that exists in both modes ever appears at two
addresses, the shared map has failed and the split map is the answer.</p>
<h2>The matrix — every selection, every document state</h2>
<div class="wrap"><table>
<tr><th>Selection</th><th>Document</th><th>Verbs</th><th>Slots</th><th>2nd rings</th><th>What lands where</th></tr>
<tr><td>Nothing selected</td><td>Working document</td><td class="n">5</td><td class="n">2/8</td><td class="n">1</td><td class="d">create: Sketch · reference: Plane, Axis, Coord Sys, Helix</td></tr><tr><td>Planar face</td><td>Working document</td><td class="n">18</td><td class="n">8/8</td><td class="n">6</td><td class="d">create: Sketch · add: Extrude, Thicken · remove: Hole, Shell · dressup: Fillet, Chamfer, Draft · repeat: Pattern · transform: Mate, Align to · reference: Plane, Axis, Coord Sys, Project, Measure · modify: Edit, Delete Face</td></tr><tr><td>Cylindrical face</td><td>Working document</td><td class="n">6</td><td class="n">3/8</td><td class="n">2</td><td class="d">remove: Thread · reference: Axis, Helix, Measure · modify: Edit, Delete Face</td></tr><tr><td>Curved face</td><td>Working document</td><td class="n">5</td><td class="n">4/8</td><td class="n">1</td><td class="d">add: Thicken · dressup: Draft · reference: Measure · modify: Edit, Delete Face</td></tr><tr><td>Straight edge</td><td>Working document</td><td class="n">6</td><td class="n">3/8</td><td class="n">2</td><td class="d">dressup: Fillet, Chamfer · repeat: Pattern on Curve · reference: Plane, Axis, Measure</td></tr><tr><td>Circular edge</td><td>Working document</td><td class="n">4</td><td class="n">3/8</td><td class="n">1</td><td class="d">remove: Thread · dressup: Fillet, Chamfer · reference: Measure</td></tr><tr><td>Vertex</td><td>Working document</td><td class="n">4</td><td class="n">1/8</td><td class="n">1</td><td class="d">reference: Plane, Axis, Coord Sys, Measure</td></tr><tr><td>Solid body</td><td>Working document</td><td class="n">15</td><td class="n">6/8</td><td class="n">5</td><td class="d">remove: Shell, Cut, Split · dressup: Fillet, Chamfer · repeat: Pattern, Mirror, Pattern on Curve · transform: Move · reference: Project, Measure, Mass · modify: Edit, Colour, Delete</td></tr><tr><td>Sheet body</td><td>Working document</td><td class="n">7</td><td class="n">5/8</td><td class="n">1</td><td class="d">add: Thicken Surface · dressup: Surface Offset · transform: Move · reference: Measure · modify: Edit, Colour, Delete</td></tr><tr><td>Two bodies</td><td>Working document</td><td class="n">5</td><td class="n">4/8</td><td class="n">1</td><td class="d">add: Combine · transform: Mate · reference: Measure, Interference · modify: Delete</td></tr><tr><td>Datum plane</td><td>Working document</td><td class="n">9</td><td class="n">5/8</td><td class="n">3</td><td class="d">create: Sketch · remove: Hole, Cut · repeat: Mirror · reference: Plane, Helix, Project · modify: Edit, Delete</td></tr><tr><td>Datum axis</td><td>Working document</td><td class="n">2</td><td class="n">1/8</td><td class="n">1</td><td class="d">modify: Edit, Delete</td></tr><tr><td>Coordinate system</td><td>Working document</td><td class="n">3</td><td class="n">2/8</td><td class="n">1</td><td class="d">transform: Mate · modify: Edit, Delete</td></tr><tr><td>Text / imported art</td><td>Working document</td><td class="n">4</td><td class="n">3/8</td><td class="n">1</td><td class="d">repeat: Pattern · transform: Move · modify: Edit, Delete</td></tr><tr><td>Closed sketch loop</td><td>Working document</td><td class="n">11</td><td class="n">3/8</td><td class="n">2</td><td class="d">add: Extrude, Revolve, Sweep, Loft, Surface Extrude, Surface Revolve, Surface Loft, Surface Fill · repeat: Pattern · modify: Edit, Delete</td></tr><tr><td>Sketch, nothing picked</td><td>Working document</td><td class="n">11</td><td class="n">2/8</td><td class="n">2</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · reference: Dimension, Construction</td></tr><tr><td>Sketch line</td><td>Working document</td><td class="n">20</td><td class="n">8/8</td><td class="n">4</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · add: Offset · remove: Trim · dressup: Fillet, Chamfer · repeat: Mirror · transform: Move · reference: Dimension, Constrain, Construction · modify: Extend, Delete</td></tr><tr><td>Sketch arc or circle</td><td>Working document</td><td class="n">18</td><td class="n">7/8</td><td class="n">3</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · add: Offset · remove: Trim · repeat: Mirror · transform: Move · reference: Dimension, Constrain, Construction · modify: Extend, Delete</td></tr><tr><td>Sketch point</td><td>Working document</td><td class="n">13</td><td class="n">4/8</td><td class="n">2</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · transform: Move · reference: Dimension, Constrain · modify: Delete</td></tr><tr><td>Two sketch entities</td><td>Working document</td><td class="n">20</td><td class="n">8/8</td><td class="n">4</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · add: Offset · remove: Trim · dressup: Fillet, Chamfer · repeat: Mirror · transform: Move · reference: Dimension, Constrain, Construction · modify: Extend, Delete</td></tr><tr><td>Nothing selected</td><td>Fresh document</td><td class="n">5</td><td class="n">2/8</td><td class="n">1</td><td class="d">create: Sketch · reference: Plane, Axis, Coord Sys, Helix</td></tr><tr><td>Planar face</td><td>Fresh document</td><td class="n">7</td><td class="n">4/8</td><td class="n">1</td><td class="d">create: Sketch · add: Extrude · reference: Plane, Axis, Coord Sys, Measure · modify: Edit</td></tr><tr><td>Cylindrical face</td><td>Fresh document</td><td class="n">4</td><td class="n">2/8</td><td class="n">1</td><td class="d">reference: Axis, Helix, Measure · modify: Edit</td></tr><tr><td>Curved face</td><td>Fresh document</td><td class="n">2</td><td class="n">2/8</td><td class="n">0</td><td class="d">reference: Measure · modify: Edit</td></tr><tr><td>Straight edge</td><td>Fresh document</td><td class="n">3</td><td class="n">1/8</td><td class="n">1</td><td class="d">reference: Plane, Axis, Measure</td></tr><tr><td>Circular edge</td><td>Fresh document</td><td class="n">1</td><td class="n">1/8</td><td class="n">0</td><td class="d">reference: Measure</td></tr><tr><td>Vertex</td><td>Fresh document</td><td class="n">4</td><td class="n">1/8</td><td class="n">1</td><td class="d">reference: Plane, Axis, Coord Sys, Measure</td></tr><tr><td>Solid body</td><td>Fresh document</td><td class="n">3</td><td class="n">2/8</td><td class="n">1</td><td class="d">reference: Measure · modify: Edit, Delete</td></tr><tr><td>Sheet body</td><td>Fresh document</td><td class="n">3</td><td class="n">2/8</td><td class="n">1</td><td class="d">reference: Measure · modify: Edit, Delete</td></tr><tr><td>Two bodies</td><td>Fresh document</td><td class="n">2</td><td class="n">2/8</td><td class="n">0</td><td class="d">reference: Measure · modify: Delete</td></tr><tr><td>Datum plane</td><td>Fresh document</td><td class="n">5</td><td class="n">3/8</td><td class="n">2</td><td class="d">create: Sketch · reference: Plane, Helix · modify: Edit, Delete</td></tr><tr><td>Datum axis</td><td>Fresh document</td><td class="n">2</td><td class="n">1/8</td><td class="n">1</td><td class="d">modify: Edit, Delete</td></tr><tr><td>Coordinate system</td><td>Fresh document</td><td class="n">2</td><td class="n">1/8</td><td class="n">1</td><td class="d">modify: Edit, Delete</td></tr><tr><td>Text / imported art</td><td>Fresh document</td><td class="n">2</td><td class="n">1/8</td><td class="n">1</td><td class="d">modify: Edit, Delete</td></tr><tr><td>Closed sketch loop</td><td>Fresh document</td><td class="n">7</td><td class="n">2/8</td><td class="n">2</td><td class="d">add: Extrude, Revolve, Surface Extrude, Surface Revolve, Surface Fill · modify: Edit, Delete</td></tr><tr><td>Sketch, nothing picked</td><td>Fresh document</td><td class="n">11</td><td class="n">2/8</td><td class="n">2</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · reference: Dimension, Construction</td></tr><tr><td>Sketch line</td><td>Fresh document</td><td class="n">20</td><td class="n">8/8</td><td class="n">4</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · add: Offset · remove: Trim · dressup: Fillet, Chamfer · repeat: Mirror · transform: Move · reference: Dimension, Constrain, Construction · modify: Extend, Delete</td></tr><tr><td>Sketch arc or circle</td><td>Fresh document</td><td class="n">18</td><td class="n">7/8</td><td class="n">3</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · add: Offset · remove: Trim · repeat: Mirror · transform: Move · reference: Dimension, Constrain, Construction · modify: Extend, Delete</td></tr><tr><td>Sketch point</td><td>Fresh document</td><td class="n">13</td><td class="n">4/8</td><td class="n">2</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · transform: Move · reference: Dimension, Constrain · modify: Delete</td></tr><tr><td>Two sketch entities</td><td>Fresh document</td><td class="n">20</td><td class="n">8/8</td><td class="n">4</td><td class="d">create: Line, Rectangle, Circle, Arc, Slot, Ellipse, Spline, Polygon, Point · add: Offset · remove: Trim · dressup: Fillet, Chamfer · repeat: Mirror · transform: Move · reference: Dimension, Constrain, Construction · modify: Extend, Delete</td></tr>
</table></div>
<h2>Overflow — the one place eight slots is not enough</h2>
<p>Measured, not predicted: the <b>create</b> sub-ring needs 10 addresses, so Polygon, Point are pushed behind a “More” slot. This is the decision the ring size actually turns on — either a verb moves to another family, or the tail goes to a third level, or the ring is not eight. It affects sketch mode only; every model-mode family fits.</p>
<h2>Not in the offer</h2>
<p>Import STEP, Import mesh, Text, SVG, Export STEP, Commit to Plate, Undo, Redo, Variables, Section view, Origin planes, World axes — these act on the document, not on a selection,
so they stay in chrome. Verbs with kernel support but no GUI today, which still hold an address:
Split, Pattern on Curve, Align to, Measure, Interference.</p>
<h2>All states</h2>
<div class="grid"><figure><img src="mockups/rich__none.svg" alt="Nothing selected — Working document" loading="lazy"><figcaption>Nothing selected — Working document</figcaption></figure><figure><img src="mockups/rich__none__reference.svg" alt="Nothing selected — Reference ring" loading="lazy"><figcaption>Nothing selected — Reference ring</figcaption></figure><figure><img src="mockups/rich__face_planar.svg" alt="Planar face — Working document" loading="lazy"><figcaption>Planar face — Working document</figcaption></figure><figure><img src="mockups/rich__face_planar__add.svg" alt="Planar face — Add material ring" loading="lazy"><figcaption>Planar face — Add material ring</figcaption></figure><figure><img src="mockups/rich__face_planar__remove.svg" alt="Planar face — Remove ring" loading="lazy"><figcaption>Planar face — Remove ring</figcaption></figure><figure><img src="mockups/rich__face_planar__dressup.svg" alt="Planar face — Dress-up ring" loading="lazy"><figcaption>Planar face — Dress-up ring</figcaption></figure><figure><img src="mockups/rich__face_planar__transform.svg" alt="Planar face — Transform ring" loading="lazy"><figcaption>Planar face — Transform ring</figcaption></figure><figure><img src="mockups/rich__face_planar__reference.svg" alt="Planar face — Reference ring" loading="lazy"><figcaption>Planar face — Reference ring</figcaption></figure><figure><img src="mockups/rich__face_planar__modify.svg" alt="Planar face — Modify ring" loading="lazy"><figcaption>Planar face — Modify ring</figcaption></figure><figure><img src="mockups/rich__face_cyl.svg" alt="Cylindrical face — Working document" loading="lazy"><figcaption>Cylindrical face — Working document</figcaption></figure><figure><img src="mockups/rich__face_cyl__reference.svg" alt="Cylindrical face — Reference ring" loading="lazy"><figcaption>Cylindrical face — Reference ring</figcaption></figure><figure><img src="mockups/rich__face_cyl__modify.svg" alt="Cylindrical face — Modify ring" loading="lazy"><figcaption>Cylindrical face — Modify ring</figcaption></figure><figure><img src="mockups/rich__face_other.svg" alt="Curved face — Working document" loading="lazy"><figcaption>Curved face — Working document</figcaption></figure><figure><img src="mockups/rich__face_other__modify.svg" alt="Curved face — Modify ring" loading="lazy"><figcaption>Curved face — Modify ring</figcaption></figure><figure><img src="mockups/rich__edge_str.svg" alt="Straight edge — Working document" loading="lazy"><figcaption>Straight edge — Working document</figcaption></figure><figure><img src="mockups/rich__edge_str__dressup.svg" alt="Straight edge — Dress-up ring" loading="lazy"><figcaption>Straight edge — Dress-up ring</figcaption></figure><figure><img src="mockups/rich__edge_str__reference.svg" alt="Straight edge — Reference ring" loading="lazy"><figcaption>Straight edge — Reference ring</figcaption></figure><figure><img src="mockups/rich__edge_circ.svg" alt="Circular edge — Working document" loading="lazy"><figcaption>Circular edge — Working document</figcaption></figure><figure><img src="mockups/rich__edge_circ__dressup.svg" alt="Circular edge — Dress-up ring" loading="lazy"><figcaption>Circular edge — Dress-up ring</figcaption></figure><figure><img src="mockups/rich__vertex.svg" alt="Vertex — Working document" loading="lazy"><figcaption>Vertex — Working document</figcaption></figure><figure><img src="mockups/rich__vertex__reference.svg" alt="Vertex — Reference ring" loading="lazy"><figcaption>Vertex — Reference ring</figcaption></figure><figure><img src="mockups/rich__body_solid.svg" alt="Solid body — Working document" loading="lazy"><figcaption>Solid body — Working document</figcaption></figure><figure><img src="mockups/rich__body_solid__remove.svg" alt="Solid body — Remove ring" loading="lazy"><figcaption>Solid body — Remove ring</figcaption></figure><figure><img src="mockups/rich__body_solid__dressup.svg" alt="Solid body — Dress-up ring" loading="lazy"><figcaption>Solid body — Dress-up ring</figcaption></figure><figure><img src="mockups/rich__body_solid__repeat.svg" alt="Solid body — Repeat ring" loading="lazy"><figcaption>Solid body — Repeat ring</figcaption></figure><figure><img src="mockups/rich__body_solid__reference.svg" alt="Solid body — Reference ring" loading="lazy"><figcaption>Solid body — Reference ring</figcaption></figure><figure><img src="mockups/rich__body_solid__modify.svg" alt="Solid body — Modify ring" loading="lazy"><figcaption>Solid body — Modify ring</figcaption></figure><figure><img src="mockups/rich__body_sheet.svg" alt="Sheet body — Working document" loading="lazy"><figcaption>Sheet body — Working document</figcaption></figure><figure><img src="mockups/rich__body_sheet__modify.svg" alt="Sheet body — Modify ring" loading="lazy"><figcaption>Sheet body — Modify ring</figcaption></figure><figure><img src="mockups/rich__bodies_2.svg" alt="Two bodies — Working document" loading="lazy"><figcaption>Two bodies — Working document</figcaption></figure><figure><img src="mockups/rich__bodies_2__reference.svg" alt="Two bodies — Reference ring" loading="lazy"><figcaption>Two bodies — Reference ring</figcaption></figure><figure><img src="mockups/rich__datum_plane.svg" alt="Datum plane — Working document" loading="lazy"><figcaption>Datum plane — Working document</figcaption></figure><figure><img src="mockups/rich__datum_plane__remove.svg" alt="Datum plane — Remove ring" loading="lazy"><figcaption>Datum plane — Remove ring</figcaption></figure><figure><img src="mockups/rich__datum_plane__reference.svg" alt="Datum plane — Reference ring" loading="lazy"><figcaption>Datum plane — Reference ring</figcaption></figure><figure><img src="mockups/rich__datum_plane__modify.svg" alt="Datum plane — Modify ring" loading="lazy"><figcaption>Datum plane — Modify ring</figcaption></figure><figure><img src="mockups/rich__datum_axis.svg" alt="Datum axis — Working document" loading="lazy"><figcaption>Datum axis — Working document</figcaption></figure><figure><img src="mockups/rich__datum_axis__modify.svg" alt="Datum axis — Modify ring" loading="lazy"><figcaption>Datum axis — Modify ring</figcaption></figure><figure><img src="mockups/rich__coordsys.svg" alt="Coordinate system — Working document" loading="lazy"><figcaption>Coordinate system — Working document</figcaption></figure><figure><img src="mockups/rich__coordsys__modify.svg" alt="Coordinate system — Modify ring" loading="lazy"><figcaption>Coordinate system — Modify ring</figcaption></figure><figure><img src="mockups/rich__art.svg" alt="Text / imported art — Working document" loading="lazy"><figcaption>Text / imported art — Working document</figcaption></figure><figure><img src="mockups/rich__art__modify.svg" alt="Text / imported art — Modify ring" loading="lazy"><figcaption>Text / imported art — Modify ring</figcaption></figure><figure><img src="mockups/rich__sk_loop.svg" alt="Closed sketch loop — Working document" loading="lazy"><figcaption>Closed sketch loop — Working document</figcaption></figure><figure><img src="mockups/rich__sk_loop__add.svg" alt="Closed sketch loop — Add material ring" loading="lazy"><figcaption>Closed sketch loop — Add material ring</figcaption></figure><figure><img src="mockups/rich__sk_loop__modify.svg" alt="Closed sketch loop — Modify ring" loading="lazy"><figcaption>Closed sketch loop — Modify ring</figcaption></figure><figure><img src="mockups/rich__sk_none.svg" alt="Sketch, nothing picked — Working document" loading="lazy"><figcaption>Sketch, nothing picked — Working document</figcaption></figure><figure><img src="mockups/rich__sk_none__create.svg" alt="Sketch, nothing picked — Create ring" loading="lazy"><figcaption>Sketch, nothing picked — Create ring</figcaption></figure><figure><img src="mockups/rich__sk_none__reference.svg" alt="Sketch, nothing picked — Reference ring" loading="lazy"><figcaption>Sketch, nothing picked — Reference ring</figcaption></figure><figure><img src="mockups/rich__sk_line.svg" alt="Sketch line — Working document" loading="lazy"><figcaption>Sketch line — Working document</figcaption></figure><figure><img src="mockups/rich__sk_line__create.svg" alt="Sketch line — Create ring" loading="lazy"><figcaption>Sketch line — Create ring</figcaption></figure><figure><img src="mockups/rich__sk_line__dressup.svg" alt="Sketch line — Dress-up ring" loading="lazy"><figcaption>Sketch line — Dress-up ring</figcaption></figure><figure><img src="mockups/rich__sk_line__reference.svg" alt="Sketch line — Reference ring" loading="lazy"><figcaption>Sketch line — Reference ring</figcaption></figure><figure><img src="mockups/rich__sk_line__modify.svg" alt="Sketch line — Modify ring" loading="lazy"><figcaption>Sketch line — Modify ring</figcaption></figure><figure><img src="mockups/rich__sk_arc.svg" alt="Sketch arc or circle — Working document" loading="lazy"><figcaption>Sketch arc or circle — Working document</figcaption></figure><figure><img src="mockups/rich__sk_arc__create.svg" alt="Sketch arc or circle — Create ring" loading="lazy"><figcaption>Sketch arc or circle — Create ring</figcaption></figure><figure><img src="mockups/rich__sk_arc__reference.svg" alt="Sketch arc or circle — Reference ring" loading="lazy"><figcaption>Sketch arc or circle — Reference ring</figcaption></figure><figure><img src="mockups/rich__sk_arc__modify.svg" alt="Sketch arc or circle — Modify ring" loading="lazy"><figcaption>Sketch arc or circle — Modify ring</figcaption></figure><figure><img src="mockups/rich__sk_point.svg" alt="Sketch point — Working document" loading="lazy"><figcaption>Sketch point — Working document</figcaption></figure><figure><img src="mockups/rich__sk_point__create.svg" alt="Sketch point — Create ring" loading="lazy"><figcaption>Sketch point — Create ring</figcaption></figure><figure><img src="mockups/rich__sk_point__reference.svg" alt="Sketch point — Reference ring" loading="lazy"><figcaption>Sketch point — Reference ring</figcaption></figure><figure><img src="mockups/rich__sk_2ent.svg" alt="Two sketch entities — Working document" loading="lazy"><figcaption>Two sketch entities — Working document</figcaption></figure><figure><img src="mockups/rich__sk_2ent__create.svg" alt="Two sketch entities — Create ring" loading="lazy"><figcaption>Two sketch entities — Create ring</figcaption></figure><figure><img src="mockups/rich__sk_2ent__dressup.svg" alt="Two sketch entities — Dress-up ring" loading="lazy"><figcaption>Two sketch entities — Dress-up ring</figcaption></figure><figure><img src="mockups/rich__sk_2ent__reference.svg" alt="Two sketch entities — Reference ring" loading="lazy"><figcaption>Two sketch entities — Reference ring</figcaption></figure><figure><img src="mockups/rich__sk_2ent__modify.svg" alt="Two sketch entities — Modify ring" loading="lazy"><figcaption>Two sketch entities — Modify ring</figcaption></figure><figure><img src="mockups/fresh__none.svg" alt="Nothing selected — Fresh document" loading="lazy"><figcaption>Nothing selected — Fresh document</figcaption></figure><figure><img src="mockups/fresh__none__reference.svg" alt="Nothing selected — Reference ring" loading="lazy"><figcaption>Nothing selected — Reference ring</figcaption></figure><figure><img src="mockups/fresh__face_planar.svg" alt="Planar face — Fresh document" loading="lazy"><figcaption>Planar face — Fresh document</figcaption></figure><figure><img src="mockups/fresh__face_planar__reference.svg" alt="Planar face — Reference ring" loading="lazy"><figcaption>Planar face — Reference ring</figcaption></figure><figure><img src="mockups/fresh__face_cyl.svg" alt="Cylindrical face — Fresh document" loading="lazy"><figcaption>Cylindrical face — Fresh document</figcaption></figure><figure><img src="mockups/fresh__face_cyl__reference.svg" alt="Cylindrical face — Reference ring" loading="lazy"><figcaption>Cylindrical face — Reference ring</figcaption></figure><figure><img src="mockups/fresh__face_other.svg" alt="Curved face — Fresh document" loading="lazy"><figcaption>Curved face — Fresh document</figcaption></figure><figure><img src="mockups/fresh__edge_str.svg" alt="Straight edge — Fresh document" loading="lazy"><figcaption>Straight edge — Fresh document</figcaption></figure><figure><img src="mockups/fresh__edge_str__reference.svg" alt="Straight edge — Reference ring" loading="lazy"><figcaption>Straight edge — Reference ring</figcaption></figure><figure><img src="mockups/fresh__edge_circ.svg" alt="Circular edge — Fresh document" loading="lazy"><figcaption>Circular edge — Fresh document</figcaption></figure><figure><img src="mockups/fresh__vertex.svg" alt="Vertex — Fresh document" loading="lazy"><figcaption>Vertex — Fresh document</figcaption></figure><figure><img src="mockups/fresh__vertex__reference.svg" alt="Vertex — Reference ring" loading="lazy"><figcaption>Vertex — Reference ring</figcaption></figure><figure><img src="mockups/fresh__body_solid.svg" alt="Solid body — Fresh document" loading="lazy"><figcaption>Solid body — Fresh document</figcaption></figure><figure><img src="mockups/fresh__body_solid__modify.svg" alt="Solid body — Modify ring" loading="lazy"><figcaption>Solid body — Modify ring</figcaption></figure><figure><img src="mockups/fresh__body_sheet.svg" alt="Sheet body — Fresh document" loading="lazy"><figcaption>Sheet body — Fresh document</figcaption></figure><figure><img src="mockups/fresh__body_sheet__modify.svg" alt="Sheet body — Modify ring" loading="lazy"><figcaption>Sheet body — Modify ring</figcaption></figure><figure><img src="mockups/fresh__bodies_2.svg" alt="Two bodies — Fresh document" loading="lazy"><figcaption>Two bodies — Fresh document</figcaption></figure><figure><img src="mockups/fresh__datum_plane.svg" alt="Datum plane — Fresh document" loading="lazy"><figcaption>Datum plane — Fresh document</figcaption></figure><figure><img src="mockups/fresh__datum_plane__reference.svg" alt="Datum plane — Reference ring" loading="lazy"><figcaption>Datum plane — Reference ring</figcaption></figure><figure><img src="mockups/fresh__datum_plane__modify.svg" alt="Datum plane — Modify ring" loading="lazy"><figcaption>Datum plane — Modify ring</figcaption></figure><figure><img src="mockups/fresh__datum_axis.svg" alt="Datum axis — Fresh document" loading="lazy"><figcaption>Datum axis — Fresh document</figcaption></figure><figure><img src="mockups/fresh__datum_axis__modify.svg" alt="Datum axis — Modify ring" loading="lazy"><figcaption>Datum axis — Modify ring</figcaption></figure><figure><img src="mockups/fresh__coordsys.svg" alt="Coordinate system — Fresh document" loading="lazy"><figcaption>Coordinate system — Fresh document</figcaption></figure><figure><img src="mockups/fresh__coordsys__modify.svg" alt="Coordinate system — Modify ring" loading="lazy"><figcaption>Coordinate system — Modify ring</figcaption></figure><figure><img src="mockups/fresh__art.svg" alt="Text / imported art — Fresh document" loading="lazy"><figcaption>Text / imported art — Fresh document</figcaption></figure><figure><img src="mockups/fresh__art__modify.svg" alt="Text / imported art — Modify ring" loading="lazy"><figcaption>Text / imported art — Modify ring</figcaption></figure><figure><img src="mockups/fresh__sk_loop.svg" alt="Closed sketch loop — Fresh document" loading="lazy"><figcaption>Closed sketch loop — Fresh document</figcaption></figure><figure><img src="mockups/fresh__sk_loop__add.svg" alt="Closed sketch loop — Add material ring" loading="lazy"><figcaption>Closed sketch loop — Add material ring</figcaption></figure><figure><img src="mockups/fresh__sk_loop__modify.svg" alt="Closed sketch loop — Modify ring" loading="lazy"><figcaption>Closed sketch loop — Modify ring</figcaption></figure><figure><img src="mockups/fresh__sk_none.svg" alt="Sketch, nothing picked — Fresh document" loading="lazy"><figcaption>Sketch, nothing picked — Fresh document</figcaption></figure><figure><img src="mockups/fresh__sk_none__create.svg" alt="Sketch, nothing picked — Create ring" loading="lazy"><figcaption>Sketch, nothing picked — Create ring</figcaption></figure><figure><img src="mockups/fresh__sk_none__reference.svg" alt="Sketch, nothing picked — Reference ring" loading="lazy"><figcaption>Sketch, nothing picked — Reference ring</figcaption></figure><figure><img src="mockups/fresh__sk_line.svg" alt="Sketch line — Fresh document" loading="lazy"><figcaption>Sketch line — Fresh document</figcaption></figure><figure><img src="mockups/fresh__sk_line__create.svg" alt="Sketch line — Create ring" loading="lazy"><figcaption>Sketch line — Create ring</figcaption></figure><figure><img src="mockups/fresh__sk_line__dressup.svg" alt="Sketch line — Dress-up ring" loading="lazy"><figcaption>Sketch line — Dress-up ring</figcaption></figure><figure><img src="mockups/fresh__sk_line__reference.svg" alt="Sketch line — Reference ring" loading="lazy"><figcaption>Sketch line — Reference ring</figcaption></figure><figure><img src="mockups/fresh__sk_line__modify.svg" alt="Sketch line — Modify ring" loading="lazy"><figcaption>Sketch line — Modify ring</figcaption></figure><figure><img src="mockups/fresh__sk_arc.svg" alt="Sketch arc or circle — Fresh document" loading="lazy"><figcaption>Sketch arc or circle — Fresh document</figcaption></figure><figure><img src="mockups/fresh__sk_arc__create.svg" alt="Sketch arc or circle — Create ring" loading="lazy"><figcaption>Sketch arc or circle — Create ring</figcaption></figure><figure><img src="mockups/fresh__sk_arc__reference.svg" alt="Sketch arc or circle — Reference ring" loading="lazy"><figcaption>Sketch arc or circle — Reference ring</figcaption></figure><figure><img src="mockups/fresh__sk_arc__modify.svg" alt="Sketch arc or circle — Modify ring" loading="lazy"><figcaption>Sketch arc or circle — Modify ring</figcaption></figure><figure><img src="mockups/fresh__sk_point.svg" alt="Sketch point — Fresh document" loading="lazy"><figcaption>Sketch point — Fresh document</figcaption></figure><figure><img src="mockups/fresh__sk_point__create.svg" alt="Sketch point — Create ring" loading="lazy"><figcaption>Sketch point — Create ring</figcaption></figure><figure><img src="mockups/fresh__sk_point__reference.svg" alt="Sketch point — Reference ring" loading="lazy"><figcaption>Sketch point — Reference ring</figcaption></figure><figure><img src="mockups/fresh__sk_2ent.svg" alt="Two sketch entities — Fresh document" loading="lazy"><figcaption>Two sketch entities — Fresh document</figcaption></figure><figure><img src="mockups/fresh__sk_2ent__create.svg" alt="Two sketch entities — Create ring" loading="lazy"><figcaption>Two sketch entities — Create ring</figcaption></figure><figure><img src="mockups/fresh__sk_2ent__dressup.svg" alt="Two sketch entities — Dress-up ring" loading="lazy"><figcaption>Two sketch entities — Dress-up ring</figcaption></figure><figure><img src="mockups/fresh__sk_2ent__reference.svg" alt="Two sketch entities — Reference ring" loading="lazy"><figcaption>Two sketch entities — Reference ring</figcaption></figure><figure><img src="mockups/fresh__sk_2ent__modify.svg" alt="Two sketch entities — Modify ring" loading="lazy"><figcaption>Two sketch entities — Modify ring</figcaption></figure></div>
</main>