# CAD design

Open **Design in CAD** from Start Work. The part tree floats directly over the design area, with Reference, Parameters and Body branches. Once a Pad, Pocket, Revolve, Loft or Sweep uses a sketch or curve, that sketch is nested inside the feature, as in other CAD tools. A later feature that reuses the same sketch shows a linked row instead of a second copy. Selecting a nested sketch opens the features that contain it. The selected contour has its own highlight; the parent sketch shows editing context. Selection in the tree and viewport stays correlated. Nothing is uploaded to a modelling service.

## Saved projects and browser links

**Save** stores the part in the selected browser cache or workbench folder. Return to the dashboard to find it alongside path projects and machine programs. **Filter**, beside Search, holds project state, source and sorting. Rename and download actions use the saved version; download produces a portable `.cad.json` document. Archiving retains the exact original, and Restore refuses to overwrite an existing part with the same identity.

The part URL ends in `/cad/<projectId>`. It supports refresh and browser Back/Forward. `/cad` resumes the current draft; `/editor/<projectId>` opens a saved CAM project. Settings sections have URLs such as `/settings/cad`. Links identify local projects in the selected storage, so another device needs the portable document or workbench backup too. Missing files show a recovery page without replacing stored data. Navigation protects unsaved changes and unfinished commands.

**Sketch** is the first modeling command. The XY, XZ and YZ planes stay visible in the design area, and pointing at a plane highlights it in both the tree and the design area. Pick the plane first or choose Sketch first; both give the same sketch. Select an XY, XZ or YZ row in Reference, or a plane patch, label or active datum plane in the tree or design area, then choose Sketch to start drawing there. With no plane selected, Sketch also shows datum planes in the design area: click a plane patch or its label, or its tree row. Choosing the plane creates one undoable empty sketch and opens it for drawing. Escape or Cancel while choosing a plane leaves the document unchanged. Selection alone never creates geometry. Double-click a sketch in the tree to edit it again.

The contextual tool dock sits at the bottom. Configuration floats at the bottom right, so changing selection does not resize or recenter the canvas. Minimize it to keep the part visible. Finish sketch is the checkmark at the end of the thin bar across the top of the sketch, and returns to the 3D view exactly as you left it. Click **View** below the dock to reveal view, grid and selection controls, or sketch grid, snapping and 3D background controls. The commands move up as that drawer opens; the canvas and camera stay in place. Escape from a drawer control closes it and returns focus to View. The transparent tree scrolls independently; empty space around its rows remains part of the canvas. Explicit Fit uses the space around the current tree, configuration and dock, and in a sketch the bar across its top.

Normal solid views smooth lighting across joins below a 10° display crease and omit their seam lines. Sharp corners and open or unmatched edges remain outlined. **View → Edge** shows every native edge for precise selection; hover and selection highlights retain the original topology. This presentation does not change coordinates, modeling tolerance, measurements, saved parts or exported geometry. In particular, a smooth-looking generated gear still exports its tolerance-controlled chords.

New line chains, arcs, rectangles, circles and slots have individually selectable points and edges. Drag a point or use arrow keys to request movement through its existing dimensions and relations. Shift-click or Shift+Enter/Space toggles a selection. Drag a point or edge to move it. A free edge moves as it is; an edge joined to other geometry slides along its normal. Dragging any member of a larger selection moves the whole set, while a plain click on a member narrows the selection to it. Move selection still offers exact ΔX/ΔY. A box dragged left to right is a window, drawn solid, and takes only geometry wholly inside it; a box dragged right to left is a crossing, drawn dashed, and also takes what it touches. **Filter** in **View** chooses what clicks, boxes and Select other take: **Points**, **Edges**, **Axes**, **Relations** and **Dimensions**. The part view shares this filter, and it is remembered in this browser. The sketch origin and its H and V axes select like geometry. The axes are thin lines through the origin across the whole view; click one anywhere along it, or focus it and press Enter/Space. The click selects on release, so a drag that starts on an axis or the origin still draws a box or moves a grip or profile. Geometry lying on an axis keeps its own pick, and the origin wins where the axes cross. Shift toggles them with other geometry and Escape clears them. Boxes select only sketch geometry; a Shift box keeps the selected origin and axes. The filter counts the origin as a point; the axes have their own kind. Right-click overlapping geometry, or press Shift+F10 on a focused target, to inspect and choose its exact point or edge.

Double-click an edge to select its contour: the edges joined end to end with it, as a double-click selects a chain in SOLIDWORKS and CATIA. Alt+double-click selects its tangent chain instead: the edges that continue it without a corner, within the same angle tolerance as a Tangent relation. Shift adds the chain to the selection. The right-click menu offers the same as **Select contour** and **Select tangent chain**. A contour stops where three or more edges meet rather than choose a branch. A tangent chain counts only the edges that continue it smoothly, as SOLIDWORKS Select Tangency does: an edge leaving at a corner neither stops it nor joins it, and it stops only where two or more edges continue it smoothly. When it grows past the edge you picked or stops at a fork, the status line says how many edges it holds, whether it is closed and how many forks it stopped at. Construction edges join only a chain that starts on one, and the origin and the axes never join. Where several targets lie under the pointer, press N to select the next one, points first with the origin among them, then edges, then the axes, and Shift+N to go back; **Select other** in the right-click menu does the same. Keyboard focus moves to each choice, so the next key acts on it.

Right-click a point or curve, or use its keyboard context menu, for **Dimension** and **Move selection**. **Dimension** starts the Dimension tool with that target already picked; **Move selection** opens its editor, which also opens from the dock. A target already in the selection keeps that set; an outside target uses its own scope. Linked geometry can anchor an eligible point-pair or line-angle dimension; moving the linked geometry itself still requires Detach.

Select a point, edge or two points to read their calculated local measurements without adding constraints. Point-pair offsets follow the displayed From → To order; arc sweep retains its direction. These readouts pause during an edit and return after Apply or Cancel. The sketch's relations and dimensions are listed under **Relations**, beneath the sketch in the feature tree. The heading shows how many there are and starts closed; click it to open the list, which then stays open for the sketches you open next until you close it. **Show in relations list** on a mark, a double-click or Enter on a mark, **Constraints and dimensions** on geometry, and a constraint issue whose relation has no mark open the list at that relation. Each row shows the relation's name, the geometry it holds, its value and any state, such as **Conflict** or **Redundant**. Hovering a row highlights its geometry and clicking it selects the relation's mark or dimension, or the row itself for a relation the canvas does not draw, for example while **Show relations** is off. Shift-click adds or removes a row: selected rows, marks and dimensions are one selection, which Shift extends from any of them. Delete or Backspace on a selected row removes the whole selection in one undo step, the same as Delete on the canvas, and on a row that is not selected removes only its relation; a double-click or Enter opens a dimension's value editor, and the menu key or Shift+F10 opens its menu. When the relation of the focused row goes, focus moves to the nearest remaining row, or to the heading when no row is left. Arrow keys, Home and End move through the rows, and long lists scroll without slowing the sketch. Right-click geometry and choose **Constraints and dimensions** to list only the relations that hold it; **Only the selection** turns that filter off and on.

While a sketch is open, a thin bar across the top of the view shows its name and status, such as **Under defined · 2 DOF** or **Fully defined**, a count of constraint issues, the **Show dimensions** and **Show relations** toggles, **Finish** and, for a sketch a solid uses, **Cancel sketch edits**. Click the issue count to list the conflicting, redundant or unmet relations and the curves a Symmetric solve shrank; select an issue to highlight the geometry involved. When the sketch solver itself fails, for example because the browser could not start it, it could not be loaded after the app was updated or the network dropped, or it stopped with an unexpected error, the count shows one issue whose message names that cause and the next step, with the browser's or the solver's own words under a closed **Kernel message** disclosure when it gave any. Edit the sketch again, or use **Retry analysis** in the **Sketch freedom** help, to restart the solver; when it could not be loaded, reload the page. Status messages show at the top right while the bar is there, so they never cover it. Fit keeps the sketch below the bar. The bar is see-through, and only its controls take the pointer, so a dimension or mark that you pan under it stays visible and can still be clicked; the bar turns solid while the pointer is over it or one of its controls has focus.

In **Select**, selecting points and edges shows a row of relation icons beside the selection, with **Dimension the selection** at its end. The row is placed clear of the selected points and edges and, where it can, of dimension labels, marks, the bar and the panels. When there is no room for it beside the selection, it stays hidden and the status line says so. **Constrain** in the tool dock always lists the same relations under **For the selection**, with the same names, states and reasons, above the tools you choose before picking: choose one to add it, or a checked one to remove the relations it names. Right-clicking the selection lists those that can apply, and **Dimension** in the tool dock offers them too. Each icon is a relation those picks can take, named on hover and to screen readers: press it to add the relation, and press an icon shown pressed to remove the relations it names. **Fix** holds points, each where it is now, so select the points to hold. An icon that cannot apply is disabled and says why. Arrow keys, Home and End move between the usable icons and Escape returns to the canvas. The row hides while you draw or drag. While the edit an icon made is checked, the row stays where it is and ignores presses, and the icon you pressed keeps keyboard focus; if that icon goes, focus moves to the nearest icon left, or back to the canvas when the row closes. The sketch checks each relation when you press it and refuses one that conflicts with the others: nothing changes, and the bar counts the conflict.

Choose **Dimension** (D) and pick the geometry. The dimension the picks would place follows the pointer, drawn thin with the value the sketch measures now: a line shows its length, an arc its radius and a circle its diameter. One line always places its length, wherever the pointer is; right-click for its **Horizontal distance** or **Vertical distance**. A second pick changes it: two parallel lines take the distance between them, other line pairs an angle, a point and a line a point to line distance, and two points their distance. For two points, where the pointer is chooses the type. To the left or right of both points gives **Vertical distance**, above or below both gives **Horizontal distance**, and anywhere else, between or diagonally beyond them, gives **Aligned distance**. A pair that is already level or upright always gives Aligned distance, since its other distance would repeat it or measure nothing. The preview follows the pointer: a distance runs its dimension line through it, an angle draws its arc at the pointer's distance, and a radius or diameter puts its value at the pointer, inside or outside the curve; with the pointer on the center, its leader keeps its usual direction. A point to line distance slides its dimension line along the line to the pointer. Click empty space or press Enter to place a driving dimension at the measured value, so nothing moves. It is placed exactly where the preview drew it, and it stays there; before the pointer has been over the sketch, Enter places it in its usual position; picking the same line or curve again places its own size. Enter places wherever focus is in the sketch, also on the geometry you picked last, while the dimension editor, menus and the snap chooser keep their own Enter. Each placement is one undo step. Dimension stays active with nothing picked, the new dimension becomes the selection and focus moves to the sketch, as after a click on empty space: press Enter or double-click it to open its editor and type the value. Geometry that already has that dimension is not dimensioned twice; placing selects the existing one and moves it to where the preview drew it, as one undo step. When that dimension needs a relation to keep measuring the picks, such as Horizontal for a line whose one end is held from an axis, or Parallel for a distance to one end of the other line, placing adds only that relation, as one undo step, and selects the dimension, which moves in the same step. When one click places several dimensions, such as both coordinates of a point, one whose value would cover another's moves out from the geometry until they are clear, as the preview shows. The status line names the next step.

While the preview shows, right-click, or press the menu key or Shift+F10, for **Place as reference**, the other dimension types the picks take, and the relations that fit them, such as **Parallel** or **Horizontal**. A relation applies at once and leaves Dimension active with nothing picked. Commands that do not apply stay in the menu, disabled, with their reason. When a driving dimension would over-define the sketch, Dimension places a reference instead, and the status line reads "Placed as a reference: a driving dimension would over-define the sketch." This is decided when you place, never while the pointer moves. A dimension with no reference form, such as a horizontal or vertical distance, an angle or a distance from the origin or an axis, is refused in the solver's own words and the picks stay. A relation the dimension adds for you, such as Parallel with the distance between two lines, is left out when the sketch already holds it. A zero distance, such as a point lying on a line or two separate points at one position, has no driving dimension, so a click gives the reason; **Place as reference** in the menu still places its reference, which reads 0. Escape drops the picks; with nothing picked, Escape returns to Select. Escape, Enter and Delete work the same with focus on picked geometry, and Delete removes the selected dimension, never geometry. Tab moves only among geometry that can still be picked. Escape while a placement is still being checked stops it and keeps the picks. If another edit changes the sketch before a placement is accepted, nothing is placed and the status line asks you to pick the geometry again. Where a dimension is drawn is saved with the sketch, relative to the geometry it measures, so it follows that geometry when the geometry moves, resizes or is solved again, and an edit that reverses a line keeps the dimensions placed along it where they were. **Swap location** is not offered yet.

Dimension also starts from a selection: select one or two points or edges, or geometry with the origin or an axis, then choose Dimension or press D, or right-click the geometry and choose **Dimension**. To place a point from the sketch origin or an axis, pick the point and then the origin or axis, in either order; an arc or circle places its center the same way. The H axis gives Y and the V axis gives X. An axis is a line, so that coordinate is a plain **Distance** from it: it is drawn square to the axis, labelled with its size on either side, and it behaves like any other dimension, with hover, selection, double-click or Enter to edit, Delete and its menu. Its editor shows the size and keeps the side of the axis the point is on; a negative value moves the point across. **Make reference** stays unavailable for it, with its reason. A point or a line lying on the axis has no distance from it; use Coincident to keep it there. The origin is a point, so a point and the origin take a **Distance** between them, or, by where the pointer is as for two points, a horizontal or vertical distance, which holds the point's X or Y. A coordinate the point already keeps is selected rather than added again, also one that follows a parameter while that parameter is 0. A point at the origin has no distance from it, and a point on an axis has none along that axis; the status line says why, and Coincident keeps it there. A line and an axis it runs along, picked in either order, keep the line's distance from that axis and hold it level or upright with it; the distance is drawn to the middle of the line. If one end already holds its distance from that axis, Dimension keeps that hold and adds only Horizontal or Vertical. A line across the axis has no distance from it; it can still be picked, so Dimension says why. A line across an axis takes its angle to that axis as to any other line, and a line takes its distance from the origin as from any point. Fixed and linked points can anchor a free partner. A linked edge pairs with other picks but takes no size of its own, and generated pattern edges cannot be picked. A generated shape's points and edges anchor free geometry the same way. Picks that only a shape makes, alone or with the origin or an axis, take a reference dimension but no driving one, because the shape's inputs set that size; the status line names the shape. The dock's dimension editor still edits placed dimensions. To hold one coordinate of a point, dimension the point from the H or V axis; a coordinate fixed away from 0 is a Distance from its axis and is drawn as one. **Fix** in **Constrain** keeps the point where it is as one fixed point. A coordinate that follows an expression already stays where it is, and one that a coordinate fix already holds keeps that fix, so Fix then holds only the other coordinate, as a distance from its axis. Coincident points stay together as a shared joint; merely placing two points at equal coordinates does not join them. Select two lines with Shift to add **Parallel** or **Perpendicular**. The **Constrain** tools also accept the sketch origin and axes, which highlight when they can be picked: Coincident with the origin fixes both coordinates at 0, and with an axis fixes the other coordinate. Coincident with a line and an axis keeps both line ends on that axis; an end that a fixed point, a fixed coordinate or a coordinate expression that is 0 whatever the parameters are already holds on the axis counts, also through a point joined to it, so only the other end is constrained. A linked reference lying on the axis does not count, because its source sketch can move it: an end that follows one there, directly, through a joined point, on its line or at the middle of a line whose ends follow it, asks you to detach the reference first. A line already level or plumb along the axis needs only one end. That includes a line kept level through joined endpoints or through relations without values: Horizontal, Vertical, Parallel, Perpendicular or Collinear with such a line. An end, or a point placed at the origin, that those relations keep on the axis counts as held too: through Horizontal or Vertical with a point held there, a point on or at the middle of a line lying on the axis, a line collinear with one, or a symmetric partner. Dimensions never count, even when they hold the point there now, because a later edit could move it away. Such a repeat is rejected as redundant and nothing changes, for example for a point on a fixed circle that passes through the origin. An end whose coordinate an expression or a dimension keeps away from the axis blocks the constraint with a note. A line parallel to a linked reference lying on the axis is not counted as level either. Coincident with an arc or circle and an axis keeps its center on that axis. Horizontal or Vertical with a point and the origin levels it with the origin. Parallel or Perpendicular with an axis makes the line horizontal or vertical. Horizontal and Vertical, and Parallel or Perpendicular with an axis, explain a line or point pair that such relations already keep level or plumb instead of repeating it. Concentric with an arc or circle and the origin fixes its center at the origin. Midpoint with the origin and a line keeps the line centred on the origin, and Coincident with the origin and an arc or circle keeps the origin on its full circle. Symmetric takes the H or V axis as its line. Tangent with an arc or circle and an axis keeps the curve touching the axis on the side it is on. Select the origin or an axis with geometry and open **Constrain** to see the constraints that fit, by the icon row's names: with a line and an axis, **Collinear** lays the line on the axis. An axis has no length, ends or middle, and the origin and axes are fixed already, so Equal length, Tangent with a line, Midpoint on an axis, Fix, and Horizontal or Vertical with a line and an axis are listed as unavailable with that reason. The origin and the axes alone offer no constraint. The relation list names a coordinate held at 0 **Coincident with the H axis** or **Coincident with the V axis**, one row for each coordinate, and inspecting one highlights its axis. A point fixed at 0, 0 is an ordinary **Fixed point**. A value that follows a parameter is a **Distance** even while the parameter is 0, because it is a dimension rather than a place on the axis; while it is 0 it draws as it would a hair off the axis: a short leader from the point along the axis, with its label beside it. Any other fixed coordinate is a **Distance** from its axis. A sketch saved with both coordinates of a point fixed one by one shows two distances, one from each axis; it is not rewritten. Construction lines can supply a reference, and the lines may share an endpoint or be separate. Parallel accepts opposite directions; Perpendicular keeps a right angle. Neither fixes their length or connects endpoints. Remove an opposite relation deliberately before adding the new one. A circle's radius uses the same numeric/**fx** editor. Driving and saved reference dimensions appear on the canvas whatever their value. One that measures 0, such as a distance a parameter takes to 0 or a reference to a point on its line, draws without arrows, with its label where it would be a hair long, so the label stays put as the value passes through 0. A distance between two points takes its direction from one point to the other, so its placement turns over to the other side as the points pass each other. An angle draws its arc about the corner where its lines meet; when that corner lies far beyond the sketch, or the lines are a hair from parallel, it draws across the ends of its lines instead, a leader from one line to the other with its label between them. Placing Angle again on such lines selects the angle they have. Selection, Enter or a double-click to edit, and Delete on the canvas act only on the dimensions the canvas draws; the relation list edits every one. Reference annotations measure geometry without constraining it. Editing a driving value retains a shared parameter link; **fx** explicitly changes or releases that link. Preview stays provisional until Apply. A value the sketch refuses keeps the editor open with the pending value and the reason. Cancel restores the original.

The sketch heading reads **Fully defined**, **Under defined · N DOF** or **Definition unknown** for the whole point/edge sketch. It shows **Editing…** while an edit is open and **Checking freedom…** until the analysis of the version on screen arrives. Points, lines, arcs and circles that dimensions, relations and expressions fully define turn green; under-defined geometry, and geometry the analysis cannot classify, keeps the usual blue grey. Construction geometry keeps its dashes in a lighter shade of the same colour, and selection, hover, focus, relation and pick highlights still draw over it. When the solver rejects a preview, an Apply or the sketch itself, every point and edge a conflicting relation holds turns red and every one a redundant relation holds turns purple, including those past the rows the feedback lists; the marks last until the preview changes or ends. A fully defined point refuses dragging and arrow keys, and so does the radius grip of a fully defined circle: change a dimension or relation instead. Only the analysis of the version on screen locks anything. After an edit, Undo, Redo or a parameter change the colours stay until the new answer arrives, but nothing is locked meanwhile. Older profile groups, the origin and the axes keep their own colours. **Sketch colours** beside the heading summarizes the legend.

Click a dimension on the canvas to select it. A click only selects: the dimension turns the selection colour, which it keeps while the pointer is over it or it has keyboard focus, the points, lines or curves it measures stay highlighted and the status line names it. Double-click it, or press Enter on it, to open its editor; Space selects it from the keyboard. Opening the editor, also from **Edit value…**, keeps that dimension selected and leaves the geometry unselected, so Delete removes the dimension, never the line or curve it measures, while the editor is open and after Apply or Cancel. The editor selects only the dimension it edits, even when it opens on one of several selected dimensions. In the relations list under the sketch, clicking a dimension's row makes that dimension the selection, so moving from a length to an angle moves the selection to the angle, and a double-click or Enter opens its value editor at the dimension. The editor opens with its value selected, ready for typing. Escape restores a changed value and keeps it selected; Escape with nothing changed, Cancel or Apply closes the editor and returns focus to the dimension, or to the canvas, so the canvas keys work at once. A dimension placed from a point's or curve's **Dimension** menu, or with **Dimension the selection**, becomes the selection in the same way, and the geometry is no longer selected. The editor closes when geometry, the origin or an axis, a profile or another dimension takes the selection, or when another part opens. Shift-click adds or removes a dimension and Escape clears the selection. Selecting geometry, the origin or an axis replaces a dimension selection, and selecting a dimension clears them, so selection-first constraints work as before. Hovering a dimension, or a row in the relations or constraint issues list, highlights the same geometry, including the origin or axis that a coordinate is measured from. Delete or Backspace removes the selected dimensions as one undo step and leaves the geometry in place; if the sketch refuses the removal, the dimensions stay and the status line says why. Keyboard focus never changes the selection, so Tab moves through dimensions, points and edges without closing an open editor. Delete or Backspace on a focused dimension, and Delete on a focused point or edge, act on the selection, so what is drawn selected is what goes; the focused item is removed only while nothing is selected. With the origin or an axis selected, Delete on a focused label removes nothing. Backspace removes only dimensions, so selected geometry stays. Right-click a dimension, or use the menu key or Shift+F10, for **Edit value…**, **Make reference** or **Make driving**, **Reset position** and **Delete**. Right-clicking an unselected dimension selects it first. Commands that do not apply stay in the menu and explain why: a reference dimension follows the geometry until you make it driving, angles and horizontal or vertical offsets cannot become references, a fillet or chamfer size belongs to its corner, and **Make driving** waits while the sketch is fully defined. Reference values show in parentheses in a dimmer colour. A selection and an open menu belong to the dimension they were made on. Changing its value, or making it a reference or driving, keeps it selected, also when the dimension was stored on a point that a **Coincident** relation joins to the point it measures. The sketch as it is after the change decides: when the same edit, or an undo or redo, also removes or adds that Coincident relation, the dimension stays selected only if it still measures the same points. When the sketch changes while a menu is open, or the edit is cancelled, the menu closes without running a command. A dimension removed by undo, redo or an agent edit, or replaced by a different measurement under the same name, comes back unselected. Keyboard focus follows the same rule: focus does not pass to a replacement, and a menu or editor that closes does not return focus to it. A reference to a line's length stays selected when Trim or Extend moves an end of that line. A point to line distance, including one measured from an arc or circle center, selects, edits and highlights its point and line like the other dimensions, and stays selected through **Make reference** and **Make driving**.

Drag a dimension's value to move it in Select. A distance's value moves along its dimension line and away from the geometry, and an angle's along its arc and away from the corner. Text taken past an extension line, or past the end of an angle's arc, extends the line or arc to reach it, and the arrows stay where they were. A radius or diameter's value turns its leader about the center and sets its distance from the center, inside or outside the curve. Drag the dimension line or an angle's arc itself to move only the line or arc: a distance's line moves away from the geometry, a point to line distance's line slides along its line, and the text keeps its place along it. Each chamfer setback moves on its own, and a dimension at 0 moves along and away from its line like any other. A press that moves no more than a few pixels is a click, so clicking, double-clicking and Delete work as before. While you drag, only that dimension is drawn again and nothing is solved. The release moves it as one undo step and selects it; the step changes no geometry and no output. Escape during the drag, or a lost pointer, puts the dimension back. **Reset position** in the dimension menu returns a moved dimension to its usual position as one undo step; with several moved dimensions selected it reads **Reset N positions** and resets them all. **Make reference** and **Make driving** keep where a dimension is drawn. A dimension whose saved position no longer fits it, for example after an agent edit changed what it measures, takes its usual position.

Each sketch relation also shows on the canvas as a small mark in the dimension colour, drawn as the same symbol that the **Constrain** menu and the relations list show beside it. Horizontal or Vertical between a line's own ends sits beside the middle of that line, toward the inside of the sketch; between points of different edges it marks each point. Parallel, Perpendicular, Collinear and Equal length mark each line, Equal radius marks the arc or circle, at the top of a circle or the middle of an arc, Point on curve marks its point and the arc or circle, and Coincident, Midpoint, Point on line and a fixed point mark their point. Symmetric marks both points or both curves, and the line they mirror about unless it is an axis, and Tangent marks the joint. A point that **Fix** holds shows the Fixed mark. A point kept on the H or V axis shows the Coincident mark, after the Constrain tool that puts it there, read for example as **Coincident: Point 2 and H axis**, and a point kept on both shows one Coincident mark with the origin, **Coincident: Point 1 and Origin**, while the relations list keeps a row for each. A coordinate held away from 0, or one that follows a parameter, is a Distance dimension and draws as one, with no mark; a point with one coordinate on an axis and the other away from it shows the on-axis mark and the Distance. Points that Coincident joins count as one point: their marks sit side by side in one place, a point kept on the H axis joined to one kept on the V axis shows one Coincident mark with the origin, and Horizontal or Vertical between points joined to a line's ends marks that line. A Coincident relation between two arc or circle centers reads Concentric on the canvas, in the relations list and in constraint issues. Several marks on one line or point sit side by side. Dimensions keep their labels, and linear patterns and linked references keep their own controls, so they draw no mark. Marks lie beneath the sketch and its dimensions: where a mark covers a point, an edge, a dimension line or label, the origin, an axis, a profile grip or a profile edge, that geometry or dimension keeps the hover, click, double-click, right-click and drag. In **Select**, hovering a mark highlights the geometry its relation holds and the relation's other marks; hovering a row in the relations or constraint issues list, or selecting geometry, highlights the marks of its relations. Click a mark to select its relation, Shift-click to add or remove it and Escape to clear. Marks and dimensions share one selection, which replaces the geometry selection, and the status line names it, for example **Parallel selected · Delete removes**. Delete or Backspace removes the selected relations and dimensions in one undo step and keeps the geometry; if the sketch refuses the removal, the selection stays and the status line says why. Double-click a mark, or press Enter on it, to select its row in the relations list under the sketch. Right-click a mark, or use the menu key or Shift+F10, for **Show in relations list** and **Delete**. Tab reaches the marks in **Select**, and each reads its relation and what it holds, for example **Parallel: Line 3 and Line 5**. Keyboard focus never selects a mark: Delete on a focused mark removes the selection, and the mark's relations only while nothing is selected. With a drawing tool, during a Line chain, or while a command picks geometry, marks take no pointer or keyboard focus. A sketch with more than 200 marks shows only the selected marks, the marks on selected geometry and the marks you point at. In **Select**, rest the pointer for a moment on a point or an edge, or on a row in the relations or constraint issues list, to show the marks of its relations; moving on to something else starts the wait again, so marks do not flash on and off while the pointer crosses the sketch. Selected marks and the marks on selected geometry show at once, and the status line says how many marks the sketch has.

Select one point and one line with Shift to add **Midpoint**. The point stays halfway between that line’s endpoints as its size or position changes. A construction diagonal can keep a bore centered in a plate. Other dimensions and expressions remain in control; the relation does not fix the guide itself. Remove Midpoint to retain the current position and detach it. The point must be distinct from both endpoints. Splitting or extending the guide requires deliberate removal of this relation first. Trimming the guide removes the relation, and the Trim preview names it. Ordinary midpoint snapping still places a numeric coordinate without attachment; arc midpoints and older/generated profiles remain position-only. Older app releases reject the new schema-2 relation.

Select a point and a line for **Point on line**. The point can slide along the line’s infinite support while other constraints stay in force. **Coincident** also works with arcs and circles: choose it and pick a point and an arc or circle, or select both and use **Point on curve** from the icon row or **Constrain**. The point then stays on the curve's full circle, even past an arc's ends, and follows when the curve moves or changes size. The relation list names it **Point on curve**. Select two arcs/circles for **Concentric** to align their centers without adding a size constraint. Select two points and a line or an axis for **Symmetric** to reflect their positions about it; the relation list names it **Symmetric points**. Two lines, two arcs or two circles with a line or an axis, picked in any order, mirror as whole curves, named **Symmetric curves**. With three lines, the one construction line is the mirror, or else the line picked last. Lines pair their ends by where they are, so each may run either way. A mirror reverses an arc's sweep, so arcs drawn the same way pair each start with the other's end, and arcs drawn opposite ways pair start with start and end with end. Mirrored arcs and circles keep one radius. A point and a circle mirror the point and the circle's center, without linking its radius. A line with an arc, or two curves a mirror cannot map, such as two circles on one center or two lines on the same two ends, are refused with the reason. Relations that already hold the mirror, such as Symmetric on each pair of line ends, or on two circles' centers whose radii are fixed alike, show it as applied, and pressing it removes them. The mirror adds only what other relations do not keep already, so two horizontal lines can be made symmetric about the V axis, and Equal or part of the mirror held another way can stay. A free mirror line turns to fit. Of the directions and pairings the lines allow, it starts from the one that moves the sketch least, counter-clockwise when two move it alike, and tries the next where that one cannot solve. Each mirror that solves keeps its start while another tries its next, and the order relations were added in never changes where a mirror starts. Points held by Fix, by their coordinates' expressions, by fixed distances or through Coincident never move: the mirror lies on the perpendicular bisector of a held pair or turns about a held end, and pairs that a point Symmetric already mirrors about the line stay paired. So a horizontal and a vertical line mirror about a free line drawn near upright by turning it to 45° or 135°, and held points that leave the mirror no line are refused as conflicting, naming the relations that hold them. Directions that cannot mirror, such as one line horizontal and the other vertical about the V axis, or circles with different fixed radii, are refused with the reason and the relations to remove. A mirror that other relations already keep whole, such as the last of four circles mirrored in a ring about H and V, is refused as redundant, and a mirror the curves could meet only by shrinking to nothing is refused with the reason. Where a start would leave a mirrored curve less than a hundred-thousandth of its size, the other starts are tried first, so a dimension can still make the curves as small as it asks, directly or in steps, and a mirror whose every start shrinks its curves keeps the start that otherwise solved while other mirrors try theirs. When an edit is accepted with a mirrored curve shrunk that far and no dimension or expression sets its size, a warning toast names the sketch and each curve with its size before and after, for example "Symmetric shrank Line 2 from 16.906 mm to 0.000007 mm. Check the mirror and its relations." With two circles and a line or an axis, **Symmetric centers** beside Symmetric mirrors only the circles' centers, so each radius keeps its own driver.

Select a line and arc that share a declared endpoint joint for **Tangent**. It keeps a smooth contact while their other dimensions change. Equal coordinates alone do not join separate point identities: add Coincident deliberately first. A fillet owns its own contact; use its corner editor. Tangency between separate circles, or two arcs, is outside this command’s current scope.

Horizontal/Vertical distance drives the signed local ΔX/ΔY from **From** to **To**. Positive X is right and positive Y is up; negative values reverse direction. Zero aligns that coordinate without joining the points. These dimensions preserve the separation, so two free points can still move together. Fix the reference point when it must stay located. Reopening a dimension retains its saved From/To roles even if you select the points in reverse. The on-part guides measure the actual horizontal or vertical span; their labels reopen the same driver. Older app versions that do not recognize this schema-2 relation reject documents using it.

Pick a circle or arc with **Dimension** for a driving size. A circle places a Diameter and an arc a Radius; right-click before placing for the other. Either measures the curve as it is, so nothing moves. The on-part `R` or `Ø` annotation opens the same exact driver; its value supports numeric and **fx** editing. Removing the dimension retains the current shape and releases that relation. An existing fillet radius opens its corner driver. Use the **Reference** action for a calculated annotation that follows geometry without constraining it. On a saved driving length, distance, point to line distance or size, Reference replaces the dimension with its reference in one Undo step. **Make driving** opens the normal dimension editor and turns it back. Horizontal and vertical distances have no reference form, so Reference is not offered for them. A circle whose source radius already follows an expression keeps that exact driver; use its **fx** control to edit or release it before adding a separate radial dimension. The same ownership rule rejects an agent's second driver without replacing the original. Other redundant or incompatible relations also reject atomically.

Select two lines with Shift for **Equal length**, or two circles/arcs for **Equal radius**. A line with an arc or circle is refused, because a line has a length and an arc or circle a radius, and curves that Symmetric mirrors are equal already. Construction geometry can supply a reference. Equality links their sizes; position and arc sweep need their own constraints. Dimension one member to control the shared size; two free members still have a size freedom. Existing dimensions remain in force, and incompatible drivers reject without removing them. Removing equality releases that relation while retaining the current geometry.

A selected circle has a separate radius grip on its circumference. Drag it to size a free circle around its existing center, or use arrow keys to increase/decrease radius by one grid step (Shift uses ten). With **Snap to grid** on, the radius catches a grid step only when it comes within a few pixels of one; Ctrl or Cmd temporarily bypasses it. Escape cancels the preview. The center remains a separate point target. Expressions, radial dimensions and equal-radius relations keep control of driven sizes: edit or add their driving dimension instead of dragging through that intent. Only a single selected circle exposes the grip; the Points selection filter keeps it inactive.

Pick two lines that are not parallel with **Dimension**, or select them with Shift and press **Dimension the selection** beside them, to drive their corner in degrees. A shared joint chooses its interior corner regardless of how the edges were drawn. At an ambiguous crossing, choose the highlighted corner in the visual selector. The on-part arc marks that same corner; click its degree label to reopen the existing driver. Numeric edits retain a shared parameter link, and **fx** changes the exact expression. Angles must be greater than 0° and less than 180°; use Parallel for a straight alignment. Remove a direct Parallel/Perpendicular driver explicitly before adding Angle. Changing the angle retains its chosen corner and the other dimensions. Its editor's Preview, Cancel and Apply follow the same rules as length dimensions.

Dimension two parallel lines for the distance between them, as in CATIA, instead of an angle. Pick both lines or select them with Shift. The distance runs from an endpoint of the second line to the first line, and placing it also holds the lines parallel. If Horizontal, Vertical or another relation already keeps them parallel, it adds the distance alone. If the lines already have such a distance, Dimension selects it, and adds Parallel when nothing else keeps the lines parallel. Both changes are one undo step. Lines a hair off parallel, too close for an angle to place its corner, take the distance alone and keep their own directions. Lines that are not parallel still take an angle.

Dimension a point and a line, picked in either order or selected together, for **Point to line distance**. It is measured square to the line's full extension, so the point can lie beyond either end; the canvas then extends the line to the dimension. A line is not offered with its own endpoints. An arc or circle with a line measures from its center, and two arcs or circles take **Center distance** between their centers. A point with an arc or circle offers the point-pair distances to its center. A circle whose radius follows an expression measures from its center the same way; picked first, it waits for its partner, and its size stays with the expression. The point stays on the side of the line where it was when you added the dimension. It stays there when you change the value, change a parameter that moves the point or the line, edit other dimensions, drag it, or undo and redo. The value must be greater than zero; use Coincident for a point on the line. A reference distance reads 0 while its point lies on the line; to add one for a point already on the line, choose **Place as reference** from the Dimension menu. Numeric edits, **fx** expressions, **Reference distance** and **Make driving** work as for other distances.

Select points or edges and choose **Move selection** for an exact translation. Enter ΔX/ΔY in the sketch's local millimeters; preview shows the complete sketch. Each shared point moves once. Moving an edge also changes its incident edges at shared endpoints; outside points stay in place. Existing dimensions and coordinate expressions remain authoritative. A blocked move rejects instead of releasing constraints, resizing the selection or moving unrelated points. Select both identities of a coincident joint to move it together. A fully selected fillet/chamfer also moves its original reference corner. Partial selections retain the remaining support and must satisfy its constraints. Cancel discards the displacement; Apply makes one undoable edit. Ordinary singleton dragging still requests movement through the solver and can adjust connected geometry.

From the unchanged Move editor, choose **Place and rotate…** to position a selected detail by its anchor, target and local angle. Pick those positions in the sketch or enter their coordinates; picking the sketch origin uses exactly 0, 0. Positive rotation is counterclockwise. You can pan and fit while picking. **Rotate at anchor** keeps the anchor stationary. Select every edge that needs to move, including incident edges; unselected geometry is never silently gathered into the detail. Existing expressions and relations remain authoritative, and an incompatible placement rejects without releasing them. Linked references and all pattern-owned geometry, including the original seed, require deliberate Detach before placement.

Select one material circle for **Linear pattern** in sketch mode. Count includes the original; enter a positive pitch, choose local X or Y, and use Reverse to change direction. Click numbered occurrences to omit or restore them. Copies follow the original circle’s size and position; edit the pattern through its owner, or Detach to keep ordinary independent geometry. Through the [agent tools](https://insignifi4nt.github.io/wireedm-gcode-parser/documentation/agents/index.md#sketch-dimensions-and-direct-movement), a pattern can also copy the original circle's reference dimensions onto each copy it adds; its driving dimensions keep driving every copy through the pattern. This sketch tool supports a single circle row, separate from body patterns.

Sketching is free by default: points go where you click, and the grid is a visual reference. Use dimensions and relations to make sizes and positions exact. With **Snap** enabled, drawing and point dragging find nearby endpoints, centers and line/arc midpoints. Reference points stay visible while drawing without intercepting drawing clicks. A square marks an endpoint or point, a cross marks a center and a triangle marks a midpoint. The highlighted reference and short hint explain the target. Hold Ctrl or Cmd to bypass snapping temporarily; the stored setting stays unchanged. A circle has a center, with no artificial endpoint. Arc midpoints follow the actual sweep, including arcs longer than half a circle.

While drawing, Snap also catches the sketch origin, crossings of lines, arcs and circles, and positions along an edge, arc, circle or the H and V axes. A point you rest on offers dashed horizontal and vertical guides, so a later click can line up with it; the guides also come from the shape's own earlier points. Point targets win over positions along a curve, and curves win over guides; where a guide crosses an edge or axis within reach, that crossing is the target. Guides from other points and crossings copy a position only, although a point placed where a guide crosses a line, arc or circle still keeps its point-on-line or point-on-curve relation. The guide from a line's own start is different: with **Create relations** on, a Line segment that ends on it stays **Horizontal** or **Vertical**, and the hint names that relation, for example **Horizontal** or **Point on line · Vertical**. Arcs, arc through-points and the line that closes a chain on its start keep no such relation. Ctrl or Cmd places the end freely. If the sketch already holds the line level or plumb through other relations, the line is added without the repeated relation and a short note says so. Dragging a point uses the same targets, with guides from the far ends of the lines that meet at it. A drag only moves the point; add a relation afterwards if it should stay there. With **Create relations** on, which is the default, a point placed on a line keeps a point-on-line relation, a point placed along an arc or circle keeps a point-on-curve relation on its full circle, and a point on the origin or an axis keeps a fixed coordinate at 0, a Coincident with it; the hint names the relation before you click, for example **Origin · Coincident** or **On V axis · Coincident**. Choose **View → Snap to grid** to make grid nodes catch the pointer within a few pixels; a caught grid node then outranks positions along curves and guides, never a point target.

Drawing also finds positions on older profiles, including slots, rounded rectangles and current plugin output. The hint names the profile and location and says **Position only · No relation**. It copies the current position; later movement or regeneration of that profile does not move the new geometry. This remains true with Create relations enabled. Rounded corners use actual boundary joints rather than imaginary sharp corners. Plugin targets belong to their current generated boundary, whose accuracy follows that plugin's own settings.

When distinct targets tie, **Choose snap target** lists their point and owning geometry. Focus or hover a choice to highlight it, then select the intended target; no point is placed until you choose. Next/Previous candidates reach longer lists. Escape or clicking outside dismisses the choice and retains earlier drawing picks. During a line chain, **Finish**, a double-click outside the list, another tool or **Finish sketch** dismisses it and saves the completed segments. The click that opens the list is not the first click of a double-click, so after Escape a quick click on the same targets opens it again. Each drawn shape gets its own points. While you draw a line chain, arc, rectangle, circle or slot, **Create relations** is on by default. A point snapped to an existing point creates a removable Coincident relation, so the new shape follows when that point moves. Its hint names the source point, and pending attachments stay marked. Clear **Create relations** to copy only the target's position. Line chain points, arc ends, rectangle corners, circle centers and slot arc centers can attach. Arc through-points, circle radius picks, slot width picks and midpoints stay position-only. Turning the option on affects future picks; turning it off releases pending attachments and horizontal or vertical relations and keeps their positions. Accepted relations show as marks on the canvas and as rows in the relations list under the sketch: select a mark or row to remove its relation, and select the geometry again to change its relations with the icons beside it. Ctrl/Cmd suppresses the current pick without releasing earlier attachments.

Dragged points remain position-only. Add Coincident deliberately when they must stay together. Dragging respects existing dimensions: the solved preview shows the position the constraints permit, and a confirmed snap appears only if that preview reaches the target. Equally close distinct targets do not choose an arbitrary identity. Clicking a chain's start closes it on its own starting point, even when an external reference lies there; **Close profile** remains available explicitly. Closing never joins an external point implicitly.

Right-click the interior of a line or open arc for **Split here**. The marker shows the exact projected cut; both pieces remain. The piece with a solid outline keeps the edge's identity on its original start side, and the dashed piece gets a new identity. Overlapping targets first open **Select other**: choose the edge, then right-click it again. Splitting creates a shared point and retains the line's straight support or the arc's common center. The new point can move along that support through the existing constraints. Undo restores the original edge. A keyboard menu has no cut location, so Split and Trim require the pointer.

Relations on the edge's supporting line or circle, such as Parallel, Perpendicular, Tangent, a radius, Equal radius or a point held on the edge, stay with the piece that keeps the edge's identity, because both pieces lie on that support. A Tangent joint stays with the piece that still has its end. Relations on the edge's extent, such as Equal length, Midpoint, a reference length of the line or a **Symmetric curves** relation, would measure only one piece, so they must be deliberately removed or recreated before splitting; Split names them. Existing point dimensions stay attached to their original points. A line's new Parallel relation is inspectable and removable. Native constraint or precision failures reject the complete cut; some fully driven arcs currently reject redundant structural equations. Circles need two deliberate cut locations and are not supported by Split here. Splitting also changes a boundary's identity: an explicitly selected Pad/Pocket area needs deliberate re-selection before Finish.

The same edge menu offers **Trim here**. Focus or hover that action to preview the dashed removed portion, the remaining edge and its cutting boundary. Trim removes the piece between the nearest cuts around the pick: crossings, another edge’s end touching it, and the ends of an edge lying along it. Where several edges meet at one point, Trim cuts once there. A piece with no cut, such as an edge fully covered by another edge, removes the whole edge. Escape dismisses the preview without editing. A cut at an existing endpoint shares that point. A cut inside a cutting line, arc or circle stays on it, so the outline stays closed when that edge moves or changes size later. A tangent touch cannot be cut. Points nothing else uses leave with the removed piece. Construction edges can supply cutting boundaries.

Trim preserves the surviving edge's identity, direction and analytic support. On a surviving line, Parallel/Perpendicular stay in place, and a Horizontal/Vertical relation between that line's endpoints follows its replacement endpoint unless another edge shares those points. Adjacent corner alignment keeps its original points. Relations that only describe the removed piece go with it: those of a removed edge, those on points that leave, Midpoint, Equal length and a reference length on a line that changes length, a **Symmetric curves** relation on the trimmed edge, the tangent joint, fillet or chamfer at a removed end, and a point-on-line or point-on-curve relation whose point becomes the trimmed edge's new end. A point held on a trimmed arc stays on the piece that keeps the arc's identity, and one held on a trimmed circle stays on its surviving arc. The preview names them before you accept. Pattern copies and geometry used from an earlier sketch must be detached first. When editing a consumed sketch, an open result stays private: reconnect it before Finish, then deliberately reselect any changed Pad/Pocket areas. Cancel restores the accepted part, and one global Undo restores the complete finished edit.

On a line, **Trim here** also removes the middle span between the two intersections surrounding the pick. The preview shows both remaining pieces and contacts. The piece at the original start keeps the edge's identity. Both original outside points and their dimensions remain; one **Collinear** relation keeps the two survivors on the same supporting line without fixing their lengths or joining their separated ends. Inspect or deliberately remove that relation through the relations list under the sketch. An Equal length or Midpoint on the line leaves with the removed span; the preview names it. For an open arc, middle Trim keeps two analytic arc survivors with their original center and direction. The original start-side piece keeps its identity, and an ordinary Equal radius relation preserves their common circular support. Original outer-point and center drivers remain. Existing radius/diameter dimensions and Equal radius relations stay on the arc retaining its identity; its new sibling follows through the added equality. Inspect or deliberately remove the new equality through the relations list.

On a free numeric-radius graph circle, right-click the span to remove. Two real crossing contacts bound it; the preview shows that span, the complementary arc and both cut points. The surviving arc keeps the original circle's identity and center. A boundary endpoint shares its exact point; a cut inside a line, arc or circle stays on it. No radius constraint is added. For example, a material chord across a circle can close the retained arc into a D-shaped plate. The center's existing drivers and the circle's radius dimensions remain. A radius expression must be released first. One contact or a tangent touch rejects; a circle with no contacts, or one covered by a duplicate circle, is removed whole. If a consumed area changes, Finish asks you to choose the replacement explicitly. Cancel and Undo retain the original circle and area selection together.

Right-click nearer a line or arc end and focus **Extend start** or **Extend end** to preview its extension to the next finite boundary. With the keyboard, focus the edge and press the context-menu key or Shift+F10 to choose either end explicitly. Start/end refer to the stored edge direction; the preview shows which end will move. The dashed added span and final endpoint show the change before you accept. Escape dismisses it and restores focus. An exact midpoint pointer pick asks you to choose an end; no intersecting boundary means no extension. Lines, arcs and circles can supply boundaries, including construction geometry. An arc keeps its center and direction while growing through its unused circular gap. It may become major, but cannot complete a circle or join its opposite endpoint. The source edge, other geometry and original point values retain their identities. Reaching a boundary endpoint shares that exact point; reaching its interior creates a one-time numeric endpoint with no persistent attachment. Relations follow the same rule as Trim, Split and Mirror copy. Line direction and an angle at the moved end follow the new end. An old end that another edge still uses stays with that edge, together with its relations, fixed coordinates and expressions. Relations Trim would remove with the piece, such as Equal length, Midpoint, a reference length, a corner at the moved end, or drivers on an old end nothing else uses, need explicit release first. Circle source extension, free-location extension, overlaps and tangencies remain unsupported. A tangent or overlap in the searched range can also block an otherwise nearer crossing.

For a corner shared by two ordinary lines, select its point and choose **Sketch corner tools → Fillet** or **Chamfer**. Radius or setbacks drive an exact analytic corner treatment while the original corner remains a dimension reference. Older profile groups retain their shape dimensions, whole-contour Move and rectangle corner tool. Generator profiles, including Spur gear, keep their correlated configuration. Ordinary line–arc Tangent uses the declared-joint workflow above.

Rounded rectangles, plugin shapes such as gears, imported DXF contours and the shapes the agent tools add are generated shapes. Each is one shape whose inputs, numbers or parameter expressions, size and place it; its points, edges and relations are sketch geometry made from those inputs, and they show as defined because nothing else moves them. Free geometry can relate and be dimensioned to them, but they do not move, resize or delete on their own, and a dimension between a shape's own geometry only, or with the origin or an axis, is placed as a reference because the inputs already set that size. Click inside a generated shape, or select one of its edges or points and choose **Edit shape**, to edit its inputs; its grips and a drag from its interior edit them too, each as one undo step. Right-click it for the profile menu: copy, configure, construction and delete. **Detach** keeps its geometry as ordinary lines, arcs and points. When a changed input or parameter would remove relations from geometry the shape no longer has, the editor lists them first: Apply removes them in the same undo step, and Cancel keeps them and the shape. Deleting a shape, from its tree row, its row in the **Relations** list, its right-click menu or the toolbar, or deleting points and edges, takes the relations on them with it. When another shape is made from what you delete, such as a linked offset of its edges, the dialog names that shape first: Delete removes it all in one undo step, and Cancel keeps everything. Shape rows selected in the **Relations** list together with other relations delete as one set, whichever row you selected first. The row menu, the status line and the dialog count every selected row as a shape, dimension or relation, including linked references and rows whose marks are hidden, for example **Delete 1 shape and 1 relation**. A linked reference selected alone reads **Linked reference selected · Delete detaches**. A regular polygon's **Edit shape** sets its centre, radius, number of sides and the line or axis that directs it; it has no grips or profile menu. A circular pattern made through the [agent tools](https://insignifi4nt.github.io/wireedm-gcode-parser/documentation/agents/index.md#sketch-dimensions-and-direct-movement) copies its seed curves about a point or the origin; **Edit shape** sets its count, angle and centre. Its seeds stay ordinary geometry that the copies follow. Deleting a seed names the pattern that goes with it before anything is removed; detach the pattern first to keep its copies. A regular polygon, circular pattern or linked offset is also a row under its sketch in the feature tree: click the row, or choose **Edit shape** from its menu, to open its inputs, even when it draws nothing, such as a circular pattern of count 1. In the sketch's **Relations** list, double-click or press Enter on any generated shape's row, or choose **Edit shape** from its menu, to open its inputs too.

Select one edge of a closed outline, several edges of the same outline, a generated shape by its interior or tree row, or an older profile group, and choose **Offset loop** to make an independent copy. Enter the distance and choose **Inside** or **Outside**. The preview shows the complete loop before Apply; Cancel keeps the source unchanged. The copy has new editable points and edges. It does not follow later source or parameter changes, and no offset dimension or relation is created. Through the [agent tools](https://insignifi4nt.github.io/wireedm-gcode-parser/documentation/agents/index.md#independent-sketch-offsets), an offset of a graph loop can also copy the loop’s own directions, angles and tangent joints onto the copy. The distance expression is evaluated once when applied. After Apply the whole copy is selected, so choosing **Offset loop** again offsets the copy. For a loop of sketch curves, choose **Linked** instead of **Independent** to keep the offset following the loop and the distance, including a parameter the distance names. The linked offset is a generated shape: select one of its edges and choose **Edit shape** to change the distance, or **Detach** to edit its edges on their own. A change that leaves its loop open or crossing itself, or too small for the distance, is refused with the reason. A linked offset follows at most 512 curves; a loop of more curves offsets only as an independent copy.

Offset supports ordinary circles, line polygons and smooth chains of lines and circular arcs, including slots and rounded rectangles. Sharp line corners use the intersection of the shifted lines, so their corner tips can lie farther from the old corner than the requested distance. Sharp curved joints, open/branched/intersecting sources, construction outlines and older saved plugin profiles are unavailable. Collapsed, crossing, touching or topology-changing results reject without trimming or healing the geometry. Adding an inner loop can change a consumed area into a wall; Finish asks you to choose replacement areas if an existing explicit selection is stale. A zero distance makes no edit.

Select ordinary sketch edges, then choose **Mirror copy** and pick a different line, or the H or V axis, directly in the sketch. Construction lines work as mirror lines too; their infinite supporting line defines the reflection. The original selection stays held while you choose. Enter/Space picks a focused line, and its context menu offers **Use as mirror line**. **Change line** clears the preview and returns to picking. Apply creates new editable geometry; Cancel keeps the original.

Mirror copy evaluates the current geometry once. It does not copy dimensions, formulas or a persistent symmetry relation. Through the [agent tools](https://insignifi4nt.github.io/wireedm-gcode-parser/documentation/agents/index.md#independent-sketch-mirror-copies), a mirror copy can also carry the relations among the selected edges onto the copy, reflected. Original drivers stay unchanged, and later source or mirror-line edits do not move the copy. Shared support points and declared Coincident joints remain connected inside the copied set, without attaching to original geometry. Copied circles and arcs can receive their own dimensions. Lines, arcs and circles are supported, including construction edges. Overlapping or imprecise results reject; touching edges are not automatically joined. Select at most 64 edges, excluding the mirror line. Older profile groups and generated profiles must remain under their existing editors.

To edit an older, imported or generated outline with ordinary sketch tools, right-click its profile in the tree and choose **Copy outline to editable sketch**. Preview the new sketch, then Apply or Cancel. Apply opens the copy for point/edge editing, dimensions, Fillet and other supported tools. The original profile, plugin inputs and imported source remain unchanged. This copies one outline; nested holes are separate profiles and are not included automatically. Construction status is preserved. A generated outline's copy also keeps the relations among its edges, such as a rectangle's level and upright sides.

The copy contains current numeric geometry and a numeric offset. Later source size or offset changes leave it independent. Both sketches use the same plane; if that is a datum, later datum changes still move both. Source dimensions, formulas and plugin relationships are not copied. Finish or cancel a consumed sketch edit before starting this document-level copy. An unconsumed sketch's profile context menu offers the same action directly on the canvas. Rename the new sketch through its tree menu.

Choose **Use reference** while editing a sketch, select an earlier sketch in the tree, then pick a line or circle in its canvas. Apply adds linked construction geometry to your active sketch; Cancel leaves both sketches unchanged. Both sketches must use the same principal plane or the same datum. Different heights are supported: projection follows their common normal, and the active sketch retains its own offset. This first source picker uses stable graph edges; older and generated profile groups retain their existing editors.

The reference follows source geometry changes and stays out of material boundaries. Select it to inspect its source link. Use its endpoints, center or midpoint for snaps and constraints on other geometry. Its own grips, size and construction status are read-only. **Detach reference** releases the link and retains its current numeric shape, local identities and other relations. Later source changes then leave it independent. Unsupported source topology changes, unavailable sources or invalid dependent geometry reject the originating edit without changing the accepted part.

Editing a sketch consumed by later features opens a private edit with local Undo/Redo. Temporary open geometry stays editable there. **Finish sketch** validates and accepts the complete part as one history step; Cancel restores its original state. If an explicitly selected extrusion boundary was replaced, Finish asks you to choose its new areas deliberately. Saved sources and existing selectors are never silently repaired.

Older point/edge sketches that already contain coincidence relations now use those declared joints when forming closed material. Review automatic Pad/Pocket areas when reopening such a part; a previously ignored outline can become material or a hole. An explicit region selection whose contour or nesting changed needs deliberate re-selection. Original saved bytes and point identities remain preserved.

## Navigation and context actions

Open **Settings → CAD** for horizontal **Navigation** and **Display** sections. Navigation remembers your input device for this browser. Mouse mode uses left drag to orbit in 3D, right drag to pan and the wheel to zoom. Trackpad mode uses two-finger scroll to pan, pinch to zoom and Alt + two-finger scroll to orbit in 3D. Sketches keep their plane orientation. Gestures over a settings or configuration panel scroll that panel normally.

Display controls **On-part dimensions**, the labels for saved driving and reference dimensions. Hiding them clears a dimension selection, because the canvas selects only the dimensions it draws, but keeps a selected relation mark; the relation list, configuration and parameter links stay available. **Show relations**, on by default, draws the canvas marks of sketch relations; turning it off hides every mark and drops a selected one, while the relations list and the Constrain tools work as before. The size chips on an older or plugin profile draw as plain values like the canvas dimensions and follow the canvas rules: a click selects a chip and highlights its leader, Shift-click adds or removes one, double-click or Enter opens its editor, and Delete removes a driving dimension without changing the contour. Delete on a focused chip removes the selected chips; the focused chip goes only while no chip is selected. Their selection, menu and keyboard focus follow the same rules as canvas dimensions, and opening an editor selects only the chip it edits. Opening another part closes a chip's editor and clears the chip selection. Their right-click menu offers **Edit value…** and **Delete**; **Make reference** stays unavailable because profile dimensions always drive their profile.

**Extrusion depth handles** in Display let you drag Length directly on the part. They are on unless you turn them off. Select a Pad or distance Pocket, or click its end face, then drag the arrow or the end face itself. The part previews while you drag; release keeps the new Length as one undo step, and Escape during the drag restores it. A click without dragging still selects the face. With the feature's dialog open, release previews the edit instead; **Apply** accepts it and **Cancel** restores the part. A formula-driven length or a length also driving the source placement remains controlled by its relation; use Length or **fx** to edit it.

Click a tree row to select it, and double-click a feature to open it. To rename the part, click its name at the top of the tree to open its Properties and edit **Name**. Enter or leaving the field saves the name; Escape restores it.

Right-click a feature or profile in the tree for Rename, configuration, construction, suppression and deletion actions. F2 renames the focused feature or contour. Keyboard users can press Shift+F10 or the Context Menu key on the focused target. Escape closes a menu and returns focus. A stationary right click opens context actions; dragging with the right button pans the view.

Editing a feature previews the candidate part before Apply. Read-only camera navigation remains available during the edit. Native geometry must finish checking before Apply becomes available. Apply accepts one history step; Cancel restores the accepted part and its exact selections. The current document and saved files remain unchanged while a candidate is being previewed.

## Document parameters

Expand **Parameters** in the tree to see grouped document values and their active uses. Right-click **Parameters** and choose **New parameter** or **New group**. Plugin-created values have an origin icon and automatically belong to a named group. Create or rename groups to organize the design. Ungrouping keeps every value. Renaming a parameter updates dimension expressions without changing embedded plugin definitions.

Opening a document value keeps your current solid or sketch view and selection. Choose a usage under **Used by** to inspect its geometry; local profile-input rows open their profile configuration. Unused values and dormant automatic inputs are marked separately. A profile can have a local override even when the document has a similarly named parameter; the panel shows both sources explicitly. **Add parameter** and row editing open a small floating editor beside the tree.

Info buttons explain fields when needed. Gear help illustrates the current part's pitch/base/root circles and generated tooth roots. The parameter editor and configuration retain typed expressions through validation errors.

## Plugin profiles

Open **Plugins**, search the real profile library and choose **Add**. A profile goes into the selected sketch, or a new sketch when none is selected, as a generated shape: its outline is sketch geometry made again whenever its inputs change. Its compact configuration floats beside the canvas. Driving dimensions appear first; X, Y and rotation share one row. Calculated pitch and outside diameters are read-only. Advanced inputs, cutter guidance and package details are separate disclosures.

Driving fields show evaluated numbers. Editing an exact named binding updates the parameter without unlinking it. **fx** opens its expression; **Keep relation** accepts the pending binding, while **Use current value** explicitly detaches it. Compound expressions remain read-only in the numeric field. Unfinished relation text blocks conflicting actions until kept or discarded. **Apply** validates the whole change before updating the part; invalid edits keep the prior geometry and offer Cancel. Bore holes remain ordinary nested circles, and thickness remains the Pad distance.

### Spur gear

Spur gear uses a full-depth generating rack to calculate involute flanks and rounded root transitions. Module is reference pitch diameter divided by exact tooth count. The rack's addendum coefficient is 1 and dedendum is 1.25. The gear root is the envelope of the moving rounded cutter tip. Its curvature varies along the transition. The equations follow [Wright's gear-generation derivation](https://danotes.mech.uwa.edu.au/gears/appendices.pdf).

Open **Tooth root** to configure the generating cutter. In v3, **Automatic** calculates the tool tip radius from clearance and available rack tip width. **Custom** enables a radius in millimetres within the dependent limits. Smaller radii may require more profile shift to avoid undercut; Automatic shift updates accordingly. This controls the rack-generated root transition, whose local curvature varies. Existing v2 profiles show their calculated tool tip radius. **Configure tooth root** prepares an explicit v3 upgrade; Apply accepts it, Cancel keeps v2.

Automatic profile shift recomputes the minimum correction needed to avoid undercut when teeth, pressure angle, tooth thinning or the generating cutter radius change. Manual mode enables the shift coefficient and enforces its dependent limits. **Curve accuracy** controls the maximum curve approximation error in millimetres. Automatic follows the module; Custom enables your requested tolerance. Disabled fields show their applied automatic values and retain dormant manual expressions. **Calculated dimensions** reports the root/base circles, pitch, tip thickness and applied shift/accuracy. These results cannot be edited independently.

The supported range is 12–300 teeth, module 0.05–50 mm and pressure angle 14.5–30 degrees, subject to valid geometry and the shared 8,192-edge modeling budget. Pointed or thin tips below 0.2 × module, undercut, overlapping roots, invalid expressions and excessive work are rejected. A large or very fine gear can require a larger Custom tolerance. Tooth thinning removes the specified pitch-circle thickness from this gear only; it is not a complete gear-pair backlash setting.

Involute and root curves use straight chords with a proven maximum deviation no greater than the applied tolerance. Root and tip circle arcs are exact. The sketch renders the connected profile as one continuous outline, retaining every modeling endpoint and exact arc. Reducing tolerance adds modeling edges, rather than creating more separately editable teeth. CAD systems can also approximate mathematical curves with splines, as described in [Open CASCADE's curve approximation documentation](https://dev.opencascade.org/doc/occt-7.5.0/refman/html/_geom_convert___approx_curve_8hxx.html). This app's generated gear currently uses chords, including in STEP and DXF. STEP preserves this modeled geometry. Nominal tooth geometry does not establish strength, fatigue, load rating, mating clearance or compatibility with a particular physical cutter. Review these with the actual application and tooling before manufacture.

**Module cutter guide** requires the numbering convention stamped on your set. The common eight-cutter sets number tooth ranges in opposite directions, so No. 6 can denote 17–20 or 35–54 teeth. A preset chooses a starting tooth count, not a unique gear or a measured cutter-tip geometry. A preset can update an exact named tooth-count binding. Compound tooth-count expressions remain controlled by their referenced parameters.

Legacy v1 parts keep their radial root extensions and original package. **Upgrade rounded roots** creates a pending v2 configuration with the existing expressions and manual settings retained. Inspect it, choose Automatic modes if desired, then Apply. Cancel leaves the original part intact; Undo restores the previous profile. Installing a package never upgrades parts implicitly.

### Authoring correlated recipes

Choose **Author or install a plugin** for a separate JSON editor. **Load recipe example** supplies a working API 2 polygon recipe with a calculated diameter and dependent radius limit. Change its identity/version and definition, then **Validate package** and **Install validated package**. Defaults, rules and generated geometry must be valid before installation. Exact source text is retained in browser cache or the optional folder. A conflicting ID/version cannot overwrite an installed original.

An edited recipe must use a new ID or version if its identity already belongs to a bundled package. Installation rejects conflicting definitions before writing. A conflicting package stored by an earlier preview is preserved and reported in the library diagnostics.

API 1 packages remain supported. API 2 adds `rules.derived`, `rules.fields` and `rules.constraints`. Derived values can reference other derived values; cycles and unknown names fail. Each editable input has one field rule specifying its group, dependent minimum/maximum, optional numeric choices and `enabledWhen` condition. Conditions use `left`, `operator` and `right`, with `eq`, `ne`, `lt`, `le`, `gt` or `ge`. Constraints add an actionable `message`. A disabled input retains its stored value; a recipe author must explicitly use derived relations to determine the effective geometry value. Derived values belong in rules, not editable profile inputs.

Recipe arithmetic allows `sin`, `cos`, `tan`, `sqrt`, `atan`, `abs`, and two-argument `min`/`max`; trigonometric angles are radians. `pi` is available in relations, with `index` and `count` additionally available while generating vertices. There is no JavaScript execution, network, file or application-state access. Geometry uses the ordinary closure, intersection, nesting, budget and native-build checks. Recipes can use Pad, DXF and sketch-to-CAM workflows.

Saved instances embed the exact package and version. Earlier plugin API 1-only previews cannot read API 2 profiles; current readers preserve both. Installed machine packages, posts and saved CAM revisions are unchanged.

## Design a part

1. Create a sketch on XY, XZ, YZ or a datum plane. Draw a closed Rectangle, Circle or Slot, close a Line chain of lines and arcs on its start, or join Lines and Arcs into a closed contour. Dimension sets supported driving sizes; Move sets exact translation. Sketch Fillet rounds rectangle corners. Polygon and Path profiles have exact editors. Construction profiles remain visible for reference but do not enter solids or CAM exports.
2. Draw nested contours normally. Enclosed contours create voids; another contour inside a void creates an island. CAD determines these regions automatically. Touching, crossing and self-intersecting contours are rejected. To combine overlapping solids, use separate sketches and a solid operation.
3. Finish sketching and create a Pad (extrusion) or Revolve. Choose a sketch with material contours. Empty, suppressed or construction-only sketches cannot supply a solid. Pad supports signed Distance and symmetric extents; Through-all Pocket requires an XY, XZ or YZ sketch. New body, Join and Cut explicitly control whether material is created, added or removed.
4. Select a feature to edit its dimensions. Later features rebuild from the edited history. Open **Fillet / Chamfer** in the toolbar. Pick edges before Fillet or Chamfer to limit the operation, or choose all edges. Pick one planar face before Shell to open that face and hollow the body inward. Transform, mirror, linear/circular pattern and Boolean union/cut/intersection operate on solid bodies.
5. Save the document. Saved CAD documents appear in the CAD library. Returning to the workbench retains the in-memory draft; save before closing the browser or changing documents. A browser may warn before refresh or exit when CAD has unsaved content or a pending edit. This does not save the draft, and browsers cannot guarantee the warning on every exit.

Use isometric, top, front or right views, fit the part, and navigate with the viewport mouse controls. Rendering updates on demand. The solid engine loads only when needed, so its first operation can take longer. Rebuilding and failed models are labelled; export cannot silently use a failed history.

### See the part behind a sketch

While you edit a sketch, the part stays visible behind it, seen square to the sketch plane and lined up with the sketch geometry. Pan and zoom move both together. Other sketches and curves are shown with the solids. Open **View** below the dock to change how they are drawn:

- **3D background**: **Dimmed**, the default, fades the part and the other sketches toward the background so the open sketch stands out. **Normal** draws them at full strength, and outlines the sketch lines and the previews of drawing, Trim, Extend and Split in a dark edge so they stay readable on bright faces. **Hidden** shows only the sketch.
- **Cut part by sketch plane** removes everything on your side of the sketch plane, so you see the part where the sketch lies and behind it. Faces lying on the sketch plane stay. The cut is not capped, so a cut solid shows its inside. It is available with Normal and Dimmed.

Both choices are remembered in this browser for the next sketch you open; they are not saved with the part. Clicks, hovers, drags and keys reach only the open sketch, and nothing behind it can be picked yet. If the 3D view had keyboard focus, the sketch takes it when it opens and gives it back when it closes. Finishing or leaving the sketch returns the 3D view exactly as you left it. The one exception: if the 3D view showed only the reference planes when you opened the sketch and a part was built meanwhile, finishing fits the view to the part once.

### Reference geometry and the selection filter

The design area shows the reference geometry of the part: the XY, XZ and YZ planes, the X, Y and Z axes, the origin point and every active datum plane. The origin planes and axes grow with the part, so they reach a little past it on every side, and keep a small size while the part is empty. Turn **Show reference geometry** off in **View** to hide it; the plane or axis you selected, the planes a command asks you to choose from and a datum plane whose tree row you point at still show. The choice is remembered in this browser. Showing or hiding single planes from the tree is not available yet.

Click a plane, an axis or the origin point in the design area to select it, as you would click its row in Reference. Pointing at one highlights it first. Where the part is in front of a plane, an axis or the origin point, the part is selected. The origin point and the axes are selected before an origin plane they lie in, and an origin plane only where nothing else is under the pointer, so you can click through it to the part behind. A datum plane is selected where it is in front of the part.

A selected plane or axis is what the next command uses:

- With a plane selected, **Sketch** and **Curve** start on it, **Plane** starts a datum plane on it (on an origin plane as its base, or at a datum plane's own placement), **Mirror** mirrors about an origin plane, and **Section view** cuts the view by it. Mirror cannot use a datum plane yet and says so instead of starting.
- With an axis selected, **Circular pattern** turns about it through the origin, and **Revolve** turns about it when it is the same line as one of the sketch's own axes, not just parallel or close to one; otherwise Revolve says why instead of starting about another axis.
- No command uses the origin point yet. A command opened from a feature's own menu works on that feature and ignores the selected reference.

**Filter** in **View** chooses what pointing, clicking and boxes in the design area can select: **Bodies**, **Faces**, **Edges**, **Planes**, **Axes** and **Points**, which here is the origin point. Turn a kind off to click past it, for example turn off Bodies to select an origin plane behind the part. A command that asks you to pick something, such as the edges of a Fillet, still accepts what it asks for. The filter is remembered in this browser and shared with the sketch, so turning Points or Edges off in one turns it off in the other.

Where several candidates lie under the pointer, press N to select the next one and Shift+N to go back: the edges nearest the pointer, then the faces from front to back, those hidden behind included, then the planes. **Select other** in the right-click menu does the same, over a plane or a sketch outline as well as over a body. Double-click an edge to select its loop around the face under the pointer, or Alt+double-click for its tangent chain: the edges Fillet and Chamfer treat with it when **Follow tangent edges** is on. The chain is read from OpenCascade's own fillet builder, so it is exactly their treatment: the contour the builder makes from that edge, as far as the builder takes it. It can follow on where the faces either side of the edge continue smoothly, whatever angle the edges meet at, and it ends wherever the builder stops. Unlike a sketch chain, it is not checked for forks, and none are reported. Where the builder makes no chain from an edge, such as an edge between faces that already meet smoothly, only that edge is selected and the status line says so. Double-click a face to select the faces meeting it without a crease. This follows the loop and tangency selection of SOLIDWORKS and Fusion. Ctrl, Cmd or Shift adds the chain to the selection. The right-click menu offers **Select loop** and **Select tangent chain** on an edge and **Select tangent faces** on a face. Shift+drag draws a box. Dragged to the right it is a window, drawn solid, and selects a body wholly inside it; dragged to the left it is a crossing, drawn dashed, and selects a body it touches. With Bodies off it selects edges instead, and with Edges off too, faces, from the body with the most of them in the box. While a section is shown, a box counts only the side the section keeps: a crossing takes only what it touches of that side, and a window needs only that side inside it. A selection holds up to 64 edges or faces of one body.

### Section view

Select an origin plane or an active datum plane, then click **Section view** in **View**, or right-click a datum plane in the tree and choose **Section view**. The view cuts the part, its sketches and curves by the plane and removes the side its normal points to: what faces you in the Top view for XY, in the Front view for XZ and in the Right view for YZ. **Flip section** keeps the other side instead. **Caps**, on by default, fills the cut material with a flat colour so solid and hollow read apart, from any viewpoint, including from inside the part. Holes through the cut and hollows inside a solid stay open. Solids of one imported body that lie inside or overlap each other are filled as one, however many there are. A body whose surface does not close shows its cut without a cap. On a very large part the caps can appear a moment after the cut. Turn **Caps** off to look inside. The reference geometry is not cut.

The section is a view only. It changes nothing in the part, its history, exports or CAM sections, and clicks and pointing reach only what it leaves, so you can click a face behind the cut. The caps cannot be selected. Captures of the view show what it shows, section and caps included.

The section stays through rebuilds and follows a datum plane you edit. It turns off when its datum plane is deleted or suppressed, and stays off when the plane comes back. While a sketch is open, the sketch's own view takes its place, and the section returns when you finish the sketch. Press Escape in the design area to clear the selection first, then again to turn the section off, or click **Section view** again. The section is remembered in this browser for the part it was made in; opening another part shows that part without it.

### Choose extrusion areas

Pad / Pocket uses **Whole sketch** by default, including its holes and islands. Click **Areas** to choose individual closed areas on the model. Click replaces the selection; Shift adds or removes an area. You can choose a bore's interior, an overlapping-circle lens or neighboring areas. Shared internal boundaries disappear from the combined material. The sketch and its dimensions remain intact.

The panel's checkmark keeps the area choice in the pending feature; **Apply** accepts the whole edit. The area chooser's Cancel or Escape restores the previous choice and retains earlier pending values, such as Length. The × beside Areas restores Whole sketch, or clears the choice when the sketch requires explicit areas. Switching between Distance and Through all retains the area choice; deliberately choosing another sketch clears the previous sketch's area references.

For point-and-edge sketches, the area chooser supports transverse intersections between lines, arcs and circles. A sketch containing only overlapping circles requires **Choose areas** before Apply. Whole sketch and existing whole-contour selections keep their previous meaning; discovering new intersection areas never adds material to an old extrusion automatically. Intersection areas currently require graph geometry without material legacy profiles; legacy construction references may remain. Tangent or overlapping edges, unresolved very close intersections and point-touching material reject rather than being healed.

An area follows ordinary dimension changes while its source edges, crossing order and holes remain the same. Replacing or splitting a participating edge, changing crossing order, losing an intersection or changing holes requires deliberate re-selection. Even an added open edge can change the witnessed intersection order. Cancel restores the accepted part; a consumed sketch's Finish can accept its source change and replacement areas together. Parts using intersection-area selections need a release that supports those selections; older releases reject them.

**Cut** in Pad, Revolve, Loft, Sweep and Boolean must intersect positive target material. A missed body, outward cut or contact-only tool reports a diagnostic; a cut that removes the whole target also rejects. Check the sketch or tool placement, extent, direction and target. Numerically unresolved material is rejected explicitly. The preceding valid bodies remain visible, with later features unevaluated and solid export blocked. Saved no-effect cuts accepted by an older preview may now show this diagnostic; their definitions are not rewritten. Through-all Pocket already uses the same material-evidence policy.

**Join / Union** combines material. An addition entirely inside the target can leave its material unchanged while retaining its parametric history. Overlapping or face-sharing shapes can become one solid; disconnected shapes or shapes that only touch at an edge or point can remain separate solids within one history body. The selected volume and current feature preview show the count when there is more than one solid. Keep additions as separate bodies when you need independent identities. Sections that contain touching or branching contours still require repair before exact DXF or CAM transfer.

Use **Plane** for a translated or tilted sketch support. Choose its base plane, world origin and rotations around X, Y and Z, then Apply. Rotation turns the plane around its own origin in that world-axis order. These fields accept named parameters. Select the plane before creating a Sketch or Curve, or choose a preceding plane in the feature's placement field. Offset follows its normal; changing placement preserves local geometry. The small plane patch illustrates a reference, not a material face or a finite size.

Datum planes support Sketches, Curves, Pads, Revolves, Lofts with aligned local axes, and Sweeps with a section perpendicular to the rail start. Through-all Pocket currently requires a principal plane. Unsupported or numerically uncertain native placement is rejected explicitly; reducing distance from the world origin or simplifying the placement can resolve precision errors. Plane-only designs and references remain usable without loading the solid engine. Attaching a sketch directly to a changing solid face is not supported.

In sketch Select mode, click inside a contour or near its outline. Nested interiors select the innermost contour; construction geometry is selected by its outline. Picking uses the pointer position independently of grid snapping. Escape discards pending dimensions or parameter edits. Ctrl/Cmd+S saves only after those edits are applied or cancelled; Ctrl/Cmd+Z in a text field keeps its normal text-editing behavior.

For a polygon, use the Vertex picker in Properties to reach a point and edit X/Y. Previous/Next retains pending changes to other vertices. Apply accepts them together; Cancel discards the complete edit.

**Line** (L or P) draws a chain of connected lines and circular arcs. Click the start, then each next point; the two segments that meet at a point share it. Click the chain's start again to close it. To keep the chain open, double-click, press Enter, choose **Finish** or press Escape: each saves the completed segments, and Line stays active for the next chain. A double-click places its point first, as a click would, then finishes: it adds a line to that point or, while a 3-point Arc waits for its point on the arc, completes the arc through it. A double-click on the last point adds nothing, and one where the segment would be invalid reports why and adds nothing. Once a click saves the chain, by closing it on its start or by finishing it, the next quick click there is spent and starts no new chain. A click pressed while drawing is paused, such as during that save, places nothing, even if the save ends before you release it. Changing the tool or cancelling forgets the earlier clicks, so the next click always counts, and so does an undo, a redo or an edit from elsewhere. Only a completed click begins a double-click, and only with a second click from the same kind of pointer. Enter, **Finish**, Escape, another tool and **Finish sketch** place no point, so they drop an unfinished arc; Space or a click places the point on the arc. Press, drag and release with nothing pending to draw and save one line at once. With only a start placed, Escape discards it; with nothing pending, Escape returns to Select. In the drawing bar, **3-point Arc** adds an arc from an endpoint followed by a point on the arc, and **Line** switches back. **Undo last** or Backspace removes the most recent point or segment, **Close profile** adds a straight closing edge when needed, and **Cancel drawing** discards the pending chain. Choosing another tool, or **Finish sketch**, saves a pending chain open first; if that save is rejected, Line stays active with the chain kept for correction. An end placed on the horizontal or vertical guide from its segment's start keeps that line horizontal or vertical. Each chain is one undo step, and the sketch is not solved until the chain is saved. On the focused canvas, arrows position the cursor, Space places a point and Enter finishes. Invalid closure retains the drawing for correction. Saved chains remain analytic and their segment dimensions can use parameter expressions.

Older profile sketches that keep closed profiles only, and Curves, keep their earlier Line rules. A profile sketch closes with a click on the start, **Close profile** or Enter; there, a double-click or a drag with nothing pending only places points, and Escape discards the drawing. A Curve finishes with **Finish curve**, and Escape discards it.

**Arc** (A) takes three clicks: the start, the end, then a point on the arc. The third point determines the arc's direction and short or long sweep, and the arc gets its own center point. Lines and arcs are open edges. A snapped end attaches to the existing point while **Create relations** is on, which is the default. Escape discards a pending Arc, Rectangle, Circle or Slot and keeps the tool; a second Escape returns to Select.

**Slot** (O) takes three clicks: the first arc center, the second arc center, then a point that sets the width. The width is twice that point's distance from the line through both centers. The slot is two lines and two arcs, held by tangent joints and an equal radius, so you can dimension and move each part. Slots saved earlier keep their center, length, width and angle. Press R for **Rectangle** and C for **Circle**.

Every drawing tool places a point the moment you press, not when you release. You can also press, drag and release: the press places one point and the release places the next, so one drag draws a rectangle, a circle or the first two points of an arc or slot. With nothing pending, a Line drag saves one line; during a chain, a drag adds a segment. A small wobble while pressing stays a click. A press right beside the point you just placed waits for the release: if you drag, it draws from that point, so a tap followed by a tap-and-drag on a touchpad also draws from the tapped point; if you release without dragging, it places a short segment or a small corner there. During a line chain, a press that quickly follows a click at the same place also waits for the release, since it may end a double-click: released without dragging, it finishes a chain that has a completed segment, and otherwise it is an ordinary click, so two quick clicks close together draw a short line; dragged, it draws like any drag. Only a completed press counts as a click, so a cancelled press or a drag cannot begin a double-click. During a chain, a press whose snap lands exactly on the last point also waits for the release, and a release there adds nothing. If a shape cannot be drawn or saved, its release adds nothing, and the points placed before it stay so you can try again. A finished shape leaves nothing selected, so Dimension, a constraint or another command you choose next starts from your own picks.

Use **File → Rebuild model** if a cancelled operation or restarted worker invalidates an exact selection. The visible shape can remain available while its cached topology needs rebuilding; select faces or edges again after the rebuild.

CAD operation and rebuild failures, and warnings about accepted sketch edits, appear as dismissible toasts. Open the notification bell to read them again during the current app session. Dismissing a toast keeps its notification. A failed feature remains marked in the feature tree; its tooltip gives the cause. A later feature that reads a failed result is marked as blocked: it was not evaluated, and its tooltip names what it waits on. Identical failed rebuilds do not repeat the same notification until the issue clears. When a rebuild stops, the preview contains only preceding valid features and exports of the incomplete solid remain unavailable.

The CAD header shows a count of the issues of the current build, failures and body warnings alike. Open it to list each issue with what it is about (a feature, one of its inputs, a piece of a body or the part), its message and what caused it. Choose an issue to select its feature in the history. **Edit feature** opens the feature as a double-click does; **Choose edges again** or **Choose opening again** opens a Fillet, Chamfer or Shell with its edge or opening choice focused. Repairs belong to the build they were found in: after a change they wait for the rebuild. When the kernel described a failure in its own words, the issue keeps its message and adds a closed **Kernel message** disclosure with the kernel's text, for a report or a closer look. When **Section for CAM** or a section in **Export DXF** refuses a plane, its message stays in the dialog, and so does a failed import in the import dialog, each with the kernel's text under **Kernel message** when it gave any. A sketch solver that failed keeps its words under the same disclosure in the sketch header's issue list.

Existing sketches and curves fit their geometry when opened for editing, including drawings far from the origin. Later dimension changes keep the current view; use **Fit** or **F** to reframe.

**File → Capture view PNG** saves the current sketch or solid viewport. The capture includes the current draft, which may be unsaved. Finish property edits and wait for the current solid rebuild before capture. The Agent panel in the notification bell keeps the captured PNG available to download again.

If 3D graphics are interrupted, the view redraws when the browser recovers. **Retry 3D view** creates a fresh view if needed, retaining the document and resetting the camera to Isometric. Capture is unavailable while graphics are lost.

If the CAD view itself cannot load, its recovery panel keeps the accepted document available. Use **Save current document** or **Download CAD document** before reloading the page. A download request is not confirmation that the browser saved the file.

## Parameters and history

**Curve** creates an independent open chain of exact lines and circular arcs. Choose a reference plane and offset, name it, then draw with Line or 3-point Arc. **Finish curve** accepts the complete chain as one undo step; Cancel discards its name, placement and geometry together. Curves can have sharp corners but cannot close, cross, overlap or touch themselves. Double-click a saved curve to inspect its planar view and edit its segment dimensions in Properties. Length, bounds and endpoints remain analytic, including parameter expressions.

Sketch outlines and Curves appear at their actual plane and offset in 3D. Before solids exist, all active sketches are visible; afterward, select a sketch or feature to reveal its source sketches. Construction outlines are dashed. Curves remain visible alongside solids. In Body mode, click a visible outline to select its feature; double-click its tree entry to edit. Sketch/Curve-only viewing and PNG capture do not load the solid engine. Curves are reference geometry, without material regions or machining roles.

Named parameters are numeric values. Dimensions accept numbers or expressions such as `width / 2`, `thickness + 3`, and `(pitch * 4) - diameter`. Expressions support `+`, `-`, `*`, `/` and parentheses, without executing JavaScript. Dimensions are millimetres; angles are degrees.

Modeling quantity fields show the evaluated value. Editing a simple named link changes its shared parameter, so dependent features follow it in the preview. Use **fx** to author or replace the relation; compound formulas stay read-only in the quantity field until you explicitly detach or change them. Unfinished input keeps the last valid preview visible and disables Apply. Apply keeps the correlated change in one Undo step; Cancel restores the accepted part. Dormant mode settings retain their stored values until that mode is chosen again.

Each accepted edit is one undo step. Undo/redo changes the draft without rewriting saved storage. History is bounded to 50 steps and a memory budget. Invalid edits leave the previous draft intact. Deleting a feature with dependents requires explicit cascade deletion; reordering must preserve dependency order.

**Pattern → Linear pattern** repeats a body by XYZ spacing. **Pattern → Circular pattern** repeats it around a world X, Y or Z axis through the entered centre. Count includes the original body. Angular extent is the total sweep: 4 instances over 360° appear at 0°, 90°, 180° and 270°; 3 over 180° appear at 0°, 90° and 180°. Negative extents reverse direction. Centres and extents accept parameter expressions. Copies are fused where they overlap, and the pattern replaces its source body. To create repeated holes, pattern a separate cutting body, then subtract that pattern with Boolean Cut. Patterns have 2–100 instances and share a 1,000 expanded-instance limit.

For a through hole or cutout, use **Pad / Pocket → Cut from body → Through all**. Choose the target and a direction from the sketch plane, or **Both directions** to cross the entire target. The displayed axis follows the sketch normal: +Z for XY, −Y for XZ and +X for YZ. The cut follows changes to the target thickness; it does not store an oversized depth. Nested contours keep their material/void meaning, and construction geometry stays excluded. **Distance** retains the existing specified-depth behavior. Switching extent is a pending edit until Apply; Cancel preserves the accepted feature.

Through-all rejects a cut that misses all material, erases the whole target, or cannot be confirmed at native precision. Its required target span is limited to one million millimetres. Failed cuts retain the preceding solid for inspection and block export until repaired.

**Loft** builds a solid between 2–16 ordered sketch sections. Create the sketches on the same reference plane with different offsets, or on datum planes with the same oriented local axes and normal. Add and reorder them in Properties. Their normal positions must progress in one direction; the app preserves the supplied order and any in-plane displacement. Datum section rows show the station measured from the first placed section, with authored offset and in-plane shift available on hover. Differently tilted, rolled or reversed section planes need explicit repair before applying. Each section needs one closed material boundary without holes. Construction geometry is excluded. Smooth uses fitted native surfaces; Ruled connects each pair of sections directly. Choose New body, Join or Cut as with Pad. If smooth fitting extends beyond the first or last section plane, adjust the section spacing or use Ruled. The resulting solid supports STEP/STL export and later features. Final-solid CAM sections still require analytic lines and circular arcs; unsupported fitted curves are rejected explicitly.

**Sweep** moves one closed sketch section along an open Curve. Place the sketch at the curve's actual start, perpendicular to its first direction. For example, a Curve on XY starting at `[0, 0]` toward +X uses a YZ sketch at offset `0`; a circle centred at `[0, 0]` in that sketch stays centred on the curve. Choose the Profile sketch and Curve, then New body, Join or Cut. Either source may use a datum plane. Their world placement governs alignment; the section and rail do not need the same plane or local axes. The source selectors expose placement details on hover. Both source features remain editable. Sweep preserves their placement and traversal; it does not move, rotate or reverse the sketch to fit.

The section needs one material boundary without holes; construction geometry is ignored. Line and circular-arc segments must meet tangentially. Sharp corners, uncertain placement and insufficient bend/return clearance give an actionable diagnostic. Clearance conservatively encloses the section in a disk around the curve start, so a wide or offset section can be rejected even when a more specialised sweep might work. Supported sweeps contain up to 64 curve segments, with section-edge count × curve-segment count at most 2,048. These limits keep native work bounded; the source Curve's larger limit is unchanged. Straight portions are extruded and circular portions revolved, preserving analytic native surfaces. Build diagnostics still govern export and exact section handoff.

Open **View** beneath the dock and choose Body, Face or Edge to change the selection filter. Ctrl/Cmd-click adds or removes edges or faces on the same body. The inspector can also list exact topology for keyboard selection. A selection belongs to the current build and clears when that build changes. Saved edge and opening selections use geometric conditions with exact match counts: an ambiguous match fails rather than choosing an arbitrary edge.

For a selected Fillet or Chamfer, enable **Follow tangent edges** when the operation should continue smoothly from the picked edges. This also handles a circular rim represented by several native arcs. The option starts off; leaving it off requires selecting the complete tangent chain yourself. Its preview shows the resulting treatment before Apply. It does not broaden stale or ambiguous seed selections, or affect all-body scope.

To replace an existing Fillet or Chamfer's selection, choose **Choose edges** in its properties. For Shell, use **Choose opening**. The view shows that feature's input body, including pending shared parameter changes. Pick directly on the model, or use **Inspect topology → Browse edges/faces** for hard-to-reach geometry. Ctrl or Command adds or removes edges; Shell needs one planar face. For edges, a double-click selects a loop and Alt+double-click the tangent chain this feature would treat, N steps through the edges under the pointer, and a Shift box selects the edges it holds or crosses, or clears the choice when it takes none. When the builder makes no chain from the picked edge, so only that edge is selected, the panel says so. The panel's checkmark returns the choice to the feature preview; **Apply** accepts the complete edit. Cancel or Escape keeps the original choice and earlier pending values. Radius, thickness, tangent behavior and source geometry remain under their existing controls. This changes the selected geometric query; it does not create persistent edge names or automatically repair selections after unrelated upstream changes.

In Body mode, expand **Inspect topology** to browse the exact edge list. Face and Edge selections show the geometry type and length or area. **Measurements** reveals detailed coordinates, normals and bounds when needed; close the inspector to leave more space for feature dimensions.

This release provides solved point/edge sketches, driving and reference dimensions, and parametric feature history. **Choose areas** can select bounded regions in intersecting point/edge sketches; coincident edges or ambiguous intersections require repair. Assemblies, freeform surface authoring, arbitrary face sketching and reconstruction of an imported solid's original feature history remain unavailable.

## Send a sketch to CAM

Select the intended sketch and use **File → Send to CAM**. The app saves the exact CAD draft first, then creates a new CAM project from that sketch's non-construction closed contours. Lines, circles, rounded corners and slot arcs stay analytic. Principal and datum-plane sketches transfer in their own two-dimensional coordinates, in millimetres.

**This transfers the selected sketch, not the silhouette or section of the final solid.** Later pockets, transforms, patterns and fillets do not change the original sketch's contours. Select the actual manufacturing sketch and review the result. CAD and CAM are separate editable documents after transfer; later CAD changes require a new handoff and never overwrite an existing CAM project or saved revision.

Review contour roles, material side, order, entry/exit and threading in CAM before generating output. Controller output still requires a saved CAM revision and a complete installed machine package. CAD does not infer feeds or change postprocessor formatting rules.

## Send a final-solid section to CAM

Select a solid and choose **File → Section for CAM**. Pick XY, XZ or YZ, then enter a plane offset (numbers or parameter expressions). The offset follows the plane normal: +Z for XY, −Y for XZ, +X for YZ. For a 10 mm deep XY pad, start with an XY offset of `5`.

Choose **Preview section** to inspect the final material boundaries, including cuts, patterns and Boolean operations. Changing the plane requires a new preview. **Send section to CAM** saves the source and opens a new CAM project with those exact plane-local contours. It uses the finished solid, while sketch handoff continues to use the original sketch.

Sections must cut through material and produce closed, unbranched contours made of lines and circular arcs. Tangent end faces, open contours, ellipses and spline edges produce an explicit diagnostic. Choose another plane or offset; unsupported curves are never silently replaced with line segments. This is one planar section, not taper or four-axis machining.

## Save, exchange and recover

- **Save** writes to browser cache or the connected folder with conflict detection. Another tab's edit is never overwritten silently. If storage changed, export your draft and reopen the saved document before retrying.
## Export DXF

Use **File → Export DXF** independently of the selected feature. Choose a sketch, an open reference curve, or a section through one current solid. The section option asks for a body, XY/XZ/YZ plane and an offset along its normal. Preview the closed contours before exporting. Plane normals are +Z for XY, −Y for XZ, and +X for YZ. This is an intersection at a height, not a silhouette projection.

Downloads use exact supported lines, circles and circular arcs in local millimetres. Section export recomputes the validated intersection for the pinned draft version. Unsupported elliptical/spline, tangent, open or branching sections are rejected. Export neither saves the document nor creates CAM. Construction profiles are excluded; source originals and the editable model stay intact. A download request does not confirm that the browser saved the file.

- **CAD JSON** preserves parameters and feature history. Import assigns a fresh identity, protecting existing saves.
- **STEP** imports and exports exact solid geometry. Imported bodies support subsequent solid operations; their original feature history is not reconstructed.
- **STL** imports closed faceted solids and exports tessellated solids. Choose millimeters or inches when importing because STL has no unit declaration. A mesh does not recover analytic curved surfaces. Imports require one connected closed shell; open, nonmanifold and multi-shell meshes are rejected.
- **DXF** imports exact closed contours as an XY sketch and exports a sketch chosen in **File → Export DXF**, in local millimetres, excluding construction profiles. Lines, circles and circular arcs remain analytic. Import uses declared units; choose source units when the declaration is missing. Unsupported curves, approximations, open contours, crossing contours, nonzero elevation and thickness are rejected. Each closed contour becomes a generated path or circle. Click inside it to open its segment fields in Properties, then select a segment to edit its line endpoints or arc dimensions, including parameter expressions. Apply validates the entire closed path; match adjacent endpoints when editing joints. Typed agent operations use the same validation.
- For an open DXF chain, choose **Import as → Curve**. The complete file must describe one connected open planar chain. Unsupported entities, nonzero polyline widths, branching and mixed open/closed geometry are rejected. Use **File → Export DXF**, choose **Reference curve**, and select a Curve to retain its ordered lines and circular arcs in an open polyline, in local millimetres. Its reference plane and offset remain in CAD JSON; DXF exchanges its local 2D geometry.
- Full workbench backup includes saved CAD documents. Unsaved drafts are outside backup.

Imported STEP, STL and DXF originals remain embedded in the CAD document. CAD files, saved documents, imported source bytes and STL triangle counts have no fixed application size cap. Exact file reading and native operations support cancellation; cancelling preserves the accepted draft and saved originals. Processing uses the current device's resources. Geometry, encoding, units and supported operation checks still apply, and requested accuracy is never reduced to fit a preview budget. Browser download requests do not prove a file was saved to disk. Keep a portable CAD copy before extensive experiments.

STEP length units must be transferable by the native reader. Nested conversion-unit definitions are rejected with a unit diagnostic because the native reader can otherwise silently use the wrong scale. Ordinary SI units and direct conversion units remain supported; the original file is preserved.

## Work with an agent

The [agent tools guide](https://insignifi4nt.github.io/wireedm-gcode-parser/documentation/agents/index.md#cad-workspace) describes the same operations as the interface. Agents read the draft version, import or edit typed documents, measure analytic sketch geometry, build and inspect volumes/bounds, save, and send a sketch or final-solid section to CAM. Finish or cancel active drawing, feature editors and section dialogs before agent mutations.
