Modify — closed-shape editing tools
The Modify group on the toolbar (between Transform and Boolean) holds three AutoCAD-style editing tools. All three preserve the closed-polygon invariant — they never produce open line-art that would fail GDS export.
Stretch
The Stretch tool has two pickup styles, chosen by what's under the cursor when you click:
- Click on an edge → direct edge-drag. The edge slides perpendicular to its own direction. Cursor motion along the edge is discarded so the edge stays parallel to itself; the two adjacent edges shear automatically to keep the polygon closed. A solid-amber rubber-band marks the edge while you drag, and the hovered edge is highlighted in amber even before you click.
- Click on empty space → marquee a crossing-window rectangle. Every vertex inside the window is marked when you release; marked vertices are painted as amber dots. Click any marked vertex (or anywhere in the canvas) and drag to translate the entire group together — vertices outside the window stay anchored.
For the marquee/crossing-window translate, Ortho (F8) and Polar tracking (F10) apply just like the Move tool — Shift inverts ortho temporarily. Direct edge-drag deliberately ignores ortho/polar because motion is already 1D (perpendicular to the picked edge); adding another constraint on top would conflict.
Snap-to-grid honoured in both styles. Esc cancels.
Undo restores the pre-drag geometry in one step regardless of how many vertices moved.
Match Properties (paintbrush)
Pick a source shape with the first click; every subsequent click applies the source's matchable fields to the clicked target:
- Boundary target ← layer + datatype only.
- Path target ← layer + datatype + width + path-end style.
- Text target ← layer + datatype + text size.
Fields that don't apply to the target's kind are silently skipped (so picking a path as the source and clicking a boundary won't try to copy width). Esc exits paint mode.
Slice
Two clicks define a cut line; every selected closed boundary is partitioned into the two halves on either side of the line. The slice line respects snap-to-grid — both endpoints land on grid intersections when snap is on, and the dashed preview shows exactly where the cut will happen.
You must select at least one boundary first — slicing every shape in the active cell when the user clicks blindly was too dangerous to be the default. The originals are replaced by their halves in one replaceShapes command, so a single Undo restores the pre-slice shape.