User Manual

The Takshak user manual: how the app is organised — Orient, Setup, Machining — and what every panel, library and dialog does, followed by a one-page-per-operation reference for the full op set: the 3-axis AFR feature ops, the 3D surface ops, the edge and engraving ops, and the rotary (4-axis) family. Everything here is written from the shipping build — labels match what you see.

Part I — The app

Importing Parts

Takshak takes your part as a STEP solid (.step / .stp) or an STL mesh (.stl). STEP is the richer input: feature recognition, face picking and "Set origin from face" all need the B-rep topology that only STEP carries. STL works for all mesh-based 3D operations but greys out anything that needs faces.

1 · Orient pose the part · bake 2 · Setup axis · WCS · stock 3 · Machining AFR · ops · G-code
The workflow toolbar's three phases. Later tabs stay greyed until the earlier phase is confirmed; "Restore Confirmed" steps a phase back.
Import routes
  • File > Import STEP / STL… (Ctrl+O): the menu route. The file picker filters to CAD files (*.step *.stp *.stl) and reopens in your last import folder when Preferences > General > "Remember last import folder" is on.
  • Drag and drop: drop a STEP or STL file anywhere on the window — the empty-state panel reminds you of both routes.
  • Import replaces: importing replaces whatever is loaded; if a part with unsaved work is open you are asked to confirm first ("Importing another part will replace it").
  • After load: the part lands in the viewport and the workflow starts at Orient. Feature detection does NOT run at import — trigger it later with the RUN AFR button in Machining, or opt into Preferences > AFR > "Run detection when a part loads".
The import dialogs
  • Multi-body STEP: a file containing N solids is split into one part per body, labelled <filename>1 … <filename>N. The "Multiple bodies detected" notice reminds you that orientation, WCS setup and ops are done per body — switch bodies with the numbered chips in the viewport.
  • "Possible unit mismatch": if an STL looks cm-authored you are shown the part's size as-is and rescaled, and choose Rescale or Use Original — nothing is changed without your click.
  • "Mesh is not a sealed solid" (STL only): the importer counts unsealed mesh edges and warns that vertical-probing finishes (Parallel family) can dip through openings — seal and re-export the mesh for exact results.
DXF import: a drawing becomes a one-depth part
  • Route: the same File > Import picker also takes .dxf. The drawing's closed loops are healed and extruded into a single B-rep prism, so feature picking and the Feature Ops work on it like a STEP.
  • The Import DXF dialog: Depth (thickness) is the extrusion depth; Drawing units come from the file header when it declares them (a header that declares nothing is read as mm, and an unsupported units code is reported and read as mm — override here if the size is wrong); Heal gaps up to closes small breaks between segments.
  • Boundaries: the dialog names what it found ("3 boundaries: ...") and lets you pick which loop is the outer boundary when the drawing nests several. Open contour ends, frozen or off layers, annotation entities and self-crossing rings are ignored and listed in the import notice; splines and ellipses are approximated at 0.01 mm.
STL files: what the reader tolerates
  • A header that lies: a binary STL whose declared triangle count disagrees with the file is loaded by the file's length when the body is a whole number of triangles; the mismatch is logged. A body that is not a whole number of triangles is refused as truncated or corrupt, with both numbers in the message.
  • Encodings: ASCII STLs load in any single-byte encoding (UTF-8, else Latin-1).
  • Very large meshes: above 1,000,000 triangles the import skips the spatial index build; the first rotary op that needs proximity queries on that part builds it once (about 20 s at 3.5 million triangles). A scan with non-orientable folds keeps them after repair; finishing ops treat them as mesh openings.
Recents and project files
  • File > Open Recent: lists recent Projects (.tks job files) and Parts (model files) separately — a project restores a whole job, a part starts a new one.
  • Project commands under File: Open Project… (Ctrl+Shift+O), Save Project (Ctrl+S), Save Project As… (Ctrl+Shift+S), Close Project (Ctrl+W).
Tip

For cylindrical STEP parts the importer pre-measures OD, bore and wall thickness — these become the baselines the rotary stock offsets work against.

Import controls
Import STEP / STL…File-menu import, Ctrl+O. Replaces the current part (with a confirm prompt if work would be lost). Drag-and-drop anywhere on the window does the same.
Open RecentTwo labelled groups — Projects (.tks) and Parts (model files) — plus Clear list. A moved file is dropped from the list with a notice instead of failing.
Nesting dialog (multi-part)
Add part...In the Nesting dialog (workflow toolbar > Nesting): imports another STEP/STL while KEEPING the loaded parts. The new part drops into free space clear of the others.
Remove partNesting dialog: removes the active part and all its nest instances, after a confirm. Refused when it is the only part.
ActiveNesting dialog dropdown listing every loaded part; picking one switches the active part. The numbered chips floating in the viewport (shown once 2+ parts are loaded) do the same — hover shows the full part name, click activates.
Mirror X / Mirror YNesting dialog: adds a NEW part that is a mirrored copy of the active one (named "<part> mirrored"). The original keeps its AFR and ops; the mirror starts fresh, so run AFR on it.
Watch out for
  • STL limits: AFR, face picking, pencil operations and "Set origin from face" need STEP topology — on STL those paths return nothing or are disabled, by design.
  • Nesting is 3-axis only: multiple parts in one project is a 3-axis nesting concept — mirrored copies and added parts carry no rotary dimensions.
  • Project association clears: importing a new part clears the open .tks association — the next Ctrl+S asks for a fresh file rather than overwriting the old job.

Orienting the Part

Orient is the first workflow phase (the toolbar tabs run 1 Orient, 2 Setup, 3 Machining — later tabs stay greyed until the earlier phase is confirmed). Here you position the part on the machine: the grid is the machine floor and Z is up.

Positioning the part
  • Move / Rotate labels: the two bold labels at the top of the panel pick what the viewport gizmo does; drag the gizmo on the part or type directly into the numeric fields — they mirror each other.
  • Move: X / Y / Z in mm, 0.1 mm steps; unit display follows Preferences > Units.
  • Rotate (deg, XYZ): extrinsic XYZ angles in 1° steps, ±360°.
Rotation pivot
  • Part center (AABB): the default — the part turns in place.
  • World origin (0, 0, 0): pivots at the machine zero.
  • Custom point: reveals XYZ fields — you can also click a bounding-box snap marker in the viewport to fill them.
Confirm, then revisit
  1. Position the part with the gizmo or fields; "Reset Transform" zeroes all six fields if you want to start over.
  2. "Confirm Orientation" bakes the transform into the geometry on the backend: the mesh reloads in its new pose, the fields return to zero, and the workflow advances to Setup automatically.
  3. To adjust later, "Restore Confirmed" (enabled only after a confirm) reloads the source geometry with your last confirmed values back in the editable fields — the part looks unchanged on screen, but you can now edit and re-confirm from the original.
Viewport navigation
  • ViewCube: snaps the camera — click a face (FRONT, BACK, LEFT, RIGHT, TOP, BOTTOM), an edge, or a corner for an isometric view.
  • Home button: reframes the whole part.
  • Axis triad: an X/Y/Z triad rides the cube's machine-origin corner so you always know which way is which.
Orient controls
Move / RotateGizmo-mode toggle; the active mode is underlined in accent blue. Both numeric sections stay editable regardless.
Rotation pivotPart center (AABB) [default] / World origin (0, 0, 0) / Custom point. The backend bake uses the same pivot the preview did.
Reset TransformSets all six move/rotate fields to 0.
Confirm OrientationBakes the pose into the part geometry and advances to Setup. Every downstream step (stock, WCS, AFR, ops) works on the baked pose.
Restore ConfirmedUndoes the bake: source geometry returns with the last confirmed values loaded into editable fields. Disabled until you have confirmed once.
Watch out for
  • Multi-part projects: orientation is per part — with a multi-body STEP, confirm orientation for each body separately.

Setup: Kinematics, WCS and Stock

The Setup phase fixes three things before any machining: the machine kinematics (Axis model), the work coordinate origin all G-code references, and the stock block or bar the toolpaths respect.

X− offset X+ offset Top Bottom part bounding box + six per-face offsets = stock stock part
3-axis stock: the part's bounding box padded by six per-face offsets (X−, X+, Y−, Y+, Bottom, Top — Y pair not shown in this side view). The live readout shows the resulting block.
axis Outer Ø offset Face margin Face margin Inner Ø (tube) part bar stock
Rotary stock starts from a shape (Cylinder, Cuboid, Tube, Rect tube): the auto-detected part OD plus an Outer Ø offset, face margins on the axial ends, and for tubes an Inner Ø subtracted from the bore.
Axis model (pick first)
  • Choices: "3-axis (XYZ mill)" or "3+4 rotary (XYZ + rotary table)".
  • Choosing rotary: reveals Machine geometry — "A along X" or "A along Y", the orientation of your rotary table's axis — and swaps the stock section from block to bar.
WCS origin
  • 3-axis: click a yellow snap marker on the part's bounding box, type XYZ coordinates directly, or click "Set origin from face…" then click a face in the viewport to snap the origin to that face's centre. Face pick is STEP parts only — the button is disabled for STL; while armed it reads "Click a face… (Esc to cancel)".
  • Rotary: the XYZ fields become read-only — a rotary WCS must sit ON the rotary axis. Use "Set origin from face…" on the cylinder's flat end face: that one click sets the WCS AND centres the rotary axis and stock on the true cylinder axis, which matters when protruding plugs skew the bounding box off-axis.
Stock material
  • Dropdown above the stock sections: default "(none - use tool defaults)"; drives feeds and speeds for NEW operations from material + tool.
  • Existing ops untouched: changing it never rewrites operations you already created — re-pick the tool on an op to refresh it.
Stock (3-axis)
  • Six per-face offsets: the part bounding box padded by X-, X+, Y-, Y+, Bottom, Top — all defaulting to 0.00 mm (0.5 mm steps).
  • Live readout: e.g. "Stock: 40.0 × 20.0 × 35.0 mm".
Stock (rotary)
  • Shapes: Cylinder, Cuboid, Tube or Rect tube.
  • Cylinder / Tube: an "Outer Ø offset" added to the auto-detected part OD (Tube adds an "Inner Ø offset", subtracted from the part bore for a thicker wall), plus Face margins on the rotary-axis pair only (the axial ends).
  • Cuboid / Rect tube: all three Face margin pairs; Rect tube adds an "Inner cavity offset".
  • Readout: summarises the computed bar, e.g. "Cylinder Ø50.0 × L 120.0 mm (axis X)".
Confirm and revert
  • Confirm Setup: locks it in and advances to Machining — on a rotary job it refuses until you have picked A along X or A along Y.
  • Reset: returns to 3-axis.
  • Restore Confirmed: reverts to the last confirmed kinematics and disables the Machining tab until you re-confirm.
Safe heights
  • No global safe-Z field in Setup: rapid and retract planes are per operation — the Heights rows (Clearance / Retract / Feed / Top / Bottom) in each op's config.
  • Seeding: new operations are seeded from Preferences > Safety Heights: "Clearance above stock" 50.0 mm, "Retract above stock" 10.0 mm, "Rotary clearance" 25.0 mm and "Rotary retract" 5.0 mm.
  • Rotary values: measured outboard of the stock OD — a chuck or steady rest needs more than the diameter suggests.
Setup controls
Axis model3-axis (XYZ mill) or 3+4 rotary (XYZ + rotary table). Drives which stock section and which machining contexts you get.
Set origin from face…Arm a face pick; the WCS origin snaps to the picked face's centre. STEP only. On rotary it also centres the rotary axis and stock on the true cylinder axis.
Stock materialMaterial for feeds/speeds of new operations. Default "(none - use tool defaults)". Never alters existing ops.
Face marginsPer-face stock padding in mm, labelled by direction (X- / X+ etc.). Cylinder/Tube show only the axial pair — radial stock on a round part comes from the Outer Ø offset instead.
Confirm SetupSnapshots kinematics + WCS + stock and opens the Machining phase (and its RUN AFR button).
Restore ConfirmedReverts to the last confirmed axis model and machine geometry; the Machining tab disables until you re-confirm.
Watch out for
  • Breakthrough is per-op: cutting past the stock bottom is not a Setup field — it lives on the operation's Heights bundle, set in op config.
  • Safety Heights preferences move the tool: 50 mm clearance is wasteful on a small machine and thin under tall clamps; existing operations keep their own values when you change the preference.
  • Rotary baselines: stock OD/ID baselines come from the STEP import's auto-detection — on STL or a non-cylindrical STEP they fall back to the bounding-box cross-section.

Machining Contexts: 3-Axis, Indexed and Rotary

A 3-axis project has exactly one machining context, so you never see a selector. A 3+4 rotary project has several: the context strip appears above the AFR Ops / User Defined Ops tabs once Setup is confirmed, reading "Context:" followed by chips.

3-axis Z-down on the pose Indexed A locked → still 3-axis Rotary continuous · radial depth
The three machining contexts. An INDEX is 3-axis at a locked angle by definition — 3-axis AFR and 3-axis ops on the pre-rotated part; the Rotary context is the home of continuous cylindrical work.
The two permanent chips
  • Rotary: the continuous 4th-axis context — coaxial rotary ops with the A-axis free to move during the cut; its AFR pass walks the cylindrical topology.
  • True 4 Axis: hosts the pick-driven simultaneous ops (eccentric turn/clear, rotary fillet/chamfer, geodesic finish). It views the same part at the same pose as Rotary and shares its AFR detection, so its AFR tab stays deliberately empty — switch to it and its pick ops are ready with no re-run.
Adding an indexed context
  1. Click "+ Add Index" — an indexed context is 3-axis machining with the table locked at a fixed A angle; the "Indexed Operations" dialog opens.
  2. Set the "A angle:" — type it (±360°, 0.01° resolution), drag the slider (arrow keys ±1°, PageUp/Down ±15°), or hit a preset (0° / 90° / 180° / 270°). The part rotates live in the viewport as you scrub, so you see the pose before committing.
  3. Press Ok — the context is created, auto-named from the angle (e.g. "A90"), and made active.
  4. Click RUN AFR while the index is active — creating an index does not run detection. AFR then runs a 3-axis pass on the pre-rotated part, detecting the features facing the tool at that angle.
Switching and ownership
  • Clicking a chip switches context: both tabs reskin (an indexed context shows the 3-axis op set, Rotary shows the rotary set) and the part physically rotates in the viewport to that context's pose.
  • Context stamping: every operation is stamped with the context it was created in, and the op palette groups ops by context — the active group is expanded and editable, the others collapsed.
  • Removal: right-click an indexed chip to remove it — you are warned that its bound ops are deleted with it. Rotary and True 4 Axis can never be removed.

One rule to know: rotary AFR supports circular stock only. If your rotary stock is Cuboid or Rect tube, pressing RUN AFR in the Rotary context puts up "Rotary AFR unavailable" and points you at indexed contexts — create an Index @ angle and detect there. The rotary 3D roughers (Adaptive / Level Rough) stay available on the bar regardless.

Context strip controls
RotaryContinuous 4th-axis context — A moves during the cut. Home of the coaxial rotary AFR and rotary op set. Always present, not removable.
True 4 AxisPick-driven simultaneous ops (eccentric, rotary fillet/chamfer, geodesic). Shares Rotary's AFR detection; its own AFR tab is intentionally empty. Not removable.
+ Add IndexOpens the Indexed Operations dialog to add a context at a fixed A angle — 3-axis machining at that rotation.
A angle:Spinner ±360.00 deg with matching slider and 0/90/180/270 presets; the viewport previews the pose live.
RUN AFROn the AFR Ops tab; enabled after Confirm Setup. Detects in the ACTIVE context's frame — rotary detection in Rotary, 3-axis detection at the locked angle in an index.
Watch out for
  • Fixturing collision is on you: the Indexed Operations dialog warns in amber — verify the part will not collide with fixturing / chuck / tailstock at the chosen A angle; collision modelling is deferred.
  • Cylinders at an index: a pure cylinder exposes no flat at any index angle, so a 3-axis index may detect little on it — that is expected; use the Rotary context for such parts.
  • Removing vs switching: removing an indexed context deletes every op bound to it (after a confirm); switching contexts never deletes anything — ops in other contexts stay visible, collapsed and read-only.
  • Abbreviated chip names: the chip in each op-palette row shows an abbreviated context name; the full names live in the context strip and on tooltips.

AFR Ops — Automatic Feature Recognition

The AFR Ops tab is the first tab of the left machining panel. On a STEP part it reads the B-rep solid and lists every machinable feature it can name — holes, counterbores, pockets, plugs, chamfers and more — each with one-click op buttons. AFR's job is to flag what needs attention; you choose which op runs against it.

Run a detection pass
  1. Confirm Setup first: detection is manual by default, and the RUN AFR button is greyed until Setup is confirmed.
  2. Click RUN AFR at the top of the tab.
  3. Read the results under the header 'AFR — Detected Features': collapsible sections, one per feature kind, each with a count in parentheses — empty sections are hidden.
  4. Locate a feature: hovering any section header, group or instance highlights the matching faces in the viewport; clicking pins the highlight.
  5. Fire an op: the op buttons are bold colored text — a group's button fires ONE op covering every member of the group (one tool, one parameter set, N positions); click the group row itself to expand numbered instance rows, each with its own op buttons, when you want to machine one instance alone.

Features group by their driving parameter — diameter for holes and counterbores, mouth diameter for cone cavities, Z level for faces, pits and plugs, radius for fillets, depth for chamfers. A group row reads like '⌀ 4.2 mm x3'.

3-axis STEP sections, in list order, and their op buttons
  • HOLES / COUNTERBORES / NOTCHES: Drill and Bore. NOTCHES are partial-arc faces under 3 mm diameter — slot ends and edge notches worth a dedicated small tool.
  • CONE CAVITIES: countersink candidates — Helical (conical-helix countersink) and Form (V-bit plunge).
  • POCKETS: Pocket.
  • PITS: closed-bottom drafted or straight cavities — Ramp Pocket and Wall Finish.
  • PLUGS: raised features — Plug Clear and Wall Finish.
  • FACES: Face.
  • PROFILES: one header with an 'Outside profile' and an 'Inside profile' group — Contour and, when the outline carries arcs, Arc Contour (native G2/G3).
  • OUTSIDE FILLETS: Form (matched corner-round, single pass) and Mill (ball-end multi-pass).
  • INSIDE FILLETS: Mill only — a corner-round tool physically cannot reach a concave fillet.
  • V-GROOVES / OUTSIDE CHAMFERS / INSIDE CHAMFERS: Form (V-bit) and Mill (end mill).
  • SLOPED FLOORS: Sloped Pocket.
Rotary project: what the tab shows instead
  • STOCK info card first: detected axis, OD, ID and wall thickness — the baselines rotary ops work against.
  • Sections with buttons: HOLES (Drill / Bore) · END FACES (Face) · VERTICAL FACES (Face Finish) · OD REGIONS (OD Step; groove entries in the same section get Groove) · SLOTS (Slot Clear) · POCKETS (Pocket Clear) · PLUGS (Clear Plug).
  • Informational, no buttons: ECCENTRIC HOLES and ECCENTRIC JOURNALS (authored by picking in the True 4 Axis tab) and NOT MACHINABLE (holes the current chuck orientation cannot reach).
  • Context chip bar (rotary with indexed setups) sits above the list: one chip per machining context plus '+ New Indexed'; click a chip to activate that context, right-click an indexed chip to remove it and all its ops.

Displayed coordinates are WCS-relative (shifted by your Setup-tab WCS pick) and follow the global display units.

Detection controls & AFR preferences
RUN AFRRuns a full detection pass on the current part. Enabled after Setup is confirmed. When an indexed context is active it detects in that context's rotated frame.
Preferences > AFR > Blocked features'Show all detected features' (default) or 'Hide features whose ops are blocked'. Blocked = inaccessible / buried / obstructed / tilted — features needing a flipped or indexed setup.
Preferences > AFR > On load'Run detection when a part loads' — automatic AFR on setup confirm. Off by default.
Preferences > AFR > Complexity guardFace-count pre-flight, default 1500 faces (range 100 to 200,000). Parts above it skip detection unless you choose Run anyway in the dialog that appears.
Preferences > AFR > Time budgetWall-clock cap on a detection pass, default 180 s (0 = no limit, max 3600 s). Exceeding it aborts AFR to keep the app responsive.
Watch out for
  • Hazard chips — red warning-triangle = hard block: disables the op button (buried cavity, feature opening away from +Z, tilted axis needing an indexed / 5-axis setup, a raised feature with no clearable surround); the tooltip explains each in full.
  • Amber '!' = soft warning: an obstructed pit's op stays enabled, but visually verify the toolpath before running.
  • Cyan circled-i = informational: bottom face or flip-needed — the op stays enabled so you can plan the future flipped setup.
  • Fully blocked group: when every instance of a group is blocked it shows a blocked pill whose tooltip lists one remedy line per cause (flip the part, use an indexed setup, use 3D Pocket Clearing for the reachable portion, approach from the other side).
  • STL detects nothing: AFR is a B-rep recogniser and a tessellated mesh has no features — the tab shows a notice steering you to the User Defined Ops tab, whose whole-part 3D ops work from a mesh-region anchor seeded automatically at setup confirm, no AFR run needed. On 3D Pocket Clear and Parallel, Trim restricts the op to a drawn region of the part.
  • 'Mesh-to-NURBS source' banner: the STEP file was fitted from an underlying mesh — fillet / chamfer / vee-groove / partial-arc detection is disabled for that file (those analytical detectors are unreliable on refit patches). Only the detection is disabled: define these features manually via User Defined Ops (edge chamfer / fillet picks, manual contours), or use the 3D ops.
  • 'AFR skipped: N faces (likely text / engraving)': the modal offers 'Run AFR anyway?' — Yes bypasses the face guard but the time budget still applies; an amber banner persists on the tab until the next clean AFR run.
  • Rotary STOCK card: verify it before running rotary ops — it warns if your Setup axis disagrees with the detected one.
  • True 4 Axis shows an empty AFR tab deliberately — it shares the Rotary context's detection; review features on the Rotary tab and author simultaneous ops from the User Defined Ops tab.

User Defined Ops — whole-part and picked ops

The second tab of the left panel holds every op that does not need feature detection: you either run it on the whole part or pick the target yourself. It works without ever clicking RUN AFR — the anchor it binds to (the whole-part mesh region on 3-axis, the rotary stock on rotary) is seeded automatically when you confirm Setup.

3D OPERATIONS (3-axis)
  • Row layout: each row reads [op name] [Whole Part] [Selection]. The 3-axis rows are 3D Pocket Clear, Adaptive Clear, Z-Level, Parallel, Pencil, Ramp, Scallop and Silhouette Contour.
  • Whole Part vs Selection: Whole Part creates the op over the entire part immediately; Selection creates a region-scoped sibling and hands you to the Selection picker to define the footprint (see the Selection section).
  • Three Selection buttons are deliberately dead: Adaptive Clear has no region variant yet; Pencil never offers one (it already targets only the concave seams a ball cannot otherwise reach); Silhouette Contour always contours the whole-part outline — its tooltip says so.
  • Silhouette Contour is mesh-derived: it works on STL and STEP alike; its depth defaults to the full part height, trimmed via the op's Heights panel.
FEATURE OPS (B-REP): manual 2.5D ops on a STEP solid
  1. Click the op's button in the FEATURE OPS (B-REP) frame.
  2. Click the target face in the viewport — the picked analytic face is synthesized into a feature and run through the same kernels AFR uses, so even a part AFR skipped stays machinable.
Feature-op rows, grouped by pick behaviour
  • Single-pick (op created on the first valid face): Facing 'Pick face' · Out Contour 'Lines' / 'Arcs' · 3D Trace 'Pick face' · Thread Mill 'Pick hole/OD' · Pocket 'Pick floor / wall' (pick the floor, or a wall for a through pocket) · T-Slot 'Pick floor' · Dovetail 'Pick floor'.
  • Batch (each pick accumulates, the button flips to neon-green 'Run (N)', clicking it again commits the whole batch as one op): Drill 'Pick holes' · Bore 'Pick holes' · Countersink 'Plunge' and 'Helical' (both modes) · In Contour 'Lines' / 'Arcs' · Fillet 'Pick face' · Chamfer 'V-bit' / 'Endmill'. Holes group by diameter, inside contours by shared depth.
  • Chain — Engrave 'Centerline' / 'V Carve': create it, then pick edge chains in the viewport; every completed chain appends a path. V Carve follows the medial axis at variable depth (Depth is the maximum-depth cap), picks letter faces or closed loops, and needs a V tool.
Rotary and True 4 Axis reskins
  • ROTARY 3D OPERATIONS: rows Adaptive, Level Rough, Parallel and Pencil — Whole Part binds to the rotary stock; Selection is a face-pick region scope on Parallel / Pencil / Adaptive / Level Rough.
  • ROTARY FEATURE OPS (B-REP): Drill and Bore ('Pick holes', batch) · OD Step, Face, Fillet, Chamfer ('Pick face') · Pocket and Slot ('Pick floor/wall') · Clear Plug ('Pick plug') · the chain ops Wrapped Contour ('Pick edge/face') and Wrapped Pocket ('Pick face/loop').
  • TRUE 4 AXIS (B-REP) (shown in the True 4 Axis context): Eccentric Turn and Clear by Feature ('Pick pin') · Ecc. Drill and Ecc. Bore ('Pick hole' — picking an off-centre hole offers its same-diameter siblings) · Fillet and Chamfer · the Whole Part / Selection rows Geodesic Finish and Contour.
Buttons
Whole PartCreates the op over the entire part (or entire rotary body) against the automatic anchor — no picking.
SelectionCreates the region-scoped variant and arms the Selection picker. Disabled on STL (no B-rep to pick) and on the rows that have no region variant.
Run (N)A batch feature-op button while picks are accumulating — N is the face count. Click it to commit the batch as one op.
Watch out for
  • STL project: the entire Selection column and all FEATURE OPS buttons are greyed — feature ops pick analytic faces a mesh does not have; Pencil's Whole Part is also greyed (it walks B-rep face topology, STEP only). Parallel, Adaptive, Scallop and Silhouette Contour run on the mesh and stay live; an amber note above the rows points you to Trim for subset scope.
  • Context lockout: rotary feature and selection ops machine in radial coordinates and refuse to arm outside the Rotary (continuous) context — an indexed context runs as 3-axis, so use the 3-axis ops there; the reverse also holds, 3-axis feature ops refuse in the rotary context.
  • Cuboid or rectangular-tube stock: the rotary turn / wrap feature ops are greyed (they assume circular stock topology) — machine prismatic parts through indexed contexts instead; the mesh roughers and Parallel / Pencil face-pick Selection stay live.
  • Whole-body Geodesic Finish trims the axial end-caps — finish those with an indexed / 3-axis op; Rotary Contour trims and reports overhung flanks it cannot present, and Geodesic owns those.
  • All buttons are disabled until a part is loaded and Setup is confirmed — the bottom hint reads 'Import a STEP / STL part to enable.'

The Selection picker — faces, edge chains and loops

The SELECTION segment sits under the Op Palette in the bottom row of the machining grid. It is permanent — idle until an op arms it — and it is where every pick lands: as a removable chip row with a live status prompt and the commit buttons.

closed loop Closed chain → a region pockets · scallop · wrapped pocket open trail Open chain → a path open contour · engrave · edge runs
The Selection picker's two chain shapes: Stitch chain accumulates edges — Done closes a LOOP into a region for area ops, while an OPEN run stays a path for along-edge ops.
FACE mode (armed by a Feature Op)
  • Prompt: names what to pick.
  • Chips: every picked face appears as a chip ('face 12 · ⌀4.2') with a red ✕ to remove it.
  • Footer: shows the running count with Cancel and a neon-green Run (N); single-pick ops have no Run button — the first pick commits.
CHAIN mode: tracing an edge loop
  1. Arm it: select a chain op (such as Ramp - Selection or Engrave) — the segment shows an Edges | Face toggle and a Pick / Clear / Done footer.
  2. Click edges in the viewport; the backend stitcher orders them and reports closure.
  3. Follow the prompt: 'Pick edges to trace the boundary loop.', then 'N edge(s) — keep picking until the loop closes.', then 'Closed loop ✓ — N edges.'
  4. Press Done once it lights up.
Mode variations
  • Open trails: ops that can consume an open trail (Ramp, Engrave, Open Contour) also show a Closed | Open toggle — in Open mode the chain never auto-closes, and Done enables as soon as the picks form one connected path ('Open path ✓ — N edge(s). Done to finish.').
  • Face inside the chain picker: takes a single face as the scope ('Pick one face to scope the op.').
  • Face-only scope ops: 3D Pocket Clear, Z-Level and Parallel Selection, plus the rotary Wrapped Contour / Wrapped Pocket — the Edges | Face toggle is hidden and you simply pick the face whose footprint scopes the op.
  • Scallop - Selection accumulates faces instead: '3 face(s) selected ✓ — keep picking; Compute when done.'
  • Contour / Fillet / Chamfer hybrid: Face is the normal wall pick with the Run (N) footer, while switching to Edges relabels the second toggle to Auto loop | Stitch chain — Auto loop completes the whole closed loop (or the connected sharp-edge run, for chamfer and fillet) from a single edge click; Stitch chain traces edges one by one, open or closed, then Done.
Tip

Chain picking arms automatically when the chain op is the selected op in the palette. The Pick button reads 'Picking…' while a session is live and re-arms it if you clicked elsewhere.

Mode toggles
Edges | FaceChain-mode pick target toggle. The active mode fills blue. Hidden on face-only scope ops.
Closed | OpenWhether the chain must close into a loop (default) or may end as an open trail. Only shown for ops that accept an open path, and only in Edges mode.
Auto loop | Stitch chainContour / fillet / chamfer Edges sub-modes: one click auto-completes the loop or connected run, versus manual edge-by-edge tracing finished with Done.
Session buttons
Pick(Re)starts the viewport pick session; reads 'Picking…' while live.
DoneFinalizes the chain. Enabled only when the loop is closed (Closed mode) or the picks form one connected trail (Open mode).
ClearWipes all picks and restarts. Shown red while an open, uncommitted chain exists.
Run (N)Face-mode batch commit; disabled at zero picks.
CancelDrops the face-mode pick session without creating anything.
Watch out for
  • Switching to a different chain op mid-pick resets the segment — edges never carry over between ops, and the closure mode resets to each op's default (Open Contour starts Open; Ramp and Scallop start Closed).
  • Silhouette, not face wire: Outside contour and 3D Trace derive the whole-part projected silhouette from your pick rather than the picked face's local wire — on a complex part a single face cannot be the silhouette; inside contours stay face-local.
  • Leaving the machining phase hard-resets all transient picking state — picks never leak into the next part.
After the op has run: the selection stays
  • Select the op, see its picks: a picked op (Feature Ops from faces or edge loops, the rotary Selection ops, the chain ops) shows its stored selection again whenever you select it — chips with an , the faces highlighted, or for a chain op the edge chips with the loop or trail drawn.
  • Edit in place: removes that pick from the op; Add re-arms the same Feature Ops pick and Run joins the new picks to the op (picks that group with the op's primary feature — same diameter, angle and depth — join it; others become their own op, exactly as a fresh Run would). For a chain, Pick resumes from the stored edges, drops an edge and re-arms the picker to close the loop again, Clear forgets it.
  • Every edit clears the toolpath: the path was cut for the old set, so the op shows "Not generated" until you press Generate toolpath again. The op's last pick is refused — delete the op instead.
  • Older projects: chain ops saved before this build stored only the polygon; their loop is drawn but the edge chips are empty until re-picked.

Op Palette — the program order

The Op Palette, top-right of the machining grid, lists every op you have added as one flat list in execution order: the order you added them is the order the G-code will run them — until you reorder them in the Export G-code dialog, whose row order is saved as the project's order (see Export G-code). Click a row to select the op — its parameters open in the bottom dock, and if the op belongs to a different machining context the part rotates to it.

Each row shows the op name (with 'x3'-style counts for grouped multi-feature ops), a status line, an eye toggle and a delete button. When more than one machining context exists, each row carries a small context tag — 'R' for Rotary, '4A' for True 4 Axis, the angle for an indexed context; hover it for the full context name, and the active context's tag is accent blue. Several ops' toolpaths can be shown at once via the eye (● visible, ○ hidden), independently of selection.

Status line
  • 'Toolpath ready' (green): Generate toolpath (in the Op Config dock below) has produced motion.
  • 'Not generated' (amber): no motion produced yet.
  • 'Empty toolpath' (amber): a compute finished but emitted no motion — for a rest-mode op that usually means earlier ops already covered everything this tool can reach; the tooltip suggests a smaller tool.
Pills and badges
  • Green 'rest' pill: rest mode is on; the tooltip gives the count of earlier ops feeding the cumulative clearance — at the top of the order it warns that rest is effectively full machining.
  • Blue 'sa' pill: a seam-aware op whose toolpath extends through a fillet or chamfer companion using a finer stepdown in the seam zone.
  • Pulsing amber or red notice badge: the kernel left notes — red means a feature was SKIPPED (tool too large) or the certifier flagged a collision; the same notes land in the G-code as '( NOTICE: ... )' comments.
  • Pulsing red quarantine badge: appears after a project reload whose picked faces could not be re-verified — that op will not compute and will not be exported until its faces are re-picked.
Row buttons
● / ○ (eye)Show / hide this op's toolpath in the viewport. Independent of which op is selected; disabled until a toolpath exists.
×Delete this op and its computed toolpath.
Watch out for
  • No duplicate button on op rows — to repeat an op, add it again from the AFR or User Defined Ops tab.
  • Clicking a row does more than select: it also switches the active machining context to that op's, rotating the part and reskinning both left tabs.
  • 'Toolpath ready' requires actual motion, not just a completed compute — an op showing 'Empty toolpath' will have its export toggle disabled (nothing to write).

Tool Library

The Tool Library is the catalogue of every cutter the app knows about. It opens from the Tool Library button on the workflow toolbar (always available, even before a part is loaded).

The dialog has two tabs, Tools and Holders. The Tools tab is three panels: a grouped tool tree on the left, the edit form in the middle, and a live SHAPE PREVIEW on the right.

Tip

Non-modal: leave the dialog open beside the machining panel while you configure operations.

Browsing the tool tree
  • Always grouped by category: End mill, Ball end, Tapered ball end, Lens (circle-segment), Bull nose, Corner round, Drill, Chamfer, Countersink, Engraver, Face mill, Thread mill, T-slot, Dovetail — each header shows its count, e.g. "End mill (22)".
  • Fresh open = all collapsed: browse the headers first and expand on demand; the dialog remembers which groups you opened across edits within the session.
  • Click behaviour: clicking a tool loads it into the form and the preview immediately; header rows only expand and collapse.
  • Diameters in the tool's own definition unit: a 6 mm tool always reads "Ø6 mm", a quarter-inch tool "Ø0.25 in" — regardless of the global unit toggle.
Filter strip (across the top)
SORTOrder of tools within each category group: Ø ascending (default), Ø descending, Name A-Z, Name Z-A, Flutes ascending, Material.
UNITSmm / inch checkboxes — show tools by their definition unit; your Preferences unit starts checked. Both unchecked shows nothing.
CATEGORYShow one tool family, or All. A picked category always opens expanded.
Ø ... to ... mmDiameter range filter in mm (matches inch tools by physical size); a dash / 0 means no bound on that end. Type the number — there are no arrows.
Create a tool
  1. Click + New Tool: the form clears to defaults in your Preferences unit — 6 mm or 0.25", 2 flutes, 18000 RPM spindle, 500 mm/min feed / 30 ipm, 300 mm/min plunge / 15 ipm.
  2. Fill the form: Save Changes enables once a name and a positive diameter are in — press it to store the tool.
Add Standard Tools
  • Additive-only, never automatic: tops up the library with any standard-catalogue tool it is missing; it will not modify or remove your tools.
  • What it seeds: flat and ball end mills plus drills in metric 1-25 mm and imperial 1/16"-1", face mills, bull nose, corner-round, tapered ball (two operator-defined metric entries), lens end mills, chamfer and engraver V-bits, thread mills (M3-M10 and UNC), T-slot and dovetail cutters.
  • Countersinks are never seeded: tip flats vary per bit, so you create those from your measured tools.
  • Deleted a standard tool? It only comes back when you press this button.
Library actions
+ New ToolClears the form to create-mode defaults; nothing is stored until Save Changes.
Add Standard ToolsAdds any standard-catalogue tool this library is missing. Never modifies or removes existing tools; reports how many were added.
Save ChangesCreate or update the tool. Enabled only with a non-empty Name and a diameter above zero.
Restore DefaultsRecomputes the bit's rule-based flute count and stickout / flute / shoulder / shank lengths from its diameter, unit and category. Overwrites manual edits to those fields; press Save Changes to keep. A no-op on tapered ball tools, whose geometry is per-tool truth.
CancelReverts the form to the selected tool's saved values.
DeleteRemoves the tool after confirmation. Operations that referenced it fall back to Custom.
Use ToolIn the operation-side picker dialog: applies the highlighted row (with any in-table edits) to the operation.
The operation-side picker (second, sortable browser)
  • Where: from an operation's tool dropdown, the Tool Library entry opens a full-width browser with the same filter strip.
  • Columns: Category, Name, Diameter (mm), Flutes, Material, Corner R, Tip angle, Feed (mm/min), Plunge (mm/min), Spindle (rpm); click a column header to sort within each category.
  • Picking: double-click a Name cell or press Use Tool to load it into the operation.
  • In-table edits: every column except Category, Name and Diameter is editable there, but the edits carry into the picked operation only — the library itself is never changed from the picker.
Watch out for
  • In-table edits in the operation-side picker are per-operation only — they are never written back to the library.
  • Unchecking both mm and inch in the UNITS filter empties the list; re-check one to get your tools back.
  • Add Standard Tools is the only way a deleted standard tool returns; the first-run seed does not re-fire.
  • Deleting a tool asks first and warns that ops referencing it fall back to Custom.

Tool Fields and the Shape Preview

The middle form defines the cutter; the SHAPE PREVIEW on the right redraws on every keystroke so you can sanity-check what you are entering before you save. All dimensions are stored internally in millimetres; the Unit row controls only how this tool's numbers are shown and edited.

Identity and unit
  • Name and Category come first, then Unit — the definition unit for this tool's dimensions.
  • mm and inch tools are separate catalogue entries: a 1/4" end mill lives as its own tool showing 0.25 in, not as a converted 6.35 mm.
Core geometry rows
  • Ø: the cutting diameter.
  • Flutes: 1-12, default 2.
  • Stick-out: the mounted length from tip to holder face.
  • Flute length: the cutting-edge length.
  • Neck length: the conical transition rising from the flute top to the full Shank Ø — measured FROM THE FLUTE TOP, so the shank begins at flute length + neck length. Catalogues quote that same segment measured from the tip: their figure equals the sum, not this box.
  • Shank Ø: the plain shank diameter.
  • Holder Ø: a single fallback holder diameter used for clearance when no named holder is assigned; the Holder row assigns a real holder from the Holders tab, and "(none)" falls back to Holder Ø.
  • Zero = unmodelled: geometry fields left at 0 show "(unset)" and simply are not modelled.
Category-specific rows
  • Corner R: bull nose, corner round and lens tools.
  • Tip angle: chamfer, countersink, engraver, tapered ball end (the cone's included angle) and dovetail (the included dovetail angle).
  • Tip flat Ø (V-tools only): the measured flat of a truncated tip, load-bearing in plunge-countersink seat depth — an unrecorded flat oversizes the seat by exactly the flat diameter; 0 = ground sharp.
  • Lens R (lens tools): the vendor r2 bottom radius, which must exceed diameter/2.
  • Neck Ø and Cutting width (T-slot / dovetail discs): the neck rides the pre-cut clearance slot, so the slot must be at least Neck Ø wide or the slotting op refuses.
  • Thread style (thread mills): Single profile / Full form (multi-profile) / Circular drill-thread — definition metadata only; the operation keeps its own Cutter style knob.
Cutting data and controller registers
  • Material: carbide / hss / diamond / other — it matters to material-based feed seeding; HSS runs at roughly a third of carbide surface speed.
  • Per-tool defaults an operation inherits when you pick this tool: Spindle (RPM), Feed and Plunge (mm/min, or in/min on an inch tool).
  • Stepdown and Stepover: lengths; 0 = unset, the op keeps its own default.
  • Tool number (T#): the T word the program calls this tool by (T5 M6, Klartext TOOL CALL 5). Unassigned by default — mapping tools to pockets is yours, never the writer's. A numbered tool carries a yellow dot and a T5 prefix in the library tree, and the same dot with a T# column in the tool picker. Two library tools may share a number (one pocket, different days); two different tools with the same number in one program is a critical export warning, and nothing is renumbered — fix it here.
  • Wear reg (D#) / Length reg (H#): controller tool-table slot numbers, 0-99 with 0 shown as "(off)". The writer emits G41/G42 D# when an op opts into cutter comp, and G43 H# after each tool change when project-level length comp is on — you pre-load the actual offset values at the control; the program references the slot only.
Key fields
Unitmm or Inch — how this tool's dimensions are entered and shown. Stored internally as mm; independent of the global Preferences unit.
Stick-outTip-to-holder-face mounted length. Unset (0) previews as 30 mm and leaves the collision model on its conservative fallbacks.
Neck lengthConical neck from the flute top up to full Shank Ø, measured from the flute top — not from the tip as vendor catalogues quote it.
HolderAssign a named holder from the Holders tab for collision / clearance checking. "(none)" falls back to the Holder Ø scalar.
Tip flat ØMeasured flat of a truncated V-tip (calipers). Drives plunge-countersink seat sizing; 0 = "(sharp)".
Tool number (T#)The machine's T word for this tool, 0-9999; 0 = (unassigned). Unassigned tools are numbered by first use in each program and marked [auto-numbered] in the program's tool table.
Wear reg (D#)Wear-offset slot in the controller tool table for G41/G42 D#. 0 = off, nothing emitted.
Length reg (H#)Length-offset slot for G43 H# after tool changes when project length comp is on. 0 = off.

The preview draws the holder block, shank, neck taper and the category-correct cutting shape — hemispherical ball tip, 118-degree drill point, truncated V-cone, T-slot / dovetail disc on its narrow neck, the true lens cap-and-blend profile — with dimension labels for Ø, shank, stick-out, flute and neck.

Watch out for
  • Neck length is the one field that routinely disagrees with a vendor catalogue: their "reach" figure equals flute length + neck length here.
  • Tip flat Ø and Thread style only save on their own categories — flipping a tool's category discards a stale value rather than letting it leak.
  • Stepdown / Stepover of 0 mean "no per-tool default", not zero engagement.

Holders

The Holders tab (inside the Tool Library dialog) manages the holder library: the stepped silhouettes used for collision and clearance checking. The list on the left mixes read-only built-ins with your own holders, the form in the middle edits one, and the SHAPE PREVIEW on the right draws exactly the profile the collision maths reads.

The eleven built-ins
  • What ships: ER16 through ER40 Collet Chuck, Shrink-Fit (slim) and Shrink-Fit (standard) (both with the 4.5-degree nose taper), Side-Lock 20 mm (Weldon), Hydraulic Chuck, Shell-Mill Arbor, and Keyless Drill Chuck.
  • Conservative proxies: generic, deliberately conservative collision proxies — not catalogue-exact vendor models.
  • Read-only: selecting one fills the form for reference but locks every field; the status line reads "Built-in holder (read-only) - use New to make an editable copy."
Create and use your own holder
  1. Press New: an editable holder named "New Holder" starts (built-ins cannot be edited — copy their numbers into a new one).
  2. Fill the form with the nose-up geometry below.
  3. Press Save: the holder is persisted to the holder library on disk.
  4. Assign it to a tool on the Tools tab's Holder row.
Geometry — modelled from the nose up
  • Nose first: a holder is modelled from the nose — the tool-exit end, nearest the part, the end that actually collides — upward.
  • Nose Ø / Nose length: the front stage; Nose Ø is measured at the tip.
  • Body Ø / Body length: the main body behind it.
  • Nose taper: the per-side external taper in degrees, widening from the nose tip toward the body; shrink-fit noses are typically 4.5 deg, and 0 means a cylindrical nose.
  • Staircase model: internally a tapered nose becomes a six-step staircase that circumscribes the cone — always at or outside the true metal, so the check errs safe.
  • Gauge length: the spindle-face-to-nose length, informational only — it never collides; leave it at 0 ("(unset)") if unknown.
  • Type: ER Collet Chuck, Side-Lock (Weldon), Shrink-Fit, Hydraulic Chuck, Shell-Mill Arbor, Drill Chuck — a family label, not a geometry input.
  • Units: unlike tools, holder dimensions display in the GLOBAL Preferences unit — a holder is not a purchased SKU with its own unit.
Where holder geometry is consulted
  • 4-axis Geodesic finish and Rotary contour finish: the planner actively keeps the fat tiers (shank, neck, holder) off the part by the op's side-clearance margin, and the certify report verifies at true geometry.
  • Rotary parallel and Rotary pencil: the holder feeds a warning-only shank-rub check that flags suspect points but never trims the path.
  • Everywhere else (ordinary clearing, drilling, contouring): no holder or shank collision detection runs at all — you guarantee the stickout.
  • Fallbacks: with no assigned holder, the tool's Holder Ø scalar is synthesised into a single conservative cylinder so the tool is still checked; with nothing at all set, a conservative default proxy stands in; a deleted holder reference resolves to the ER32 proxy rather than crashing or reporting clear.
Holders tab controls
NewStart an editable holder named "New Holder". Built-ins cannot be edited — copy their numbers into a new one.
DeleteRemove the selected user holder after confirmation. Disabled on built-ins.
Nose taperPer-side external nose taper in degrees, 0-45. Shrink-fit noses typically 4.5 deg; 0 = cylindrical.
Gauge lengthSpindle face to nose, informational only — it does not collide. 0 shows "(unset)".
SaveCreate or update the user holder. Persisted to the holder library on disk.
Watch out for
  • Holder collision checking exists only in the parallel / geodesic finishing family (planner limiting plus certify) and as warnings in rotary parallel / pencil. Simple clearing operations never shrink their cut to protect the holder — stickout is on you.
  • Built-ins are conservative generic shapes; for a slim vendor holder reaching into a deep pocket, model your own.
  • Deleting a holder that tools still reference falls back to a conservative ER32-class proxy, not to "clear".

Material Library and Feed Seeding

The Material Library (workflow toolbar, Material Library) stores what each stock material does to a cutter, and the app uses it to compute starting feeds and speeds whenever a tool meets an operation. Two numbers do the work: surface speed (m/min, split carbide vs HSS) gives the RPM, and chip load (mm per tooth, a table by cutter diameter) gives the feed.

The eight seeded materials
  • Shipped set: Aluminium 6061 / 6082, Aluminium 7075, Brass / Bronze, Mild steel (1018 / EN3), Alloy steel (4140 / EN19), Stainless 304 / 316, Cast iron, and Acetal / Delrin.
  • Source line on every one: its numbers are conservative published starting points, not manufacturer data — treat them as something to correct from experience.
The usual retune workflow
  1. Duplicate the closest seed: the copy is named "... (copy)" with its Source cleared.
  2. Retune it for your machine — and keep both.
  3. Write what you did in Source, e.g. "measured on my mill".
What a material record holds
  • Name and Category.
  • Surface speed (carbide) and Surface speed (HSS) in m/min — rpm = speed x 1000 / (pi x diameter); the seeded defaults on a blank record are 120 and 35.
  • Chip load table ("Chip load per tooth, by cutter diameter"): columns Diameter (mm) and Chip load (mm/tooth), interpolated linearly between rows and held flat outside them — because a 1 mm cutter taking a 6 mm cutter's chip snaps.
  • Table upkeep: Add row / Remove row manage it; rows sort by diameter on save, and a material cannot save with no rows.
The factors
Finish speed factorDefault 1.15x — applied when the op's intent is finishing.
Finish chip factor0.6x — applied when the op's intent is finishing.
Drill speed factor0.6x — for drilling-type cutters.
Drill chip factor0.5x — for drilling-type cutters.
Plunge factor0.35x of the cutting feed.
Stepdown factor0.5 x D — seeds the op's engagement.
Stepover factor0.4 x D — seeds the op's engagement.
When and how seeding happens
  • Exactly two moments: when an operation is CREATED, and when you PICK a tool on an operation.
  • Precedence: material x tool over the tool's own defaults over the op-kind default — and a field you have hand-edited is never overwritten by either layer.
  • Spindle ceiling respected: when the wanted speed exceeds the default machine's max RPM, the feed is reduced in the same ratio, holding the chip thickness — dropping RPM without dropping feed is how small cutters break.
  • Drilling ops receive spindle and plunge only — a drill has no lateral feed or stepover to seed.
  • Mid-project material change: changing Stock material does NOT rewrite existing operations — they keep the values they were seeded with, and the app says so in a dialog; re-pick the tool on an operation to refresh it from the new material.
Tip

Live preview: the readout at the bottom of the library recomputes on every edit through the same code that seeds operations, reporting what a 6 mm 3-flute carbide end mill would run at in this material.

Library buttons
NewA fresh material pre-filled with a usable three-row chip load curve (3 mm / 0.015, 6 mm / 0.030, 12 mm / 0.060) to correct.
DuplicateCopy the selected material as "(copy)" with Source cleared — the retune-for-your-machine workflow.
DeleteRemove after confirmation. Projects referencing it keep the feeds their operations already have.
Restore built-in materialsAdd back any supplied material the library is missing. Never modifies one you have edited.
Add row / Remove rowManage the chip load table. Non-positive or unreadable rows are dropped on save.
SourceWhere the numbers came from, shown so a value is never mistaken for measured data.
Where the project's material is chosen
Stock material (Setup panel)The project's material for feed seeding; the combo offers every library material plus "(none - use tool defaults)", which disables material seeding.
Default material (Preferences)What a newly imported part starts with.
Watch out for
  • Seeded catalogue numbers are conservative published starting bands, not manufacturer data — verify against your cutter, holder and machine before cutting.
  • Changing the stock material never touches existing operations; re-pick the tool on each op you want refreshed.
  • The feed scales directly with flute count: a 4-flute cutter left at the default of 2 feeds at half rate, a 2-flute recorded as 4 at double — the dangerous direction. The app logs a note when it had to assume.
  • A tool with no recorded material is assumed carbide; an HSS cutter run at carbide surface speed will not survive long.
  • Round-nosed cutters (ball, tapered ball, bull nose, corner round) engage below nominal diameter at light stepdowns, so true surface speed is lower than computed — consider raising RPM for shallow finishing.
  • A material with no chip load rows cannot produce a feed and refuses to save.

The Viewport: Navigation, Themes and Display

Every check you make before metal happens in the 3D viewport. It shows the part, the stock, the grid, the WCS triad and the computed toolpaths, and everything about how it looks is under your control — without ever changing what will be cut.

Mouse navigation
  • Orbit: left-drag — a turntable orbit; the part yaws about the machine Z and pitches, it never rolls.
  • Pan: middle- or right-drag.
  • Zoom: the wheel zooms toward the target with an exponential step.
  • Pick: a plain left-click (no drag) picks whatever is under the cursor.
  • Feel: adjustable in Preferences — Orbit speed (default 0.50), Zoom per wheel step (default 10 %), and Invert zoom direction.
ViewCube and camera
  • 26 snap targets: click any of the ViewCube's 6 labeled faces (FRONT, BACK, LEFT, RIGHT, TOP, BOTTOM), 8 corners or 12 edges, bottom-right; a hover highlight shows what a click will take.
  • Axis triad: the X/Y/Z triad is anchored at the cube's machine-origin corner and rotates with it, so you always know which way the machine axes point.
  • Home: the small button next to the cube (tooltip "Home view") returns to the default isometric view and re-fits the camera to the part; the same fit runs automatically when a model loads.
The overlay bar
  • Chips are buttons: the letter chips along the viewport edge are on-screen buttons, not keyboard keys; a lit blue chip means visible.
  • Chip order: T (Toolpath), G (Grid), W (Wireframe), M (Model), the model-opacity slider, B (Bounding box), S (Stock), A (WCS triad), then O (Orthographic projection) and P (Perspective projection) as a mutually exclusive pair.
  • M hides everything: the M chip hides every rendered body at once, including ghost copies and other parts in a multi-part setup.
  • Brightness: the slider top-right (tooltip "Viewport light intensity (mid = default)") scales the scene light from 0.2 to 2.0 around a 1.0 default.
  • Scale bar: a dynamic scale bar bottom-left reads the current on-screen scale in mm (or m when zoomed far out).
On-screen controls
T / G / W / M / B / S / AOverlay-bar visibility chips: Toolpath, Grid, Wireframe, Model, Bounding box, Stock, WCS triad. Defaults: all on except Wireframe (which follows the Preferences "Wireframe overlay on" setting, default on).
O / POrthographic vs Perspective projection, mutually exclusive. Default Perspective; the Preferences "Projection" row sets the startup value.
Model opacity slider0-100 % alpha on the part; 100 = solid (default). Mirrors Preferences > "Model opacity".
Brightness sliderScene light intensity, 0.2-2.0, default 1.0 (mid). Mirrors Preferences > "Scene brightness".
ViewCube + Home26 camera snap targets (6 faces, 8 corners, 12 edges) with the rotating X/Y/Z triad; Home = default iso view fitted to the part.
Themes, colors and grid
  • Four viewport themes: Dark, Light, Blueprint and Neo, chosen in Preferences under "Viewport theme" — independent of the window (chrome) theme. Each carries its own part color, background, grid tones and a matched set of toolpath colors.
  • Toolbar toggle: the toolbar light/dark toggle flips both themes between Dark and Light; Blueprint and Neo you pick in Preferences.
  • Model color: a Preferences override of the theme's part color with one of your own (other-part and ghost tints follow it); the "Theme default" button restores each theme's own color.
  • Grid placement: "Stock bottom (rest part on grid)" or "Model XY plane (grid at z=0)"; the grid re-scales its minor/major line spacing automatically as you zoom.
Heavy-mesh render protection
  • Trigger: when a part over 500,000 triangles loads, the wireframe overlay is switched off for that part and anti-aliasing is lowered where the driver allows; a lighter part restores both automatically.
  • Switch: Preferences > Display > "Heavy meshes" ("Protect the graphics driver on heavy meshes"), on by default.
  • Not a lock: you can still flip the wireframe back on from the W chip for a protected part — the protection sets the starting state, it does not lock you out.
Preferences (navigation and display)
Viewport themePreferences combo: Dark, Light, Blueprint, Neo. Independent of the window theme.
Model colorPreferences override of the theme's part color; "Theme default" clears it.
Grid placementPreferences combo: "Stock bottom (rest part on grid)" or "Model XY plane (grid at z=0)".
Heavy meshesPreferences > Display checkbox "Protect the graphics driver on heavy meshes", default on. Applies from the next part load; threshold 500,000 triangles.
Orbit speed / Zoom per wheel step / Invert zoom directionNavigation feel; defaults 0.50, 10 %, off.
Tip

The display rows in Preferences ("Wireframe overlay on", the bounding-box default, "Model opacity", "Projection") set only what the overlay-bar toggles START at — changes you make in the viewport itself are per-session.

Watch out for
  • Chips, not keys: the chip letters (T, G, W...) are button labels on the overlay bar, not keyboard shortcuts — click them.
  • Protection exists for a reason: a 1,000,000-triangle mesh with wireframe and full anti-aliasing on has wedged an integrated GPU hard enough to take the whole desktop down. Untick "Heavy meshes" only if your graphics hardware can carry it.
  • A chip in hidden phases: the A chip toggle acts on your WCS-triad preference; in a workflow phase where the triad is hidden anyway, toggling it shows nothing until that phase ends.
  • Next load only: changing "Heavy meshes" in Preferences applies to the NEXT part load; the currently loaded part keeps whatever was decided when it loaded.

Toolpath Display and Playback

A computed toolpath renders in the viewport color-coded by motion kind, and the playback bar animates the cutter through it move by move. Use it to sanity-check approach, linking and ordering — and know exactly what it does and does not prove.

Motion color code
  • Rapids: amber — fast and not cutting.
  • Cutting feed: green — and cutting moves draw slightly heavier than rapids, so the productive path reads first.
  • Plunges: red — going down; the moves that deserve your attention.
  • Retracts: soft blue — coming up.
  • Peck-drilling markers: bright yellow at the peck depths, bright cyan at the between-peck retract endpoints.
  • Per-theme hues: the exact hues are tuned per viewport theme so they stay readable on every background, but the role coding never changes.
The playback bar
  • When it appears: an operation with a toolpath that has a time schedule shows the playback bar and DRO strip bottom-right, next to the ViewCube.
  • Transport: step-back and step-forward buttons (0.5 s per step) and a play/pause button.
  • Scrub track: click or drag to any point in the operation.
  • Speed chips: 0.25x, 0.5x, 1x, 2x and 5x — the active speed is the highlighted chip.
The cutter marker
  • Full stepped silhouette: cutting section, shoulder cone, shank and the holder stages — the same silhouette the collision model checks, so what you see is never less than what was verified.
  • Tip color: the tip is colored by the motion it is executing (feed, plunge, retract, or grey for rapid); the shank and holder stay steel grey.
  • Rotary playback: the part spins about the rotary centerline while the tool stays fixed in the machine frame, exactly as the machine will do it.
  • Cut trail: the path already traversed turns grey while the moves still to come keep their kind colors, so a glance shows how far the program has run.
The DRO strip
  • X / Y / Z: the live tool position in work coordinates — three decimals in mm, four in inches.
  • A (rotary only): shown to two decimals, display-negated so it turns the same way as the amber direction arrow — the G-code value is untouched.
  • S: the spindle speed as "S ... rpm".
  • F / G0: the current rate tagged "F" during cutting or "G0" during rapids and retracts (mm/min, or in/min to one decimal).
Playback controls
Play / pause, step back, step forwardPlayback transport; each step moves 0.5 s of program time.
Scrub trackClick or drag anywhere to jump to that point in the operation.
0.25x 0.5x 1x 2x 5xPlayback speed presets; the active one is highlighted. Default 1x.
DRO stripLive WCS X/Y/Z, A (rotary only, arrow-referenced display), S rpm, and F/G0 rate in the current display units.
T chipHides or shows all toolpath rendering (all kinds, markers and trail at once).
Watch out for
  • Animation is not ground truth: it is a visualization of the computed toolpath at display fidelity, not a material-removal simulation and not a verification — it does not show chip load, stock state or collision status, and its drawing of linking moves is a display convenience. The exported program is what the machine runs.
  • The checks that count: Certify the operations that support it and read the exported G-code before metal. If the animation looks right but the program is wrong, the machine runs the program.
  • A is display-negated: the DRO's A value is negated for display only, to match the on-screen rotation arrow; the value in the program is unchanged.
  • No bar is not a fault: the playback bar only appears when the selected operation has a computed toolpath with a time schedule; no bar means nothing is loaded, not that playback is broken.

Generating a Toolpath

The blue "Generate toolpath" button in the Op Config panel computes the selected operation. Short operations compute in under a second; the long-calculation kinds run in the background so you keep working while they grind.

Generating an operation
  1. Set the parameters: configure the operation, then click "Generate toolpath" — the filled blue button at the top of the Op Config panel.
  2. Fast kinds finish at once: they compute synchronously with a brief wait cursor and the result renders immediately.
  3. Long kinds go to the background: the button becomes the status surface — it pulses between two blues and its label reads "Generating... 42%" with the live percent from the kernel. Keep setting up other operations, switch parts, or inspect earlier toolpaths while it runs.
  4. The result lands on its op: when it finishes, the toolpath lands on the operation it was started for — even if you have since selected a different one.
The background (long-calculation) kinds
  • 3-axis: 3D Pocket Clear (whole part and selection), Adaptive Clear, Parallel (whole part and selection), Z-Level (whole part and selection), Ramp and Scallop.
  • Rotary and 4-axis: the rotary roughers (Parallel, Pencil, Adaptive, Cylindrical Rough), Geodesic Finish and Contour.
Cancelling a run
  • Click again to cancel: clicking the button while it is generating does not start a second run — a confirmation asks "Stop the running toolpath generation (...)?" with No as the default.
  • Checkpoint stop: on Yes the backend stops at its next internal checkpoint, and the button shows "Stopping at the next checkpoint..." until it does.
  • Clean exit: a cancelled run simply drops the button back to "Generate toolpath" — no error box, since the stop was your own doing.
Guards before a heavy run
  • Heavy compute dialog: some heavy kinds estimate their cost first; if the estimate exceeds Preferences > Performance > "Warn before compute over" (default 30 s), a dialog states the operation, its Z-slice count and mesh face count, and "Estimated compute time: about N minutes".
  • Proceed / Cancel: "Proceed" starts the run in the background; "Cancel" (the default) backs out so you can coarsen the stepdown or stepover first.
  • Scallop RAM pre-check: the whole-part Scallop operations pre-check the RAM their voxel grid would need and, if it looks too tight, refuse with a Force option — the refusal is an estimate you may override, but a genuine allocation failure still stops the run.
Controls
Generate toolpathComputes the selected operation. While busy: pulses, shows "Generating... N%", and a click offers cancel.
Heavy compute dialogConfirmation for estimator-backed heavy kinds: Z slices, mesh faces, estimated time, Proceed / Cancel (Cancel is the default).
Warn before compute overPreferences > Performance threshold in seconds for the Heavy compute confirmation. Default 30 s; takes effect without a restart.
Watch out for
  • CPU-heavy: avoid launching another heavy compute (including Certify) while a background generation runs; the button tooltip says the same.
  • One at a time: only one background generation runs at a time — a second Generate click is a cancel offer, not a queue.
  • Export is gated: G-code export is unavailable while a generation is in flight (both use the same compute channel); wait for the button to settle.
  • Deleted mid-run: if you delete the operation (or load another project) mid-run, the finished result is dropped rather than applied to something you no longer have — regenerate after reorganizing.
  • Cancel is not instant: it takes effect at the kernel's next checkpoint; the "Stopping at the next checkpoint..." label is normal for a few seconds.

Certify Toolpath (Rotary Finishing Ops)

"Certify toolpath" is an independent verification pass for the rotary Parallel, Geodesic Finish and Contour operations. It re-checks the computed toolpath — the same segments the preview renders and the writer will post — against the loaded part mesh, through code that shares nothing with the kernel that generated the path. The optimizer never grades its own homework.

Reading a certify depth: pool × part × band clean ≤ 0.05 graze 0.05–0.2 0.2–0.5 > 0.5 mm pools: feed · plunge · retract · rapid parts: ball · shank · holder near-surface readings are EXACT mesh tests link pools carry a designed 0.02–0.03 corridor bite
A certify reading is a POOL (which motion) × PART (which body tier) × DEPTH band — never just a count. Act on it with the ladder: stock to leave → lean → necked tool → acceptance.
Running a certification
  1. Generate the toolpath first: "Certify toolpath" — the outlined button under Generate in the Op Config panel — is greyed until a toolpath exists. On operations without certification its tooltip says so plainly: "Certification is available for the rotary Parallel, Geodesic Finish and Contour operations."
  2. Click Certify toolpath: the check runs in the background — the button pulses and shows "Certifying... N%" with progress counted by poses actually tested, and you keep working meanwhile.
  3. Cancel if needed: clicking the pulsing button offers cancel (confirmed, stopping at the next checkpoint).
What it measures
  • Geodesic Finish and Contour: every pool — feed, plunge, retract, rapid, plus densified interiors of A-axis swings — is tested with the full tool body (cutting ball, neck, shank, holder stages) against the whole solid.
  • Per-pool report: each pool reports its pose count, its maximum penetration in mm, counts above 0.05 mm, 0.2 mm and 0.5 mm, and the worst pose with WHICH part of the tool produced it: ball, shank or holder.
  • Rotary Parallel: a complete shank/holder sweep of every feed pose (every one exactly tested or proved clear) with depth probed on the most-engulfed hits. Tip gouge is excluded by construction in that op's contact solve and rapids are not swept — the report says so itself.
  • Scope statement: every report ends with a statement of what was and was not checked.
Reading the verdict
  • The dialog: titled "Certify Toolpath — CLEAN (op)" or "Certify Toolpath — GOUGING (op)".
  • CLEAN: maximum penetration at or below 0.05 mm — the mesh-fidelity floor. STL facets deviate from the true surface by tens of microns, so sub-0.05 contact is geometry the mesh cannot resolve, not damage.
  • Escalation bands: 0.05-0.2 mm is a graze, 0.2-0.5 mm is real, and above 0.5 mm is serious.
  • Trust small numbers: near-surface readings are exact mesh tests, not grid noise — the fast distance grid is only used to clear samples that are certainly far from the surface, and anything near it escalates to the exact signed-distance test. A reading of 0.053 mm is a measurement, not an artifact.
The correction ladder (in order of preference)
  1. Read the report first: the first rung is WHICH pool and WHICH tool part produced the max — the report names both.
  2. Raise "Stock to leave": moves the whole cut off the surface — answers a ball reading.
  3. Raise "Side clearance" (default 0.5 mm): it guards only the tool tiers FATTER than the cutting ball (shank, neck, holder), so it cannot fix a ball reading, only shank/holder ones.
  4. Adjust the lean: "Max flank lean" on Contour, "Lean min"/"Lean max" on Geodesic Finish — changes how the tool presents to the flank.
  5. Switch to a necked tool: pick one in the Tool Library so the interfering tier simply is not there — removing a problem beats guarding it.
  6. Tighten the "Contact window": "Contact min"/"Contact max" re-poses out-of-window contacts about the fixed ball centre without moving the cut.
  7. Regenerate and certify again: after any change — certification checks the toolpath that exists, not the one you intend.
Controls
Certify toolpathRuns the independent verification in the background. Enabled only for rotary Parallel, Geodesic Finish and Contour, and only once a toolpath exists. While busy: "Certifying... N%", click to cancel.
Certify Toolpath -- CLEAN / GOUGING dialogThe report: overall max penetration (with its source part when not the ball), then per pool: poses, max mm, counts over 0.05 / 0.2 (and 0.5) mm, worst pose and part, and a scope statement.
Stock to leave / Side clearance / lean knobs / Contact windowThe correction ladder, in the Op Specific panel. Side clearance (default 0.5 mm) protects only tiers wider than the ball.
Watch out for
  • Closed mesh required: Certify needs a closed (volumetric) part mesh. An open shell has no inside/outside for the signed-distance oracle, and the pass refuses rather than reporting noise.
  • Failed-to-run means UNVERIFIED: not clear — the app says this loudly, and it is worth repeating.
  • Before posting only: certification checks the computed toolpath before posting. The final gate on the posted program is the G-code itself.
  • Side clearance cannot fix a ball reading: it applies only to the fat tiers above the cutting ball. Match the fix to the part named in the report.
  • CPU-heavy: the pass can take minutes on a million-pose contour op; avoid running it alongside a background generation.
  • Rotary Parallel scope: tip gouge is excluded by construction and rapids are not swept — the report's scope line states exactly this.

Posts & Machines: the Post-Processors tab

The Posts & Machines dialog opens from the workflow toolbar (the "Posts & Machines" button) and holds two tabs: Post-Processors and Machines. The Post-Processors tab is your post library — 18 built-in dialects plus any posts you save yourself — and it controls which posts the export dialog offers.

Every post in the list carries a badge: "built-in" for the 18 shipped dialects, "custom" for yours. Built-in posts are read-only — you cannot edit or delete them; to customize one, use the buttons below the list.

The built-ins are: LinuxCNC, Fanuc - Generic, GRBL, Haas, Mazak, Doosan, Brother Speedio, Mitsubishi, Fadal, Mach3 / Mach4, Masso, Centroid, Siemens 840D, Heidenhain TNC, Okuma OSP, Fagor, Hurco and Tormach.

Curating the export picker
  • Show in Generate: each row carries a checkbox — as the hint at the top says, tick it to include that post in the export dropdown.
  • Keep it short: untick the dialects your shop never runs and the Post picker in Export G-code stays short.
  • Filter only: this curation only filters the picker — it never deletes anything.
Post-list controls
Show in Generate (checkbox on each row)Includes / excludes that post from the Post dropdown in the Export G-code dialog. Curation only — the post itself is untouched.
New…Creates a user post by cloning a built-in base of your choice; opens the Utility editor titled "New post (Save As)".
Duplicate…Opens a copy of the selected post (built-in or custom) in the Utility; Save creates a new post named "<name> (copy)", the source is never touched. Duplicating a built-in gives you a customizable copy of itself.
Edit in Utility…Reopens the selected custom post for editing in place. Greyed for built-ins — they are read-only.
DeleteDeletes the selected custom post after a confirmation prompt. Greyed for built-ins.
Export post…Writes the selected post to a .tkpost file to carry to another install; a machine exports the same way from the Machines tab and takes its post with it.
Import post / machine…Reads a .tkpost file; the import dialog shows what is inside and how a name clash will be resolved before anything is written.
Units

Inch programs come from inch posts. Every dialect ships in a metric and an inch form (LinuxCNC and LinuxCNC (inch), Haas and Haas (inch), ...). The post owns the program's units: an inch post emits G20 and converts every axis and feed word; the Export dialog's Units row only mirrors the post you picked, and the Post picker follows your Display units preference when it opens.

A saved user post is immediately available everywhere the registry is used — the export Post picker (if ticked visible) and the Machines tab's Post dropdown.

Watch out for
  • Built-in posts cannot be edited or deleted — only duplicated. This is deliberate: the shipped dialects are the verified baseline.
  • Unticking "Show in Generate" does not affect machines that already reference that post — a machine always brings its own post regardless of curation.

The Post-Processor Utility (post editor)

The Utility is where a user post is built: a thin set of overrides on top of a built-in base, where anything you leave blank inherits the base's value, live. The dialog has an identity block on top and three tabs — Basic, Snippets, Advanced.

Identity block
  • Name: defaults to "My Post", or "<source> (copy)" when duplicating; Description sits alongside.
  • Based on: the built-in the post inherits from — changing it immediately updates what blank fields will mean.
  • Live placeholders: the Basic fields' placeholder text shows the inherited value, e.g. "blank = inherit (Haas: G187 P2)".
Basic tab — the four common overrides
  • Smoothing line / File extension / Program number: plain text fields where blank means inherit from the base.
  • Work-offset scheme: a combo whose first entry is literally "Inherit from base".
Snippets tab — five injection points, in program order
  • Program start: after the modal state block, before the project's custom header.
  • Before first tool.
  • On tool change: after every T#/M6 block, including the first — substitutions {tool}, {desc}, {offset}.
  • On rotary index: after each indexed G0 A move, 3+1 work only — substitutions {angle}, {axis}.
  • Program end: after the custom footer, before the end codes.

One G-code line per row; a blank box means nothing is emitted. Events that support it list their substitutions under the box, replaced at export time. Lines are emitted verbatim, so on a Heidenhain-based post write Klartext, not G-code.

Overriding any field (Advanced tab)
  1. Pick a group: Emitter & file, Number format, Comments, Program frame, Motion words, Arcs, State codes, Spindle & coolant, Tool change & length comp, Cutter compensation, Rotary, Control capabilities — or "All fields".
  2. Pick a field: the help panel below explains what the field does as the writer actually consumes it, gives an example where useful, and shows what the base post currently uses (e.g. "Base (Haas) uses: Yes").
  3. Set the value: the editor matches the field's type — a dropdown for choice fields, Yes/No for booleans, a number spinner for numerics, plain text otherwise — so you cannot type a value the emitter would not understand.
  4. Add / set puts the override in the table; Remove selected takes it out.
  5. Save validates everything against the backend — an invalid override keeps the dialog open with a "Could not save" warning instead of saving a broken post.
Utility controls
Name / Description / Based onIdentity. "Based on" is the built-in base the post inherits every unset value from.
Basic > Smoothing line / File extension / Program number / Work-offset schemeThe four common overrides. Blank text (or "Inherit from base" in the combo) = the base's live value, shown in the placeholder.
Snippets (five event boxes)Literal lines injected at Program start / Before first tool / On tool change / On rotary index / Program end, verbatim and in order, with {placeholder} substitution where listed.
Advanced > group + field pickers, Add / set, Remove selectedOverride any post field via a Field / Value table. The help panel documents the field and the base's current value; typed values are coerced to the field's real type on save.
Save / CancelSave creates the post (New / Duplicate) or updates it in place (Edit). Backend rejects invalid overrides and the dialog stays open.
Watch out for
  • A blank Basic field means inherit, not "none". A Haas child with a blank Smoothing line still emits G187 P2. To force an empty string, set the field explicitly on the Advanced tab.
  • An unknown {placeholder} in a snippet line is not an error — the line is written with the brace text as typed, so you see the typo in the file rather than losing the export.
  • Changing "Emitter (code path)" on a child of an ISO base is almost never right — if you want Klartext, duplicate the Heidenhain post instead.
  • Overrides from a newer or retired schema still round-trip: the Advanced table keeps them verbatim so they can be removed.

The Machines tab: machine library

A machine entry bundles a post with the iron's own facts — kinematics, limits and options. Pick the machine at export and it supplies both the dialect and the checks; the machine, not the post, is the primary selector.

The left column lists your machines with New and Delete beneath; the right side is the editor form, saved with the Save button. Name and Description identify the machine, and Post is the dialect it runs — any built-in or your saved posts.

Kinematics
  • Linear axes (X/Y/Z): counts linear axes only (3-5) — a 4-axis mill is 3 here plus the rotary below.
  • Rotary axis fitted: tick to open the rotary detail fields.
  • Letter and axis are independent on purpose: Rotary letter (A, B or C) is the address the control expects in the g-code, while Rotary turns about (X or Y) is the linear axis the table physically turns about — a control can address a Y-turning table as A.
  • Signs: Rotary sign X and Rotary sign Y (+1 / -1) convert Takshak's internal angle convention to the machine's right-hand one — flip it if a test cut rotates the part the wrong way.
Machine editor fields
PostThe post this machine runs. Picking the machine at export uses this post and greys the export dialog's own Post picker.
Rotary letter / Rotary turns about / Rotary sign X / Rotary sign YAddress letter (A/B/C), physical rotation axis (X or Y — export warns if it disagrees with the Setup tab's rotary axis), and the +1/-1 direction convention. Only the sign for the active axis is read; the other is greyed.
Max RPM / Max feedSpindle and feed ceilings (rpm, mm/min). The writer clamps over-limit values and the export finishes with a warning listing what was clamped.
Travel X / Travel Y / Travel ZUsable travel per axis in mm, checked at export against the span the program needs rather than absolute positions. 0 disables the check for that axis.
Spindle spin-up dwellSeconds of pause after the spindle is commanded on, before the first cutting move. Default 0 = off; use only when the control will not wait for a spindle-at-speed signal.
Default safe Z / G53 retract ZSafe Z (mm) seeds the export dialog's Safe Z when the machine is picked; G53 retract Z is the machine-coordinate retract height for Haas-style G53 retracts, 0 = home.
Options recorded
  • TCP option fitted (G43.4 / TRAORI / ...): records what the control actually has.
  • Extended work offsets fitted: likewise records what the control actually has.
  • Tool changer: manual, atc or turret.
Tip

Unticking Rotary axis fitted greys the rotary fields but keeps their values, so comparing setups never loses a hard-won sign convention.

Watch out for
  • The travel check is a warning, never a refusal — a program spanning more than the axis has cannot fit wherever zero is set, but you may be running a subset, so the numbers are shown and the file is still written. Where you set work zero is up to you.
  • Rotary letter and "turns about" are independent on purpose. Getting "turns about" wrong rotates the part the wrong way; export cross-checks it against the Setup tab and warns.
  • Z-axis rotaries are not offered — a table rotary turns about X or Y only.

Export G-code: the dialog, walkthrough

File > Export G-code (also on the workflow toolbar as Generate G-code) runs pre-flight checks, then opens the Export G-code dialog: pick ops, pick a machine or post, set the job flags, hit Generate, choose the file. The dialog remembers your choices for the session; the first export of a launch seeds from Preferences.

Ticked ops per-op toolpaths Machine OR post dialect + kinematics Options WCS · comp · cycles .nc
Export: tick the ops, pick a machine (it bundles its post) or a bare post, set the program options, Generate. A machine pick disables the post row — you always see which dialect will run.
Two refusals before the dialog opens
  • Quarantined ops: picked faces that failed verification after reopening the project are dropped from the list with a warning naming them — re-pick and Generate to include them.
  • "Spindle speed not set": any ticked-capable op with no spindle speed blocks the whole export — Takshak refuses to invent an S word (it used to emit 18000 rpm regardless of cutter; it no longer guesses). Set a speed in Op Config or pick a tool that carries one.
Picking operations
  • Every op, every part: "Operations to include" lists every op across every part, with All / None buttons and a live "n / n selected" counter.
  • Defaults: ops with a computed toolpath default ticked; an op you never previewed is greyed and unticked — its tooltip says to click Generate Toolpath on it first.
  • The rows are the program order: drag a row, or select one and use Up / Down. The active part's order is saved with the project and the Op Palette follows it; other parts' rows reorder that export only. Greyed rows cannot be moved.
  • Rest machining and order: a rest-machining op skips what earlier ops in its context already cleared. Move one relative to the ops it rested on and its toolpath is cleared — a notice names it and it drops out of the export until you regenerate it in the new order. Swapping two roughers among themselves changes nothing.
Machine or post
  • Machine is the primary pick: choose one and it supplies its post (shown, greyed, in the Post row) and its kinematics, and its Default safe Z is seeded into Safe Z.
  • "- none (choose a post) -": hands control to the Post picker directly; that list is your curated "Show in Generate" set.
  • Edit in PP Utility: the button points you to the Posts & Machines tab.

WCS is G54 through G59 (default G54). Units (G21, mm), Positioning (G90, abs), Feed mode (G94, u/min) and Plane (G17, XY) are shown but locked — other modes need value conversion the post layer does not do yet, and emitting the word alone would produce wrong-scale g-code; rotary ops still get their per-op G93 wrap. Safe Z defaults to 30.00 mm (or your Preferences / machine value).

Job setup
Operations to include (All / None, checkboxes)Which ops go in the program, emitted in Op Palette order. Previewed ops default ticked; un-previewed ops are greyed (no toolpath to export).
MachinePrimary selector: brings the machine's post, limits and Safe Z. "- none (choose a post) -" hands control to the Post row.
PostDialect used when no machine is picked; shows only posts ticked "Show in Generate". Greyed and display-only while a machine is selected.
WCS / Units / Positioning / Feed mode / Plane / Safe ZWCS G54-G59 (default G54); Units mirrors the post — G21 (mm) or G20 (inch) — and is not a switch; Positioning G90, Feed mode G94, Plane G17 locked; Safe Z default 30.00 mm.
Program endWhere the machine parks after the last operation: Work XY zero (G54 X0 Y0), Lift to safe Z only, Machine home (G53) or Stored home (G28). The lift to safe Z always happens first.
Output flags
Air blast (M7 / M9)Default on: M7 after each M3, M9 before each M5.
Length comp (G43 / G49)Default off. G43 H# per tool change from the tool's length offset register, G49 at job end; a register-less tool gets G49 (comp cancelled, not inherited).
Cancel comp (G40) before retractDefault on: G40 before every op-end retract, guarding against stale comp from a prior op.
Rotary positioningDrop whole turns (default) / Shortest way round / Absolute angle (unwinds). Applies to indexed and continuous rotary ops.
Canned drill cyclesDefault on. G81/G82/G83/G73/G85 where exactly reproducible; greyed on controls without G8x (GRBL, Siemens, Heidenhain, Okuma, Fagor).
Comments in G-codeDefault on. Off emits zero comments (motion identical); custom header/footer lines are written as typed either way.
Custom header / footerFree text. G/M/S/T/F/O/( lines pass verbatim; bare text is wrapped as a comment in the post's style. Header goes after the preamble, footer before the end codes.
GenerateAccepts the dialog and opens the save-file dialog; the emit runs with a progress dialog and Cancel.
Rotary positioning, in detail
  • Drop whole turns (keep direction): the default — exact, since a whole turn is the same orientation. It chooses how an op reaches its A angle after an earlier rotary op has wound the axis.
  • Shortest way round: never more than 180 degrees, but it can reverse an ordinary index — which matters with a brake or one-way clamp.
  • Absolute angle (unwinds): the machine unwinds every accumulated turn — measured at ~4000 revolutions after one long spiral.
Flag fine print
  • Length comp registers: G43 H# uses each tool's length offset register; a tool with no register gets G49, cancelling comp rather than inheriting the previous tool's — set registers on every tool or none.
  • Canned cycles scope: G81/G82/G83/G73 and G85 are emitted only where the hole motion is exactly reproducible by a cycle; helical bores and mixed-depth holes stay long-handed either way.
  • Controls without G8x (GRBL, Siemens 840D, Heidenhain TNC, Okuma OSP, Fagor): the tick is greyed with an explanatory tooltip and drilling is then always long-handed.
  • Comments on: the file carries the banner, tool table, op headers, summaries and notices; off strips every comment for controls that reject or mangle them — motion is identical.
  • Custom header / footer parsing: lines beginning with G / M / S / T / F / O / ( are written verbatim, bare text gets wrapped as a ( comment ) in the dialect's own comment style; the header lands after the preamble before the first op, the footer after the last op before the end codes.
  • Heidenhain posts: your custom header / footer lines must be Klartext, not G-code — they are emitted verbatim.

One capability rule is enforced live: while a dense 3D op (3D pocket clear / parallel / scallop / Z-level / ramp) is ticked, posts that cannot stream dense toolpaths — Heidenhain TNC — are greyed in both the Machine and Post pickers, with a tooltip naming the ticked dense ops. If your current pick was such a post the dialog falls back to one that runs, and restores your original pick the moment you untick the last dense op.

From Generate to a finished file
  1. Generate closes the dialog and opens the save-file dialog, pre-named from the part (or your Preferences filename template, {part} and {date} tokens) with the post's own extension — .ngc LinuxCNC, .nc Fanuc/Haas, .mpf Siemens, .h Heidenhain, .min Okuma — in your Preferences output folder when one is set.
  2. Emit: a progress dialog with Cancel runs the emit.
  3. Finish message: either "Export complete" with the line count, or "Exported with warnings" — spindle or feed clamped to the machine's Max RPM / Max feed, or the travel warning per axis whose required span exceeds the machine's entered travel, e.g. "X travel: this program spans 812.4 mm but the machine has 500.0 mm. It cannot fit wherever you set work zero". Warnings never block the file; the numbers make the situation obvious.
Watch out for
  • The export refuses outright when any op with a toolpath has no spindle speed — fix the op, it will not guess an S word.
  • Quarantined ops (unverifiable picked faces after a project reload) are silently absent from the list by design; the warning at open names them.
  • Units / Positioning / Feed mode / Plane are locked because only the mode code, not the coordinate values, would change — an inch-mode program with mm numbers would be a 25x scale error.
  • A greyed Heidenhain pick while dense ops are ticked is the capability gate, not a bug: the Klartext emitter cannot stream dense 3D toolpaths yet. Chained ops (contour / drill / pocket) export to Klartext fine.
  • "Exported with warnings" means the file was written but is not exactly what was asked: clamped spindle/feed or a travel span the machine does not have. Read it before running the program.
  • Each op's program comment includes a one-line summary (tool D, shank, stepdown/stepover, tabs, stock, S, F) — with Comments in G-code off, none of that is in the file.

Project files (.tks)

A .tks file is the whole job in one place: every part's geometry, orientation, setup, stock, detected features, contexts and operations, plus resolved copies of the tools, machine and post the job used. Geometry is embedded in the file, not referenced by path, so a project opens identically on any seat even after the source files move.

Saving and reopening
  • Save: File > Save Project (Ctrl+S) or Save Project As… (Ctrl+Shift+S); both are enabled once a part is loaded.
  • Reopen: File > Open Project… (Ctrl+Shift+O) or from the recent list.
  • Open Recent: lists recently imported PARTS as well as Projects — picking a part re-imports the model file, it does not reopen a saved job.
  • Atomic write: a power cut mid-save cannot truncate an existing project.
  • Backup copy: with Preferences > Files & Output > "Keep a .bak when overwriting" (on by default for project files), the previous version is kept beside the new one as <name>.tks.bak.
File commands
Save ProjectCtrl+S. Saves to the current .tks; keeps a .tks.bak first when the preference is on (default on).
Save Project As…Ctrl+Shift+S. Opens in the Preferences > Files & Output > Project folder when one is set, else the last-used folder.
Open Project…Ctrl+Shift+O. Reopens a .tks; runs geometry verification and reports anything that did not survive.
Close ProjectCtrl+W. Closes the job; unsaved work always prompts with an offer to save.
Toolpaths in the file
  • Default: toolpaths are NOT stored — an op reopens as if never Previewed and is regenerated on demand.
  • Reopen-and-export without regenerating: turn on Preferences > General > "Save generated toolpaths in the project file"; each generated toolpath is then stored inside the .tks and restored on open.
  • Fingerprint gate: a toolpath is restored only if it still matches — a fingerprint over the op's parameters, the part fields that feed the kernel, the resolved tool, the geometry digest AND the app version is recomputed at open; any mismatch silently drops that toolpath back to "Not generated".
  • App updates: a kernel fix in a newer build therefore forces regeneration rather than shipping the old build's motion.
  • File size: the file grows by the toolpath size — a 7-million-line finishing op is about 400 MB.
Crash recovery
  • Interval: while you work, Takshak writes a crash-recovery snapshot on the interval set in Preferences > Files & Output > "Recovery point every" (default 5 min; 0 turns it off).
  • Location: the snapshot goes to Takshak's own folder and NEVER touches your project file.
  • Lifecycle: it is deleted on every successful manual save and on a clean exit — so one found at the next launch means the app did not close cleanly, and you get a "Recover unsaved work" prompt offering the recovered version.
  • Safe open: opening the recovered version overwrites nothing — your own file is untouched, and the first save of the recovered work asks you where to put it.
  • Status bar: shows the time of the last recovery point.

On reopen, every face the document references is verified against the reopened geometry: a saved fingerprint of each face's centroid and area is recomputed and compared. Face ids in a CAD kernel are visit-order counters, not permanent names, so a selection can silently drift to a different face across a save — the verification catches exactly that. Any op whose picked faces no longer verify is QUARANTINED, and the "Project opened with warnings" dialog reports how many operations "have been held back: they will not compute and will not export until their faces are re-picked".

The three quarantine gates
  • Generate: refuses with "Selection needs re-picking" and tells you to re-pick the op's faces in the viewport, then Generate again.
  • Export: drops the op from the list entirely — "Some operations cannot be exported" names them; the rest of the job still exports.
  • Op Palette: shows a pulsing critical badge on the row, with the reason in its tooltip.
  • Clearing it: re-picking the op's faces in the viewport clears the quarantine; the flag survives save/reopen deliberately, so a drifted selection can never launder itself into a clean file.
Watch out for
  • Open Recent: re-imports part FILES; only entries under its Projects header reopen saved jobs.
  • Library copies: the libraries inside the file are copies — if a tool referenced by the job is missing from this seat's library, or the job's material is not in your material library, the open warns you; restored ops keep their saved feeds, but NEW ops fall back to tool defaults.
  • Quarantine: a quarantined op is cleared only by actually re-picking its faces — nudging a stepover or other parameter does not make it exportable again.
  • Saved toolpaths: dropped silently when anything they depend on changed — including updating Takshak itself; expect a regeneration pass after an app update.

Nesting and placements

Nesting lays multiple copies of a part — or several different parts — on the stock plate, and multiplies each operation across its part's copies at export. Open it from the workflow toolbar's Nesting action; the dialog (titled "Nesting -- same-part copies") is non-modal, so the viewport updates live as you edit.

master (wireframe) copy 1 copy 2 copy 3
Nesting: the MASTER keeps its wireframe overlay so you always know which instance owns the ops; copies render solid-only. At export every placement replays the master's toolpaths at its own position.

The first placement in the list is the nest HOME: the master part renders there with its wireframe overlay. Every further row renders as a solid-only copy in a darker tint — copies read as copies by shade, never by missing geometry.

Build a grid layout
  1. Set the grid: under Grid auto-array, set Rows and Cols (both default 2) and Gap X / Gap Y (both default 5.0 mm).
  2. Generate: click Generate grid — the pitch is the part's bounding box plus the gap, shown live as a hint line.
  3. Check bounds (optional): enter a Stock plate Width and Height (0 = no bounds check); an amber warning line reports part-to-part overlaps and copies that fall off the plate, live as you type.
Irregular layouts
  • Copies table: each row is an X offset, Y offset (mm) and Rotation (deg) from the part as loaded, with Add copy, Remove selected and Clear (no nesting) beside it.
  • Viewport drag: copies can also be dragged in the viewport while the dialog is open.
Multiple different parts
  • Add part...: imports another model into the nest.
  • Active dropdown: switches which part you are editing.
  • Remove part: drops the active part and its copies; disabled while only one part is loaded.
  • Mirror X / Mirror Y: reflect the ACTIVE part about its bounding-box centre; click the same button again to unflip.
Nesting controls
Generate gridBuilds Rows x Cols placements at part-bbox + gap pitch. With other parts loaded, the grid is anchored clear of them.
Copies (dx, dy mm, rotation deg)The placement table. Row 1 is the home the master renders at; edits push to the viewport immediately.
Clear (no nesting)Back to a single copy. The footer reads "1 copy (no nesting)" / "N copies".
Mirror X / Mirror YReflects the active part about its bbox centre. Clears AFR + ops (they must re-detect); WCS unchanged.
Stock plate Width / HeightOptional bounds check in mm; 0 disables it.

At export, every selected operation is tagged with its own part's placements and the G-code writer multiplies it across those copies, all under one work offset. The Generate G-code dialog lists ops from every part in the nest, so nothing is silently left behind just because it belongs to a non-active part.

Watch out for
  • Warnings, not blocks: the overlap and off-plate checks are warnings only — an overlapping layout will still export.
  • Mirror before you program: mirroring rewrites the geometry and wipes detected AFR features and operations on that part so they re-detect on the mirrored part; the WCS is unchanged.
  • Rotation: rotation in the table is about the part's own origin as placed; verify an angled copy visually before exporting.

Preferences

The Preferences entry on the menubar opens a ten-tab dialog, sized to your screen (each tab scrolls when it must). Every default equals the behaviour the app shipped with, so nothing changes until you edit a value, and every numeric field is bounded to the same range the app itself enforces. OK applies; Cancel discards.

General
LanguageEnglish, French, German, Italian, Japanese, Korean or Spanish. Applies at the next start — the whole window is built in the chosen language, so nothing is left half-translated. Numbers keep a decimal point in every language, because G-code does; G-code comments and the writer's program stay English on purpose.
Display unitsMillimeters (mm) or Inches (in). Display only — stored values stay mm and G-code units stay controlled by the post (G21 / G20).
Remember the last import folderOn.
Ask before quittingOff; UNSAVED work always prompts regardless.
Save generated toolpaths in the project fileOff; see Project files.
Check for updates when Takshak startsOn; quiet, once a day, nothing downloads without asking.
Viewport & Display
Viewport themeDark (default), Light, Blueprint, Neo; independent of the window theme.
Grid placementStock bottom (rest part on grid) or Model XY plane (grid at z=0).
Model colorOverrides the part colour in every theme; "Theme default" restores each theme's own.
Wireframe overlayOn.
Protect the graphics driver on heavy meshesOn: above 500,000 triangles the wireframe overlay is switched off for that part.
Highlight the face or edge under the cursorOn; each hover costs a backend round trip — turn off if picking feels sluggish.
Bounding box shownOn.
Model opacity100 %.
ProjectionPerspective (default) or Orthographic.
Stock opacity18 %.
Wireframe edge angle20.0 deg — edges sharper than this are drawn.
Scene brightness1.0.
Navigation
Orbit speed0.5.
Zoom per wheel step10 %.
Invert zoom directionOff.
Click / drag threshold3 px — raise it if intended picks keep turning into orbits.
Simulation
Playback speed1.0 x (where the slider starts).
Rapid rate5000 mm/min — the G0 rate the simulation and cycle-time estimate assume.
Show the cut trailOn.
Trail limit600000 segments — lower on a weak GPU.
Frame interval16 ms (= 60 fps); 33 for 30 fps on integrated graphics.
Safety Heights (these MOVE THE TOOL; they seed NEW operations)
Clearance above stock50.0 mm — the plane rapids cross at.
Retract above stock10.0 mm — the lift between passes.
Rotary clearance25.0 mm, measured outboard of the stock OD — a chuck or steady rest needs more than the nominal diameter suggests.
Rotary retract5.0 mm, also measured outboard of the stock OD.
Machine & Post
Default postlinuxcnc.
Default machine idBlank; remembered only for the session, so every restart falls back to LinuxCNC. A machine, when set, supplies both the post and the kinematics.
Default material(none - use tool defaults); feeds and speeds for new operations are computed from it and the chosen tool.
Default work offsetG54 (G54-G59).
Default safe Z30.0 mm.
Rotary positioning defaultDrop whole turns (keep direction) [default], Shortest way round, or Absolute angle (unwinds); overridable per export.
AFR
Blocked featuresShow all detected features (default) or Hide features whose ops are blocked (blocked = inaccessible / buried / obstructed / tilted, needing a flipped or indexed setup).
Run detection when a part loadsOff.
Complexity guard1500 faces — parts above this skip detection unless you choose Run anyway.
Time budget180 s — detection gives up after this; 0 = no limit.
Files & Output
G-code folderBlank = last-used folder, with a Browse... button.
Filename{part} (also {date} = YYYY-MM-DD; the post supplies the extension).
Open the NC file after exportOff.
Keep a .bak when overwriting (NC files)Off.
Project folderBlank = last-used; kept separate from the G-code folder.
Recovery point every5 min (0 = off).
Keep a .bak when overwriting (project files)On — a project file is the only copy of a job; an NC file can always be re-posted.
Performance
Warn before compute over30 s — estimated computations longer than this ask first.
Log detailDebug (verbose) / Info (default) / Warnings only / Errors only; applies on restart, and Debug is what a bug report needs.
Watch out for
  • No Machining Defaults tab: deliberately absent (feeds, speeds, stepover, stock-to-leave) — those come from the tool and the per-op parameters.
  • Safety Heights: apply to NEW operations only — changing them does not touch heights already set on existing ops.
  • Log detail: changes take effect on the next launch, not immediately.

Help menu

Everything for keeping the install current and getting effective support lives under Help: the manual, updates, diagnostic bundles, licence release and the About box.

Help menu entries
User ManualOpens the manual HTML in the default browser.
Check for Updates…Manual update check; works even when the startup check is turned off.
Export Diagnostic Logs…Redacted zip of logs + preferences + build identity; project file only if ticked.
Deactivate Licence on This Machine…Releases the activation server-side, clears it locally, closes Takshak.
About Takshak…Version, build SHA, channel, build date, licence status.
Check for Updates…
  • Manual check: asks takshakcam.com whether a newer Takshak is available for this licence; nothing is automatic.
  • Update Available dialog: names the version, file and size, with Download and Later; the download goes to your Downloads folder and is verified before anything runs, then "Install now" launches the signed installer and Takshak closes.
  • Expired update period: if a newer version exists but your licence's update period has ended, the dialog names the version and says so — nothing is offered for download.
  • Startup check: the same check runs quietly once a day at startup (Preferences > General > "Check for updates when Takshak starts", on by default); its only visible outcome is a status-bar line when something newer exists, and failures are logged, never shown.
  • Privacy: your licence key is never sent — the check uses the activation token the app already holds.
Export Diagnostic Logs…
  • Contents: a zip to attach to a support email — Takshak's log files, preferences and build details.
  • Redaction before writing: file paths are reduced to file names, host names are hashed, and your licence key is never included (every text member is additionally scrubbed for the key pattern).
  • One opt-in: the checkbox "Include the open project file (it contains your part geometry)" — enabled only while a project is open, and off unless you tick it.
  • Save: click Save Bundle…, choose where; the confirmation shows the size and file count with a Show in Folder button.
Manual, licence release and About
  • User Manual: opens this manual (workflow plus one page per operation) in your browser.
  • Deactivate Licence on This Machine…: releases this machine's activation so the licence can be activated on another machine (see Licensing); Takshak closes afterwards.
  • About Takshak…: shows the version, the build SHA with channel and build date, and the licence status (id and updates-until date).
Tip

QUOTE BOTH THE VERSION AND THE BUILD SHA in every support request — two installers stamped with the same version number can be different builds, and the SHA is what tells them apart.

Watch out for
  • Download size: the update download is 100+ MB; on a shop connection start it when the machine is not mid-job.
  • Useful bug reports: set Preferences > Performance > Log detail to Debug, restart, reproduce the problem, THEN export the diagnostic bundle.
  • Air-gapped shops: the startup check simply never fires without a network; nothing blocks or nags.

Licensing and activation

Takshak is licensed per machine with movable activations. Without a valid licence the app does not run — the 30-day money-back guarantee is the trial.

First activation
  1. Launch: on first run the "Activate Takshak" dialog appears before anything else.
  2. Enter the key: type the licence key from your purchase email — the field shows the shape, TK-XXXX-XXXX-XXXX-XXXX; case and stray spaces do not matter, the key is normalised for you.
  3. Activate: click Activate. Activation needs the internet once; after that Takshak runs fully offline.
Activation dialog
ActivateSends the key for verification on this machine. Disabled until something is typed; shows "Activating..." while the server call runs.
QuitAlways live, even mid-activation — a hung network never traps you at the dialog. Quitting means the app does not start.
Moving a seat
  • Seats: a licence has a fixed number of seats; each activation occupies one machine.
  • Release first: Help > Deactivate Licence on This Machine… — Takshak confirms, settles any unsaved work, releases the activation on the server, then closes; the same key then activates the next machine.
  • Server unreachable: the deactivation fails cleanly and nothing changes; retry when the network is back.
  • Uninstalling: the Windows uninstaller offers to release the licence before it removes the app. If it cannot reach Takshak to do so, it says the licence is still tied to this machine — reinstall and use Help > Deactivate Licence on This Machine, or write to support and it is unbound by hand.
  • Rejected activation: if the dialog reappears on a machine that used to run — typically after a hardware change — it shows why the stored activation was rejected; note the exact message for support.
Contacting support (support@takshakcam.com)
  • Quote: the version AND build SHA from Help > About Takshak…, plus the licence status line from the same box.
  • Attach: a bundle from Help > Export Diagnostic Logs….
  • Never paste your full licence key into anything but the activation dialog; the diagnostic bundle deliberately never contains it, and support does not need it to find your licence.
Watch out for
  • Deactivating closes Takshak unconditionally once the release succeeds — save first; the dialog settles unsaved work before the server call for exactly this reason.
  • Updates entitlement is time-based: builds released after your licence's updates-until date are named by Check for Updates but not offered; the installed app keeps working.
Part II — The operations

How to read an op card

Every operation gets one card with the same five fields:

Knobs live in two panels: the Op Config panel on the right is universal (feeds, stepover, cut direction — the same rows for every op, greyed when irrelevant), and the Op Specific panel on the left carries the per-op knobs (tip angle, target diameter, finish pass…). Cards tag each control with where it lives.

One behaviour shared by every op

When a single feature in a batch is un-machinable (tool too big for the notch, draft self-intersects, nothing left to clear), the op skips that one feature and flags it with an amber notice on the Op Palette row — the rest of the batch still cuts. It does not abort the whole operation. The notice looks like this:

! 1 feature skipped · tool wider than pocket

Concepts at a glance

Five ideas recur on almost every card. Read these once and the rest of the guide goes fast.

Stepover & stepdown

Stepover is how far the tool shifts sideways between adjacent passes (radial). Stepdown is how deep it drops between layers (axial). Together they trade cycle time against tool load and finish.

TOP VIEW — stepover stepover SIDE VIEW — stepdown tool stepdown ↕ between layers
Stepover spaces the passes across the floor; stepdown stacks the layers down the wall.

Climb vs conventional

Same spindle rotation, opposite travel. Climb (the default for finishing) feeds so the cutter edge enters the full chip and thins to zero — cleaner walls, lower heat into the part. Conventional reverses it; still useful on hard-to-hold work or older machines with backlash. Most cards expose this as the Cut direction row; some ops also offer alternating (flip each layer to save link moves).

CLIMB feed ↓ , chip thins to zero CONVENTIONAL feed ↑ , chip thickens
Spindle turns the same way in both; the travel direction relative to it is what flips. Climb is the finishing default.

Plunge vs helical entry

How the tool gets down into the cut. A straight plunge is simplest but loads the tool tip hard and needs a centre-cutting end mill (or a pre-drilled start). A helical entry spirals down at a gentle ramp angle — kinder to the tool, no plunge-rated centre needed. Ops that clear material (Face, Pocket, Sloped Pocket) expose an Entry mode row to pick between them.

PLUNGE straight down — needs centre-cutting tool HELICAL spirals down at a ramp angle — gentle
Both end at the same depth; the helix gets there on a ramp so no single move is a full-width plunge.

Stock to leave & the finish pass

Roughing stops a hair short of the final surface, leaving a thin even skin (Wall stock on the walls, a floor allowance for the finish pass). A separate finish pass then takes that skin off in one light cut, so the final surface is made by a single clean pass instead of the ragged last roughing step. Clearing ops (Pocket, Ramp Pocket, Plug Clear, Sloped Pocket) carry a Finish pass toggle.

TOP VIEW roughing rings stop short … … finish pass cleans the wall
The gap between the last roughing ring and the green finish pass is the stock-to-leave.

Holes, counterbores & notches Drill · Bore

AFR buckets every round feature into three sections — Holes (through or blind bores), Counterbores (a recess sitting above a smaller bore), and Notches (sub-3 mm partial arcs, typically where a slot meets the edge). All three offer the same two ops: Drill for on-centre twist drilling, and Bore when the hole is wider than your cutter and must be interpolated to size.

Drill AFR button: Drill

Peck-drills one or many identical holes on centreline in a single op.

clearance retract / top bottom Z drill peck 1 peck 2 peck 3 dwell (G4) retract
Each peck cuts down one bite (solid), lifts to clear chips (dashed), then plunges again — the last peck clamps exactly at the bottom, with an optional dwell.
feed (cut)rapid / retract
When AFR offers it

On any round hole, the bore of a counterbore, or a sub-3 mm notch — features small enough that a twist drill on centreline is the right tool.

How it cuts

Pure centreline plunging, no orbiting. It rapids to clearance over the first hole, drops to feed height and plunges straight down. With a peck depth set, it bites that much, retracts to clear the chip, rapids back to just above the cut and repeats — clamping the final peck at the hole bottom. For a group of holes, one op covers all positions: lift, traverse at clearance, repeat.

Key controls
PlungeOp ConfigFeed for the down-strokes — the actual drilling rate.
Peck depthOp SpecificBite per peck. 0 drills the whole depth in one shot; a value breaks it into chip-clearing pecks (use on deep or gummy material).
Dwell (s)Op SpecificPause at the final peck bottom to break the chip — handy for breakthrough on laminates.
Retract modeOp SpecificFull lifts to retract height between pecks (max chip evacuation); partial lifts only to feed height to save time on shallow work.
Watch out for
  • Bottom Z is a hard stop — there is no breakthrough overshoot, so a through-hole stops at the back face and the drill-point cone can leave the far side incomplete. Set bottom deeper yourself if you need a clean break-through.
  • It gives you the drill diameter — no interpolation. To open a hole wider than the bit, or to finish a wall to size, use Bore.
  • If a Drill op previews with no down-strokes, your top/bottom are mis-set (degenerate heights emit a placeholder, not an error).
Pairs with

Bore — drill the pilot, then bore to size.

Bore AFR button: Bore

Helically interpolates an end mill to open a hole to a target diameter, with optional multi-pass moat clearing.

TOP VIEW target Ø orbits grow inside-out tool SIDE VIEW — helix top flat finish loop at floor pitch/rev
The cutter spirals down the wall (real G2/G3 arcs), dropping by the pitch each revolution, and cleans the floor with one flat loop. A target much wider than the tool needs several concentric passes built inside-out.
When AFR offers it

On a hole or counterbore that must be opened up or finished to a target diameter larger than your end mill — counterbore recesses cleared to the flat floor, or pre-drilled holes sized to final.

How it cuts

Rapids to centre, plunges to the cut top, swings out on a tangent half-arc to the wall, then descends in full-revolution helical arcs until it reaches the bottom. It finishes with one flat full revolution to clean the wall and peels off on an opposite-handed lead-out so there is no witness mark. With more than one pass it cuts concentric helical rings at growing radii (a chip-clearance moat), finish pass at the wall by default.

Key controls
Target ØOp SpecificFinal bored diameter (defaults to the detected hole). Must exceed the tool diameter.
PassesOp Specific1 = straight to the wall; >1 builds concentric chip-clearance rings — needed when the target is much wider than the tool.
Cut orderOp SpecificInside-out puts the sizing pass last at the wall (standard); outside-in cuts the wall first.
StepoverOp ConfigRadial spacing between concentric passes (only used when Passes > 1).
StepdownOp ConfigZ drop per revolution — the bore pitch. 0 = auto (10% of tool Ø). Smaller = finer wall.
Cut directionOp ConfigClimb (CCW orbit) or conventional (CW). Geometry identical; cut sense reverses.
Wall stockOp SpecificStock left on the wall for a later finishing pass.
Feed / PlungeOp ConfigHorizontal cutting feed / the Z-only centre plunge that bootstraps the helix.
Tool

An end mill smaller than the target diameter (it has to orbit). A same-size or larger tool is refused.

Watch out for
  • A single pass leaves uncut material in the centre when the target is more than 2× the tool — the helix only orbits at the final radius. Use multi-pass with a stepover to clear the middle.
  • Passes > 1 needs a stepover, and passes × stepover can't exceed the available radial reach — both are checked with a clear error.
  • Between multi-passes it fully retracts and re-approaches (safe, but adds air time).
Pairs with

Drill — pilot the hole first, then bore to size.

Cone cavities Helical Ramp · Form Plunge

A cone cavity is a conical recess — a countersink, a chamfered hole mouth, a tapered seat. AFR offers two ways to cut it, and the choice is really a choice of tool: a standard end mill that spirals down the wall (Helical Ramp), or a matched V-bit that forms the whole cone in one plunge (V-bit Plunge).

HELICAL RAMP — end mill spirals down Ø mouth tip any flat / ball / bull end mill V-BIT PLUNGE — one stab on centre V-bit cone = the chamfer match the V-bit angle to the cone
Same feature, two tools. The end mill tracks the taper on a tightening spiral; the V-bit's own cone is the chamfer, so it forms in a single plunge. Pick the V-bit for sharp tips an end mill can't reach.
Helical Ramp AFR button: Helical Ramp

Spirals a standard end mill down the cone wall, shrinking the orbit linearly so the edge tracks the taper to the tip.

When AFR offers it

On a cone cavity you want to machine with a normal end mill (flat, ball or bull nose) rather than a matched V-bit — usually because no matched V-bit exists, or the cone is too big to form in one plunge.

How it cuts

After approaching at the mouth (optionally on a quarter-arc lead-in), it runs a continuous helix whose radius shrinks linearly with depth — from the mouth radius to the tip radius — emitted as fine segments because a variable-radius spiral isn't a true arc. At the floor it cleans up with one full revolution and peels inward on a lead-out. Climb orbits CCW; conventional mirrors the whole path about the cone axis to flip to CW, gouge-safe.

Key controls
Top ØOp SpecificCone mouth (big-end) Ø — sets the helix start radius. AFR-seeded; the tool must fit inside it.
Bottom ØOp SpecificCone small-end Ø — sets the helix end radius (0 for a sharp tip). Driven per cone in a group.
Pitch / revOp SpecificZ descent per revolution. 0 = auto (10% of tool Ø). Tighter = smoother wall, more revs.
Lead radiusOp SpecificQuarter-arc lead-in/out radius (~10% tool Ø). 0 skips leads (plunge straight at the helix start) for tight cones.
Cut directionOp ConfigClimb (CCW spiral) or conventional (mirrored to CW). No gouge or tangency loss either way.
Feed / PlungeOp ConfigHelix/lead cutting feed / the Z plunge into the mouth before the helix starts.
Tool

Any end mill family (flat / ball / bull nose) — not a V-bit. It must be smaller than the mouth, and narrow enough to reach the tip.

Watch out for
  • Unlike the old kernel that silently clamped and gouged, v0.9 refuses a cutter that would push through the cone wall on the way down — fit a smaller tool, or switch to V-bit Plunge for sharp-tipped cones.
  • A bad cone in a group is skipped with an amber notice; the machinable cones still cut.
  • Sharp-tip cones auto-skip the floor finish loop — the helix already arrived at the point.
Pairs with

V-bit Plunge — the other way to cut the same cone.

V-bit Plunge AFR button: V-bit Plunge

Forms the cone in a single matched-V-bit plunge on centreline, optionally pecked.

When AFR offers it

On a cone cavity that a V-bit (or dedicated countersink) whose included angle matches the cone can form in one shot. The bit's own cone is the chamfer — no orbiting needed.

How it cuts

Pure centreline plunge, no horizontal cutting at all. It rapids to centre, drops to feed height and feeds straight down from mouth to tip — the V-bit flank cutting the cone in one shot. A peck depth breaks deep cones into bites with a chip-clearing lift between each; it exits by retracting off the floor.

Key controls
PlungeOp ConfigFeed for the down-strokes — the dominant (and only) cutting parameter here.
Peck depthOp SpecificBite per peck on deep cones. 0 = one straight plunge.
Dwell (s)Op SpecificPause at the bottom for chip clearance.
Retract modeOp SpecificPartial (default) lifts only to feed height between pecks — the cone shape sheds chips, so a full lift is wasted travel; full for max evacuation.
Tool

A V-bit / countersink whose included angle matches the cone, and whose diameter fits the mouth. The op enforces the fit; angle match is your call.

Watch out for
  • A V-bit wider than the cone mouth is refused (the flange would crash the surrounding flat). A narrower or wider angle is not blocked — a wider bit gouges the flat, a narrower one under-cuts. Match the angle.
  • This is the right pick for sharp-tipped cones that Helical Ramp refuses — the V-bit reaches the point a cylindrical end mill can't.
  • Feed rate does nothing here — there's no horizontal cut. Only plunge rate matters.
Pairs with

Helical Ramp — the end mill alternative for the same cone.

Threads Thread Mill

Takshak threads by milling, not tapping: a thread-mill cutter orbits the hole or boss on a fixed-pitch helix and the 60° form comes from the tool's tooth profile. There is no tapping cycle in 1.0 (it is on the roadmap) — and unlike a tap, a thread mill cannot break off in the hole and cuts any diameter its tooth reaches.

Thread Mill User Defined Ops panel: Thread Mill · Pick hole/OD

Cuts an internal or external thread as real G2/G3 helical arcs — the cutter's reference point rides the nominal (major-diameter) cylinder, rising exactly one pitch per revolution.

How it cuts

This op is operator-authored, never an AFR suggestion — a plain drilled hole is not a thread, so the app will not speculate. You pick the hole's (or boss's) cylindrical face; the centre and Z extent come from the pick, the thread spec comes from you. Internally the tool orbits inside the hole at orbit radius = major radius − tool radius (the tooth reaches outward); externally it orbits outside the boss at major radius + tool radius. The helix direction follows the thread hand and the cut direction.

Key controls
Thread sizeOp SpecificStandard-thread dropdown (M-series and more): picking one fills Major diameter and Pitch from the built-in table. Or set both by hand for a custom thread.
Major diameterOp SpecificNominal thread diameter, mm. Default 6.
PitchOp Specificmm per revolution; required > 0. Default 1.0.
Thread sideOp SpecificInternal (thread inside a hole) or External (thread on a boss / OD).
HandOp SpecificRight (default) or Left.
Cutter styleOp SpecificSingle-point: one tooth, a continuous helix of length÷pitch revolutions traces every groove — the common general-shop tool. Full-form (multi-profile): the tooth row spans the thread, ONE revolution rising one pitch cuts it all; if the tool's tooth span is shorter than the thread you get an advisory note. Circular drill-thread (bore+thread / thriller type): bores the core and mills the thread in one top-down pass; its orbit direction is derived from the hand, so the Cut direction row greys.
Tooth spanOp SpecificFull-form only: the tool's axial tooth-row length, mm. 0 = assume it spans the thread.
Passes / StepoverOp Specific / Op ConfigRadial spring passes: n passes stepping outward by the stepover to sneak up on the finished form — tough materials or fine finish. Default 1 pass (full depth).
Lead-in ROp ConfigFlat tangent lead arc onto the helix, mm; 0 = none. Default 0.4.
Cut directionOp ConfigClimb (default) or conventional; greyed for Circular drill-thread (direction is derived).
Tool

A thread-mill cutter matching the pitch (single-point, full-form, or a bore+thread combination tool). For an internal thread the tool must be smaller than the minor bore — the kernel refuses a cutter that cannot fit.

Watch out for
  • The Cut mode row displays "helical" and stays greyed — a thread IS a helix; there is nothing to choose.
  • Full-form with a tooth row shorter than the thread leaves the far end uncut — the op posts an advisory; switch to single-point or a longer tool.
  • No tapping cycle exists in 1.0 — never post-process a thread-mill program into a tap by hand: a tap needs spindle-synchronised feed the program does not encode.

Faces Facing

AFR finds the flat top faces it can reach straight down onto — the top of the stock, or any raised flat boss — and offers a single op to skim them level.

Face AFR button: Face

Skims a flat top face level with one continuous rectangular spiral per depth.

TOP VIEW — rectangular spiral, outside-in margin pad lead-in stepover
One unbroken spiral winds from the perimeter inward (or inside-out). The cutter overhangs the edge by the margin so it clears fully; a tangent lead-in eases onto the start.
When AFR offers it

On any flat top face it can reach with a straight-down approach. Use it to true up the stock top or a raised boss to a clean reference surface.

How it cuts

One continuous rectangular spiral per Z level (not separate rings), laid over the face bbox plus the margin pad, with the cutter centre radius-compensated to reach the edges exactly. It steps down to the bottom; the first level enters by plunge or helix; climb winds CCW, conventional CW, alternating flips each level. With a finish pass on, roughing stops above the floor and a final full-face spiral skims it flat.

Key controls
StepoverOp ConfigSideways spacing between spiral passes — tighter = finer surface, slower.
StepdownOp ConfigDepth per Z level when the face has thickness to remove.
XY marginOp SpecificExtra XY overhang per side beyond the face so the cutter clears the edges fully.
Facing directionOp SpecificSpiral progression — outside-in (perimeter inward) or inside-out.
Entry modeOp ConfigStraight plunge, or helical descent for a gentler entry. (see concepts)
Cut directionOp ConfigClimb / conventional / alternating winding.
Finish pass + Floor stockOp SpecificLeave a thin skim during roughing, take it off in one final flat spiral.
Keep tool downOp ConfigFeed diagonally across the cleared face to the next level instead of retracting.
Watch out for
  • Facing is a planar skim — there are no walls to gouge, so the helix and lead-in only shape how the cutter reaches depth.
  • If the tool is too big for the face the radius-compensated boundary collapses and the op emits nothing — check tool Ø against face size if a Face op shows no path.
  • The margin lets the cutter overhang the edge — make sure there's air (no fixture/clamp) out to bbox + margin.

Pockets Pocket

A pocket is a closed-wall recess to clear, navigating around any islands (bosses) standing on the floor. AFR offers one clearing op that auto-picks its strategy from how walled-in the cavity is.

Pocket AFR button: Pocket

Clears a closed pocket to its floor with concentric offset rings, skirting any islands.

TOP VIEW — concentric rings, island skirted island helix entry stepover stock
Rings step inward from the wall and circle the island, all held a tool-radius + stock off the true walls. A helix drops the tool in at an interior anchor.
When AFR offers it

On any closed-wall cavity. The kernel auto-classifies it — fully walled, mixed (some edges open to void), or fully open — and switches entry/strategy accordingly.

How it cuts

Concentric offset rings inward from the boundary (discrete loops linked by feeds), stepped down to the floor. Fully-walled pockets descend on a helix around an interior anchor; mixed pockets plunge in the open-edge void; fully-open ones face outside-in entering on a lead-in arc from air. Islands are skirted at tool-radius + stock; with a finish pass on, a final ring cleans the floor.

Key controls
StepoverOp ConfigSpacing between concentric rings.
StepdownOp ConfigDepth per Z level down to the floor.
Entry modeOp ConfigHelical descent (preferred on walled pockets) or straight plunge; auto-falls back to plunge when no helix fits.
Helical ROp ConfigHelix orbit radius; 0 fits the largest helix that clears the walls.
Cut directionOp ConfigClimb / conventional / alternating rings.
Wall stockOp SpecificWall finish stock — holds the cutter this far off every wall and island.
Pocket directionOp SpecificOutside-in or inside-out (inside-out honoured only on fully-walled pockets).
Finish pass + Floor stockOp SpecificFloor skim left during roughing, taken in a final ring pass (independent of wall stock).
Keep tool downOp ConfigLink levels at depth instead of retracting (fully-walled, island-free layers only).
Watch out for
  • Helical entry needs room. On a narrow walled pocket it falls back to a straight plunge — which only a centre-cutting end mill handles well. Worst case (no helix anchor and no open edge) it plunges into solid and warns; use a plunge-capable tool.
  • Islands are skirted, not climbed — Pocket clears the floor around a boss, it never machines the boss top.
  • If a requested option can't apply (helix won't fit, inside-out on a mixed pocket) the kernel emits an amber notice and cuts the rest anyway. Too small for the tool = the op fails; drop to a smaller cutter.
Through pockets — pick a wall

A pocket with no floor (a window through the part) has no floor face to pick. Pick one of its walls instead: the wall's window becomes the pocket, the floor is the part bottom, and the top is the window's mouth.

Pits Ramp Pocket · Ramp Finish

A pit is a closed cavity sunk into the part, with straight or inward-drafting walls. It's a two-op feature: Ramp Pocket hogs out the volume, then Wall Finish cleans the wall the roughing left as a stair-step. Run them in that order.

RAMP POCKET — clear, rings per level keep-tool-down link stock WALL FINISH — one ring per level lead-in walls draft inward
Left: each Z level clears with concentric rings, linking at depth. Right: the finish op stacks one constant-Z ring per level down the wall, easing on with a lead-in arc.
Ramp Pocket AFR button: Ramp Pocket

Volume-clears a drafted or straight pit with concentric rings, stepped down to the floor.

When AFR offers it

On a closed cavity with straight or inward-drafting walls. This hogs out the whole volume.

How it cuts

Plunges near the centroid and walks concentric rings inset from the mouth (each wall offset by its own draft + tool radius + stock), so on a drafted pit each deeper level's footprint is smaller. With keep-tool-down on (default) it stays at depth and feeds to the next level rather than retracting, lifting only on the last level. Cut direction is alternating by default (fastest for roughing); a finish pass adds a clean floor ring.

Key controls
Stepover / StepdownOp ConfigRing spacing / depth per level. 0 = auto (≈ half tool Ø).
Cut directionOp ConfigClimb / conventional / alternating. Alternating is the roughing default; climb for a cleaner left wall.
Keep tool downOp ConfigLink levels across the cleared floor instead of retracting (safe — a pit has no island).
Wall stockOp SpecificMaterial left on the walls for the Wall Finish pass.
Finish pass + Floor stockOp SpecificDedicated final floor skim at the true floor Z.
Watch out for
  • This is a clearing op — on drafted walls it leaves a stair-step scallop. Run Wall Finish after if the wall matters.
  • Size the cutter to the floor corners, not the mouth — on a drafted pit the floor footprint is the smallest.
  • A degenerate pit is skipped with an amber notice; the rest of the batch still cuts.
Pairs with

Wall Finish (pit) — run it after this to finish the walls.

Wall Finish (pit) AFR button: Wall Finish

Stepped Z-level wall finish inside a pit — one constant-Z ring per level down to the floor.

When AFR offers it

On the walls of a pit, as the perimeter finishing pass that cleans up what Ramp Pocket left rough.

How it cuts

At each cumulative depth it walks one constant-Z ring — the mouth outline inset by that level's draft + tool radius + leftover stock — so on a drafted pit each ring sits progressively further in. It's one orbit per level (rings stack to trace the wall), not concentric clearing. Keep-tool-down (default) stays down between rings for continuous contact; a lead-in radius arcs tangentially onto each ring instead of plunging into the wall.

Key controls
StepdownOp ConfigVertical spacing between wall rings. Smaller = finer finish, more rings.
Cut directionOp ConfigClimb (default for a clean wall) or conventional.
Keep tool downOp ConfigStay at depth and step to the next ring — no re-entry marks.
Lead-in ROp ConfigTangent arc onto each ring; 0 = straight plunge entry. Use it to avoid a dwell mark.
Wall stockOp Specific0 for a true finish; positive for a spring/semi-finish allowance.
Watch out for
  • Run this after Ramp Pocket — alone, the ring is buried in solid stock on its first pass.
  • It finishes the wall only — not the floor, and not the wall-floor fillet (an attached chamfer companion is composed as a separate pass).
  • With keep-tool-down off it re-plunges every level and can leave witness marks — prefer it on, or add a lead-in radius.
Pairs with

Ramp Pocket — clears the bulk first.

Plugs Plug Clear · Plug Finish

A plug is a raised feature — a boss or pedestal standing up from the floor. It's the inverse of a pit: Plug Clear hogs out the air around the plug, leaving it standing, then Wall Finish cleans the plug wall. Tool fit here is governed by what's around the plug, not inside it.

PLUG CLEAR — clear the air around the plug clearance boundary plug stock neighbour (island)
Rings fill the annulus between the outer clearance boundary and the plug, held off the plug wall by the stock gap. Neighbouring features are passed as islands so the rings clip at their edges. A drafted plug widens downward, so each deeper ring stands further out.
Plug Clear AFR button: Plug Clear

Clears the open stock around a raised plug down to the floor with concentric rings, leaving the plug standing.

When AFR offers it

On a boss or plug standing up from the floor, with straight or drafted walls. This clears the surrounding air, not the plug.

How it cuts

Works the annular region between an outer clearance boundary and the plug, walking concentric rings stepped down to the floor. On a drafted plug the cross-section widens going down, so each deeper inner ring stands further off the plug. Keep-tool-down (default) links ring segments at depth — but only where a safe-region check confirms the path won't hit the plug or a neighbour. Neighbours can be passed as islands so rings clip at their edges; a finish pass cleans the floor.

Key controls
StepoverOp ConfigRing spacing in the clearance band. 0 = auto (≈ 60% tool Ø for this op).
StepdownOp ConfigDepth per Z level down to the floor.
Cut directionOp ConfigClimb / conventional / alternating (alternating default).
Keep tool downOp ConfigStay-down lateral links, gated by the safe-region check so it never feeds across the plug or a neighbour.
Wall stockOp SpecificMaterial left on the plug walls for the Wall Finish pass.
Finish pass + Floor stockOp SpecificDedicated final floor skim around the plug.
Watch out for
  • Without a picked outer boundary it defaults to the plug bbox + one tool diameter per side. If neighbours sit closer than that, pass them as islands or the rings plough into them.
  • Leaves a stair-step scallop on a drafted plug wall — run Wall Finish (plug) after.
  • If a plug's clearance region is fully blocked or a level over-drafts, that plug/level is skipped with an amber notice — the batch keeps going.
Pairs with

Wall Finish (plug) — finish the wall after clearing the air.

Wall Finish (plug) AFR button: Wall Finish

Stepped Z-level wall finish around a raised plug — one constant-Z ring per level, offset outward, down to the base.

When AFR offers it

On the walls of a raised plug, as the perimeter finish that cleans up what Plug Clear left rough.

How it cuts

At each depth it walks one constant-Z ring — the plug-top outline offset outward by that level's draft + tool radius + stock — so each deeper ring sits further out to follow the widening wall down to the base. (This is the mirror of the pit wall finish, which insets.) Keep-tool-down stays down between rings; a lead-in radius arcs onto each ring.

Key controls
StepdownOp ConfigVertical spacing between wall rings. Smaller = finer wall.
Cut directionOp ConfigClimb (default) or conventional orbit around the plug.
Keep tool downOp ConfigStay at depth, step to the next ring — continuous contact, no re-entry marks.
Lead-in ROp ConfigTangent arc onto each ring; 0 = straight plunge entry.
Wall stockOp Specific0 for a true finish; positive for a semi-finish allowance.
Watch out for
  • The ring offsets outward (opposite of the pit wall finish) — make sure the surrounding clearance is wide enough that the ring at the base still sits in open air, or it gouges adjacent stock.
  • Run it after Plug Clear — alone, the ring is buried in solid stock.
  • Finishes the wall only — not the floor or the wall-top fillet.
Pairs with

Plug Clear — clears the surrounding air first.

Sloped floors Sloped Pocket

AFR flags pockets whose floor is a single tilted flat plane rather than horizontal — drainage channels, mould drains, angled lightening pockets. One op roughs the volume layer by layer, then optionally finishes the slope with scan lines that ride the plane.

Sloped Pocket AFR button: Sloped Pocket

Roughs a vertical-walled pocket with a tilted-flat floor, then finishes the slope with contour scan lines.

SIDE SECTION — layers clip to the tilted floor no cut → floor risen above layer floor-finish scans ride the plane gradient ↗
Each Z layer is half-plane clipped so it only cuts where the floor is still below it (the deep end), and ring Z follows the plane so the tool never drops through the floor. A second serpentine pass cleans the slope.
When AFR offers it

On a pocket with vertical walls whose floor is one tilted flat plane. The floor must tilt up — not vertical, not facing down.

How it cuts

Two phases. First a layered volume clear: concentric rings at each Z step, every layer clipped to where the tilted floor still sits below it, ring Z following the plane. Each fresh layer enters by plunge (default) or a clamped helix inside the cleared footprint; keep-tool-down feeds laterally between layers. Then an optional serpentine floor finish: scan lines along the constant-Z contour, Z tracking the plane.

Key controls
Stepover / StepdownOp ConfigRing spacing / depth per layer in the rough. 0 = auto (≈ half tool Ø).
Cut directionOp ConfigClimb / conventional / alternating rings.
Entry mode + Helical ROp ConfigPlunge (default) or helical descent inside the cleared footprint (radius auto-clamped per layer).
Keep tool downOp ConfigFeed across at depth instead of retracting each layer (gouge-safe — walls are vertical).
Floor finish passOp SpecificThe second-phase serpentine that cleans the tilted floor to size (on by default).
Floor stepoverOp SpecificSpacing between floor-finish scan lines. 0 = auto (0.4× tool Ø). Controls slope scallop.
Wall stockOp SpecificWall stock left for a later finish op.
Tool

A ball-end mill gives the smoothest sloped floor — a flat end mill leaves a stepped scallop on the tilt (the floor-finish stepover controls how fine).

Watch out for
  • Per-layer skips as the floor rises are normal and silent — the floor-finish pass covers them. A notice only appears if nothing clears at any depth (tool + stock too wide for the whole footprint) or the floor-finish boundary collapses.
  • The floor must tilt up (positive Z normal); a vertical or downward floor is rejected as a geometry error.

Profiles Contour · Arc Contour

The part's outer silhouette — the wall you'd trim around. AFR offers two finishes: Contour walks a chord/polyline (straight moves only), and Arc Contour emits real G2/G3 arcs where the profile has them, for smooth machine motion on filleted parts. Same job, the second just keeps arcs as arcs.

OUTSIDE OFFSET — tool rides in the void lead-in tool radius + stock walk CCW (climb) ARC vs CHORD on a fillet CHORD — straight facets ARC — smooth G2/G3
Both ride a tool-radius + stock offset in the void and ease on with a lead-in arc. Contour facets every curve into chords; Arc Contour traces the fillet as one real arc.
Contour (outside) AFR button: Contour

Finish-walks the outside of the profile with the tool in the void, offset by tool radius + stock.

When AFR offers it

On the recognised outer silhouette — the chord/polyline finish for the outside wall (straight segments only, no native arcs).

How it cuts

Buffers the outline outward by tool radius + stock and rides that ring, tool entirely in the void. Entry is one plunge per Z level at the start vertex, with a 90° tangent lead-in on the void side (auto-skipped to a straight plunge if its centre would land in material). It steps down one level at a time, one boundary ring per level unless you add outward gutter passes (walked outermost-first so the boundary stays the final clean pass).

Key controls
Start anchorOp SpecificPicked start point — rotates the ring to begin near it (default: southmost vertex).
Passes + StepoverSpecific / Config1 = boundary only; 2 or more with a stepover adds that many outward gutter rings for chip clearance on deep cuts.
StepdownOp ConfigDepth per Z level. 0 = auto (half tool Ø).
Cut directionOp ConfigClimb / conventional / alternating (flips which way round the part per level).
Lead-in ROp ConfigTightens the lead arc; 0 = auto. Can only shrink it, never grow it.
Keep tool downOp ConfigPlunge straight to the next level at the same XY instead of retracting.
Wall stockOp SpecificExtra radial stock left on the wall.
Watch out for
  • This is the chord finish — every arc becomes straight facets. For clean G2/G3 on filleted corners use Arc Contour.
  • Lead arcs only emit when the arc centre genuinely lands in the void; on tight geometry it silently falls back to a straight plunge for that end (possible dwell mark).
  • With keep-tool-down on, intermediate levels lose their leads — only the first keeps the lead-in and the last the lead-out.
Pairs with

Arc Contour — the arc-preserving sibling for the same profile.

Silhouette Contour (STL)

The User Defined Ops panel's Silhouette Contour row runs this same op on a mesh part: the outline is derived from the part's projected silhouette, so it works on STL where there is no B-rep profile to detect.

Arc Contour (outside) AFR button: Arc Contour

Outside-profile finish that offsets each segment individually and emits real G2/G3 arcs where the geometry has them.

When AFR offers it

When the outer silhouette carries true circular arcs (filleted corners, radius transitions) — the native-arc finish, real arcs instead of chords.

How it cuts

Walks the AFR arc chain segment-by-segment: each line and arc is offset by tool radius + stock to the cut side (the side is probed per-arc, not assumed), then consecutive offsets are trimmed to meet exactly at corners. Entry is a plunge at the chain start, with an opt-in tangent lead-in when Lead-in R > 0 (gouge-guarded). It steps down one level at a time, re-walking the chain each level. Single direction only — no alternating.

Key controls
StepdownOp ConfigDepth per Z level. 0 = auto.
Cut directionOp ConfigClimb or conventional only. No alternating.
Lead-in ROp Config0 = straight plunge at the chain start; positive adds a tangent lead-in/out at your exact radius, kept safe by a full-arc gouge gate.
Start anchorOp SpecificPicked start — rotates the chain to begin at the nearest segment.
Keep tool downOp ConfigSkip retract between levels; the final level always retracts.
Wall stockOp SpecificExtra radial stock left on the wall.
Watch out for
  • Tool-fit guard: because it emits real arcs, it can't round a concave notch smaller than the tool — the kernel measures its offset against the buffer ground truth and rejects the feature (skipped with an amber notice) so you re-route to plain Contour or a smaller tool.
  • Conventional flips both chain direction and offset side — climb is always the safe default.
  • Lead arcs are off by default; with radius 0 you get a straight plunge at the chain start (possible dwell mark on the finished wall).
Pairs with

Contour — the chord fallback when the tool can't trace a tight arc.

Inside profiles Inside Contour · Inside Arc Contour · Open Contour

Through-features — slots, irregular through-pockets — finished from the inside, leaving the surrounding material standing. Same Contour / Arc Contour pairing as the outer profile, just offset inward. A third option, Open Contour, appears when you pick an open edge chain instead of a closed loop.

INSIDE — tool rides inside the boundary walk material left standing OPEN CONTOUR — pick the side leads at free ends tool offset to one side (Cut side)
Inside contours ride a ring offset inward by tool radius + stock. An open chain has no inside/outside — you choose which side of travel the tool sits, with optional lead arcs at the two free ends.
Contour (inside) AFR button: Contour

Finishes a through-feature from the inside — tool offset inward by tool radius + stock, surrounding material left standing.

When AFR offers it

On a through-feature, slot, or irregular through-pocket — the chord/polyline inside finish.

How it cuts

Buffers the outline inward by tool radius + stock with Shapely (which safely collapses self-intersections) and rides that inner ring. One plunge per Z level with an opt-in lead-in arc; steps down one level at a time; with a stepover and ≥2 passes it adds inward gutter rings walked innermost-first so the boundary is the final clean pass.

Key controls
Start anchorOp SpecificPicked start point near which the inner ring begins.
Passes + StepoverSpecific / Config1 = boundary only; 2 or more with a stepover adds inward gutter rings.
Stepdown · Cut direction · Keep tool down · Lead-in ROp ConfigAs the outside Contour — depth per level, climb/conv/alternating, link-at-depth, tangent lead arc.
Wall stockOp SpecificRadial finish stock on the wall.
Watch out for
  • Chord finish — arcs are faceted. Use Arc Contour (inside) for native G2/G3.
  • Tool fit is inside-critical: a tool too wide for a narrow throat or tight inner fillet empties/pinches the inward buffer — skipped with an amber notice, not a batch abort. Drop to a smaller cutter.
Pairs with

Arc Contour (inside).

Arc Contour (inside) AFR button: Arc Contour

Inside-profile finish emitting real G2/G3 arcs along the through-feature walls.

When AFR offers it

When an inside profile carries true arcs — the native-arc through-feature finish.

How it cuts

Same arc kernel as the outside version but offset inward. With no operator pick it auto-starts at the widest spot of the feature so the lead-in and plunge get maximum room in a tight neck. The lead arcs are validated against the full tool-centre loop (not just the start point) so the arc body can't swing into the opposite wall; if it won't fit, it straight-plunges. Single direction only.

Key controls
Stepdown · Cut direction · Keep tool down · Lead-in ROp ConfigDepth per level, climb/conv only, link-at-depth, opt-in lead arcs (validated against the whole loop).
Start anchorOp SpecificOverrides the auto widest-spot entry.
Wall stockOp SpecificRadial finish stock.
Watch out for
  • The most gouge-prone op in the family. A convex inner fillet's centre lies inside the loop, so the kernel probes the cut side and, when a fillet is tighter than the tool, emits a chord at the same signed offset the neighbour lines reach — not outward. Trust the fix, but eyeball tight fillets.
  • Tool-fit guard applies: a concave notch smaller than the tool is rejected and skipped with a notice — route to inside Contour or a smaller tool.
Pairs with

Contour (inside).

Open Contour picked: Edges → Open

Machines along a single open picked edge-chain, offset to a chosen side (or engraved on the line).

When you get it

When you pick an open edge chain (first and last points differ) inside Inside/Outside Contour. Use it to machine one edge or an open profile rather than ring-walking an enclosed region.

How it cuts

No inside/outside — you pick the side. It one-sided-offsets the open polyline by tool radius + stock (left/right of travel, or on-line to engrave), emitting the offset centreline directly. Each depth pass plunges over the start, optionally swings a lead-in arc on the air side, walks the path, and lead-outs off the free end. Because the profile is open it cannot stay down between levels — every level retracts and re-plunges.

Key controls
Cut sideOp SpecificLeft, right, or on-line (engrave with no radius offset) — relative to travel direction.
Flip directionOp SpecificReverses travel along the chain (and flips which side left/right lands on).
Lead in/out + Lead radiusOp SpecificTangential lead-in/out arcs at the free ends; radius 0 = auto (tool radius). Auto-off for on-line.
StepdownOp ConfigDepth per pass; a zero span = a single pass at the floor.
Watch out for
  • Pick the offset side deliberately — left vs right is relative to travel, and flip swaps it. Wrong side cuts on the wrong side of your edge.
  • On-line rides the tool centre on the edge (engrave) — it does not account for tool radius, and leads are forced off.
  • Expect more retracts than the closed contours — an open path can't link levels at depth.

Fillets Form Fillet · Mill Fillet

Edge rounds. AFR splits them into Outside (convex top-edge) and Inside (concave wall-floor) sections, because they need different tools and must never share an op. Outside offers Form (a matched corner-round bit, one pass) or Mill (a ball-end, multi-pass). Inside offers Mill only — a corner-round bit physically can't reach into a concave corner, and the kernel hard-blocks it.

OUTSIDE — convex top edge Stepdown deg (outside fillet) Form = 1 pass · Mill = ball at angular steps INSIDE — concave wall-floor Cusp height (inside fillet) Mill only · ball-end Z-level slices
Outside: the ball rolls around the convex arc in angular steps (or a form bit cuts it in one pass). Inside: a ball-end finishes the concave radius as stacked constant-Z slices — a form bit would gouge the wall above it.
Curved edges & stitch chains (1.0.1)

Both fillet ops also run on manually picked edge runs, curved edges included: pick edges one by one or use Stitch chain to accumulate a run and finish it as one pass. Runs are trimmed where offset curves cross, bounded to each corner's reach. A hole-rim round-over is refused — that geometry needs a dedicated corner-round tool path, not a wall fillet.

Form Fillet AFR button: Form · outside only

Drops a matched corner-round bit onto a convex top-edge radius and walks it once — the bit's profile cuts the whole fillet in a single pass.

When AFR offers it

On a convex top-edge radius (an outside fillet along a pedestal or step) that a matched corner-round form tool can finish in one pass. Outside fillets only.

How it cuts

Walks the floor-edge polyline once at a single position, the corner-round profile seated on the convex edge — no angular stepping, no depth stepping. The form ground into the bit is the finished radius. Entry is a rapid to the start then a straight feed-plunge onto the edge; the edge is auto-extended by R at the ends so the corner sphere gets swept.

Key controls
FeedOp ConfigFeed for the single sweep along the edge.
PlungeOp ConfigFeed for the one straight plunge onto the fillet at the start.
Stepdown deg (outside fillet) / Cusp height (inside fillet) / Wall stockOp SpecificPresent for parity with the Mill/inside branch; effectively inert on a matched corner-round single pass.
Tool

A matched corner-round (radius) form tool. The bit's ground radius — not the model's — dictates the result; if it's off by more than 0.01 mm you get the bit's radius (with a notice). If the rolling radius exceeds the fillet R it can't fit — hard-blocked; use a smaller ball via Mill Fillet.

Watch out for
  • Outside only — a corner-round bit on a concave inside fillet is hard-blocked (its convex profile would gouge the wall above). Use Mill Fillet inside.
  • With a square end mill the op falls back to flat-end-mill behaviour instead of a true single-pass form cut; pick a corner-round end mill from the Tool Library for the form cut.
Pairs with

Mill Fillet — the ball-end alternative (and the only inside option).

Mill Fillet AFR button: Mill · outside + inside

Finishes a fillet with a ball-end mill — rolls the convex outside edge in angular steps, or Z-level walks the concave inside radius slice by slice.

When AFR offers it

On any fillet edge — convex outside top radius or concave inside wall-floor radius. It is the only choice AFR offers for inside fillets.

How it cuts

Outside: the ball steps around the quarter-cylinder in angular increments (Stepdown deg (outside fillet)), passes linked as a zigzag; keep-tool-down feeds laterally between passes. Inside: a mesh-sliced Z-level finish over [floor, floor + R] — the mesh is sectioned at each Z, the cavity offset inward, and the cutter walks that closed contour up the concave radius.

Key controls
Stepdown deg (outside fillet)Op SpecificOutside scallop: angular step between passes (0 = auto 11.25°). Ignored inside.
Cusp height (inside fillet) (Cusp height)Op SpecificInside scallop: vertical step between Z slices (0 = auto, ≈10% tool Ø). Ignored outside.
Wall stockOp SpecificInside only: finish stock on the cavity walls.
Cut directionOp ConfigInside Z-level only: ring travel around the cavity. Outside always uses a fixed zigzag.
Keep tool down · Feed · PlungeOp ConfigStay engaged between passes/levels; cutting and plunge feeds.
Tool

A ball-end mill with radius ≤ the fillet R (a bigger ball is hard-blocked). Inside fillets require the part mesh — the Z-level walk is driven by mesh slicing.

Watch out for
  • Knob applicability is split by kind: Stepdown deg (outside fillet) is outside-only, Cusp height (inside fillet) + Wall stock + Cut direction are inside-only. Setting the wrong-side knob silently does nothing.
  • With a square end mill the tool falls back to flat-end-mill contact (worse scallop than a true ball); pick a ball-end mill from the Tool Library.
Pairs with

Form Fillet — the single-pass form-tool option for outside fillets.

Chamfers & V-grooves Form Chamfer · Mill Chamfer

Bevels and V-grooves. The same two ops serve all three sections — V-Grooves (two tilted walls meeting at a vertex), Outside Chamfers, and Inside Chamfers. Form uses a matched-angle V-bit (one centred pass); Mill uses a standard end mill (one pass per wall). AFR lists inside and outside separately because a V-bit or end mill sized to overhang an outside bevel will gouge the walls of an inside one of the same size — so you size the tool per case.

FORM — matched V-bit on the bevel tip angle flank rides the bevel · stepdown breaks deep bevels WHY INSIDE ≠ OUTSIDE outside — body in air ✓ inside — flank hits wall ✗
Left: the V-bit's flank rides the bevel face; a deep bevel can be broken into stepped passes. Right: the same oversized tool that safely overhangs an outside bevel digs into the adjacent wall of an inside one — hence the inside/outside split.
Curved edges & stitch chains (1.0.1)

Both chamfer ops also run on manually picked edge runs, curved edges included — same picking flow as the fillets: single picks or a stitched chain, trimmed at offset-curve crossings so adjacent bevels meet cleanly at corners.

Form Chamfer AFR button: Form

A single matched V-bit runs the chamfer's top edge in stepdown passes, the cone flank riding the bevel face.

When AFR offers it

On a beveled edge or V-groove whose angle matches a V-bit (chamfer bit) you have loaded — one centred tool scribes the whole bevel along the edge or groove vertex.

How it cuts

The V-bit plunges at the top-edge midpoint, then walks the edge; each successive pass interpolates a path further between the chamfer's top and bottom edge, stepping deeper into the face. Stepdown 0 = a single full-depth pass. Default cut direction is alternating (zigzag — shortest inter-pass link); keep-tool-down stays buried and steps over.

Key controls
Tip angleOp SpecificThe V-bit's full included angle. AFR seeds it to 180 − 2×chamfer angle so the flank matches; a narrower bit triggers a gouge warning.
StepdownOp ConfigDepth per pass down the bevel. 0 = one full-depth pass; above 0 breaks a deep/wide bevel into lighter passes.
Cut directionOp ConfigClimb / conventional / alternating (default zigzag).
Keep tool down · Feed · PlungeOp ConfigStay buried between passes; cutting and entry feeds.
Tool

A V-bit / chamfer bit whose included angle matches the bevel. It must be wide enough (Tip angle ≥ 180 − 2×chamfer angle) or the cone digs into the flat above the contact line — a warning + amber notice, not a block.

Watch out for
  • If Tip angle is left at 0 (tool not angle-tagged), the gouge check is suppressed and you lose the warning — tag your V-bit.
  • Inside vs outside split: a V-bit sized for an outside chamfer gouges an inside chamfer of the same size. Pick a correctly-sized bit per case.
  • Degenerate features are skipped with a notice, not a batch abort.
Pairs with

Mill Chamfer — the end mill alternative when no matched V-bit fits.

Mill Chamfer AFR button: Mill

A standard end mill (square / ball / bull nose) traces the bevel face on an offset centreline, one stepped pass per Z level.

When AFR offers it

On a chamfer or V-groove cuttable with a standard end mill instead of a matched V-bit. One pass per wall; the kernel rejects cutters too wide to fit.

How it cuts

Walks the contact point down the bevel face in constant-Z passes (spacing = stepdown; 0 = one full-depth pass), offsetting the tool centreline off the contact path by a per-cutter (plan, Z) pair from the chamfer angle — so the flat corner of a square mill, or the tangent point of a ball/bull, rides the face while the body sits in air. Default alternating zigzag; keep-tool-down stays engaged between passes.

Key controls
StepdownOp ConfigZ per contact pass down the bevel. 0 = whole face in one pass.
Cut directionOp ConfigClimb / conventional / alternating (default zigzag).
Keep tool down · Feed · PlungeOp ConfigStay engaged between passes; cutting and entry feeds. (No op-specific knobs — geometry comes from the tool + the universal rows.)
Tool

A square end mill, ball-end, or bull nose from the tool dropdown. Corner-round / matched form tools are rejected here — those belong on Form Chamfer. Bull-nose needs a corner radius between 0 and the tool radius.

Watch out for
  • Inside-chamfer gouge guard: ball/bull cutters drop the tip below the contact Z, which would dig the floor at the deepest inside pass. The kernel clamps the contact range to keep the tip at/above the floor and posts a notice that a small residual cusp is left — follow with a smaller cutter or a pencil pass. Too big for the depth = the feature is skipped (not the batch).
  • Inside vs outside split: an end mill sized for an outside chamfer gouges an inside one of the same size — fit a cutter that fits the inside corner.
Pairs with

Form Chamfer — the V-bit alternative.

3D surface ops whole part · selection

The 3D ops machine the mesh itself — no feature detection required, so they run on STL imports and STEP alike. Each has a Whole Part row in the User Defined Ops panel; most add a Selection row that confines the cut to a picked face footprint or traced edge loop. Scope depth with the Heights rows (Top / Bottom); several offer Rest machining, which cuts only what the ops above them in the project left behind.

3D Pocket Clear User Defined Ops panel: Whole Part / Selection

Whole-part roughing that clears every reachable cavity and terrace by slicing the mesh, level by level — your first op on a solid blank.

How it cuts

The kernel slices the whole part mesh at each Z Stepdown; the cuttable region at a level is everything inside the cut boundary that is not solid, shrunk by the tool radius plus wall stock. Concentric offset rings clear each region, entered by a climb-sense helical descent at a picked anchor (or a straight plunge into verified air when a helix will not fit). Because the region falls straight out of the mesh slice, drafted plugs, fillets and undercut overhangs are handled with no feature detection. Heights (Top/Bottom, default STOCK_TOP to MODEL_BOTTOM) scope the Z range; the Selection variant clips clearing to a picked footprint.

Key controls
XY marginOp SpecificExpands the outer clearing boundary outward by this many mm — clears around the part edge for trim/parting. Watch fixture clearance. Default 0 mm.
Cut boundaryOp SpecificWhere clearing stops in XY. Silhouette (default) = inside the part's outer outline; BBox = out to the bounding box of stock+part, clearing the air corners too (stock-prep workflows).
Wall stockOp SpecificRadial stock to leave on walls, mm. Default 0 (cut to size).
Rest machiningOp SpecificCheckbox, default off. Cuts only where earlier ops in the project could not reach; prior clearance is derived automatically from every op above this one in project order.
Trim regionOp SpecificDefine / Clear buttons. Draw a rectangle in top view to restrict the op to that part of the model (rework, localised re-cut). Default none = full part.
StepoverOp Config0 = auto (10% of tool diameter — small radial bite, bounded engagement).
StepdownOp Config0 = auto (50% of tool diameter).
Entry modeOp ConfigHelical (default) = orbit descent at the anchor; Plunge = straight Z drop into a safe interior point, for tight regions or pre-drilled entry holes.
Cut directionOp ConfigAlternating (default, both-ways roughing — shortest transit between rings), Climb, or Conventional. Engagement choice only; the path shape does not change.
Ramp rateOp ConfigFeed for the helical entry descent, mm/min. 0 = uses Plunge rate. Feed 500 / Plunge 300 mm/min defaults.
Tool

Flat end mill. Default 4 mm. Helical entry means the tool must cut to centre or be given Plunge entry into a pre-drilled hole.

Selection variant

Selection (STEP parts) picks a face outer wire or traced edge loop; that footprint becomes the clearing boundary, so the Cut boundary and Trim region rows disappear — the pick IS the boundary. On STL the Selection button is disabled; use Trim instead.

Watch out for
  • Rest machining with no earlier ops above it in the project is a no-op — nothing to subtract.
  • BBox boundary clears surrounding stock riding the Bottom height — confirm the Bottom height before running.
  • Levels above stock or below the model floor produce nothing to cut; a Top at or below Bottom is refused with an error.
Adaptive Clear User Defined Ops panel: Whole Part / Selection

Constant-engagement trochoidal roughing (the industry's adaptive-clearing class) — deep axial cuts at high feed because the radial bite never exceeds Optimal load.

How it cuts

Instead of fixed-stepover rings, the engine grows a morphing spiral front: each pass rides at a distance from the already-cleared area that makes the radial cut width exactly the Optimal load everywhere it is free, and inserts trochoidal loops where corners would squeeze the width above it. Entry is a helical descent at the largest inscribed circle, with automatic plunge fallback; when the front pinches or splits, each remaining region gets its own fresh entry (wide regions) or medial-axis trochoidal slotting (thin necks). Climb-only by construction. A different strategy from 3D Pocket Clear — reach for it when you want full-flute depth in tough material.

Key controls
Optimal loadOp SpecificTHE knob: target radial engagement width in mm, held everywhere — free fronts by construction, corners via trochoidal loops. NOT a stepover. 0 = auto (20% of tool diameter). Default 0.
XY marginOp SpecificExtra outward boundary expansion in mm, same meaning as 3D Pocket Clear. Default 0.
Cut boundaryOp SpecificSilhouette (default) or BBox — same semantics as 3D Pocket Clear.
Wall stockOp SpecificRadial stock to leave, mm. Default 0.
StepdownOp Config0 = auto (50% of tool diameter). Fixed ladder; flat floors are picked up at their exact Z.
Ramp rateOp ConfigFeed for the helical descent arcs, mm/min; 0 = Plunge rate. Feed 500 / Plunge 300 mm/min defaults.
Tool

Flat end mill, default 4 mm. The whole point is running full flute-length stepdowns at the bounded load, so favour a long-flute tool.

Selection variant

None yet — the Selection button is permanently greyed ("Adaptive Clear - Selection is not available yet. Use Whole Part.").

Watch out for
  • No Cut direction row: adaptive is climb by construction. No Entry mode row: helical with automatic plunge fallback. Neither is an omission.
  • The op can leave a small residual where a mop-up pass would not pay for itself (efficiency gate); it reports what it left as a note on the op's row in the Op Palette and in the G-code preamble — read the notes.
  • No rest machining or trim in v1.
Z-Level User Defined Ops panel: Whole Part / Selection

Waterline finishing — constant-Z contours walked down the part's walls for an even cusp on steep and vertical surfaces.

How it cuts

The mesh is sliced at descending Z levels between Top and Bottom; at each level the cutter walks the wall contour (outside walls offset outward, holes offset inward) leaving a constant cusp on near-vertical faces. A built-in slope filter drops passes on undersides and overhangs, and every plunge/retract column is verified air before use. Passes are linked with gouge-gated hops (the tool lifts only as high as the surface between passes requires) instead of full retracts — a large air-time saving on multi-feature parts.

Key controls
Wall stockOp SpecificRadial stock to leave on the walls, mm. Default 0.
Rest machiningOp SpecificCheckbox, default off. Each wall ring is clipped against what earlier ops already cleared; only the leftover sub-segments are cut.
StepdownOp ConfigThe pass spacing — this IS the wall cusp control. 0 = auto (25% of tool diameter).
Cut directionOp ConfigClimb (default), Conventional, or Alternating (reverses per level).
Keep tool downOp ConfigSkip the retract between consecutive levels when the next ring starts at the same XY. Default off.
Transition rateOp ConfigFeed for the keep-down lateral link moves, mm/min; 0 = Feed rate. Feed 500 / Plunge 300 mm/min defaults.
Tool

Ball or flat end mill, default 4 mm. Steep/vertical walls are its home ground; on shallow floors it leaves wide terraces — pair with Parallel or Scallop.

Selection variant

Selection (STEP) picks a region; only wall segments inside the picked footprint are cut, using a per-segment clip that cannot walk chords across the interior (gouge-safe). Disabled on STL.

Watch out for
  • The underside/overhang pass filter is always on — it is a gouge guard, not an option; there is no operator switch.
  • Small interior holes are skipped on purpose — hole ops own those (a note tells you when it happens).
  • This op has no Trim region; use the Selection variant or scope with Heights.
Parallel User Defined Ops panel: Whole Part / Selection

Raster (scan-line) finishing over the whole reachable surface — including 90-degree walls — with tolerance-bounded output and native G2/G3 arcs.

How it cuts

Straight passes at the stepover spacing sweep the part in X or Y; at every sample the tool is dropped onto the true surface contact, so the path follows floors, slopes and rides straight down walls in the same run (no steep-area exclusion). A tolerance-bounded fitter and a convex-corner clamp keep the emitted path within the Total tolerance band of the surface — lifting only, never cutting below it — and a stay-down linker orders and bridges the passes. Emission is native G2/G3 arcs by default, or pure G1 lines; the finish is identical either way, only the file changes.

Key controls
Scan dirOp SpecificX (default) or Y — the raster pass direction.
Total toleranceOp SpecificThe master control: one-sided deviation band off the surface, mm. Default 0.025. On dense lattice/organic STLs this and Arc output are THE block-count controls — open the tolerance to shrink the program.
Smoothing ratioOp SpecificHow much of the tolerance band is spent on smoothing (arc bridging) vs cutting accuracy, 0-1. Default 0.5. Note: on lattice STLs raising smoothing was measured to make block count WORSE, not better — use Total tolerance instead.
Arc outputOp SpecificG2/G3 arcs (default) or G1 lines. Same finish; arcs give far smaller programs on curved work.
Max arc radiusOp SpecificLargest native arc to emit, mm; bigger arcs become G1 lines. 0 = auto (part-size-relative cap). Default 0.
Stock to leaveOp SpecificFinish allowance measured along the surface normal, mm. Default 0 = cut to the surface. Negative refused.
Cut boundaryOp SpecificModel (default) = passes end where the tool leaves the part, rolling one tool radius past the edge. Silhouette = clipped at the outer outline, no roll-past. BBox = passes carry on to the bounding box riding the Bottom height where there is no part — check your Bottom height first. A Selection pick or Trim rect overrides all three.
Pass orderOp SpecificSweep (default) = straight across the part row after row. Fewest retracts = the global tour: fewer lifts on fragmented parts (frames, hole-heavy plates) but the order wanders.
XY offsetOp SpecificExtra overtravel past the machining boundary, mm (0-50, default 0). Extends the BBox raster or the Silhouette ring outward so the surrounding floor skirt clears fully. Whole-part MESH (STL) parts only — greyed with a reason on B-rep, Model boundary, or an active Trim.
Start anchorOp SpecificPick start button: the raster begins at the bounding-box corner nearest your picked point and serpentines from there. Default = min corner.
Trim regionOp SpecificDefine / Clear: a top-view rectangle restricting the op to part of the model. Default none.
StepoverOp ConfigPass spacing, mm. 0 = auto (25% of tool diameter). Feed 1000 / Plunge 333 mm/min defaults.
Tool

Ball end mill is the natural choice (default 2 mm); the contact engine also supports square, bull nose (corner radius from the tool), tapered-ball, and lens cutters — the strategy is derived from the tool's cutter category, not picked here.

Selection variant

Selection (STEP) clips the raster to the picked region: samples outside it are treated as air, so passes simply end at the region boundary. Same knobs minus Cut boundary / Trim / XY offset — the pick is a hard containment. Disabled on STL (use Trim).

Watch out for
  • A huge or very fine job can trip the predictive memory guard — it is an estimate, and Force compute overrides it; a genuine out-of-memory still stops the run.
  • XY offset and the BBox boundary cut air at the Bottom height wherever there is no part — deliberate skirt clearing; verify the Bottom height and fixtures.
  • There is no Max slope knob by design: v4 machines everything reachable, walls included.
Scallop User Defined Ops panel: Whole Part / Selection

Even-cusp 3D offset finishing over the whole part — ring spacing follows the surface so the scallop height stays constant on slopes and curves.

How it cuts

The engine builds a signed-distance field of the part (OpenVDB), extracts the offset surface one ball radius out — the surface the tool CENTER rides when the tip touches the part — and slices that offset surface into rings spaced by the cusp-derived stepover. This is the production-CAM 3D-offset approach. Rings are ordered nearest-neighbour and chained; Z-ramp entries and tangent links are on by default. Surfaces steeper than the wall-angle limit are excluded — true verticals belong to Z-Level.

Key controls
Cusp heightOp SpecificThe finish control: allowed scallop height, mm. Stepover is derived from it and the ball radius. Default 0.005 mm (5 micron, fine finish). Range 0.001-0.5.
Stepover maxOp SpecificCap on the ring spacing, mm. 0 = no cap, use the cusp-derived value. Default 0.
Voxel sizeOp SpecificSDF grid resolution, mm. 0 = auto (about stepover/4, floor 0.025). Smaller = more accurate but much more RAM and time — memory scales as 1/voxel squared.
Wall angle maxOp SpecificSurfaces steeper than this (degrees from horizontal) are excluded. Default 89 — keeps ~87-degree drafted walls machinable while leaving true verticals to Z-Level. Range 45-90.
Tool

Ball end mill (default 4 mm; corner radius is sourced from the Tool Library entry). A tapered ball is REFUSED — the single-distance offset cannot represent a ball+cone.

Selection variant

Selection (STEP) picks faces; the same VDB engine runs scoped to just those triangles. A pick OVERRIDES the wall-angle limit (picking a steep face is an explicit request to machine it), and the tool-center rings are clipped to the face boundary eroded by the ball radius — the ball reaches the face edge but never crosses into the neighbour. Disabled on STL (use Trim/Heights).

Watch out for
  • A manual Voxel size whose estimated memory exceeds free RAM is refused before it thrashes the machine; Force compute overrides the estimate at your own risk.
  • Cut direction is not honoured by this kernel (rings are normalized one way) — the row is greyed.
  • Tapered ball tools are refused outright; use the ball from the Tool Library.
Pencil User Defined Ops panel: Whole Part / Selection

Corner cleanup — traces the internal concave seams where two surfaces meet and a bigger cutter's body could not reach.

How it cuts

The kernel walks the mesh's face adjacency, keeping concave edges whose dihedral angle exceeds the Seam angle, chains them by tangent continuity, and places the cutter center on the seam bisector so the ball nests into the corner. Each chain gets its own plunge and lift; consecutive chains that end close together at the same Z are linked with a short stay-down hop instead of a full retract. Heights (Top/Bottom) scope coverage, same as Z-Level.

Key controls
Seam angleOp SpecificDihedral angle (degrees) below which an edge is too smooth to count as a seam — filters tessellation noise on curved surfaces. Default 30.
Link clearanceOp SpecificHeight above the cut the tool holds during a stay-down link, mm. 0 = auto (half the tool diameter). Default 0.
Link max gapOp SpecificLongest chain-to-chain gap that stays down instead of retracting, mm. 0 = auto (4x tool diameter). Default 0.
Tool

Ball end mill, smaller than the finishing tool that left the residual — default 2 mm. A tapered ball is REFUSED: its cone flank flares into the seam walls and gouges them.

Selection variant

None, on purpose — Pencil already targets only the seams; its Selection button is permanently greyed with that explanation.

Watch out for
  • STEP parts only: the Whole Part button is disabled on STL ("Pencil walks B-rep face topology -- STEP only.").
  • Tapered ball tools are refused with an error rather than run gouging.
  • Feed 500 / Plunge 300 mm/min are the only universal rows live — everything else is greyed for this op.
Ramp User Defined Ops panel: Whole Part / Selection

Wall finishing that descends a picked (or whole-part) region in waterline steps — or one continuous helix — keeping only the wall slopes you ask for.

How it cuts

Ramp reuses the Z-Level core with a slope band: only wall segments whose surface slope falls inside [Slope from, Slope to] are kept (default 30-90 degrees, drafted-to-vertical), so floors and undersides stay untouched. Whole Part supplies the part outline automatically; Selection has you pick a closed edge chain in the viewport, and each Z slice is clipped to that footprint. Stepped mode cuts discrete Z passes bracketed by tangent lead arcs; Helical mode descends continuously across each revolution (first and last level stay stepped for a clean entry and flat floor). Passes are linked with gouge-gated hops by default.

Key controls
Wall stockOp SpecificRadial stock to leave, mm. Default 0.
Slope fromOp SpecificLower edge of the kept wall-slope band, degrees from horizontal. Default 30.
Slope toOp SpecificUpper edge of the band, degrees. Default 90 (vertical).
Slope tolOp SpecificSlack added to both band edges, degrees, clamped 1-5. Default 2 — tight, because analytic surface normals absorb tessellation noise.
StepdownOp ConfigZ spacing of the passes; 0 = auto (25% of tool diameter).
Cut modeOp ConfigStepped (default) = discrete waterline passes; Helical = continuous Z descent per revolution, no per-level entry marks.
Cut directionOp ConfigAlternating (default), Climb, or Conventional.
Lead-in radiusOp Config90-degree tangent entry/exit arc radius, mm; 0 = auto (half the tool diameter). Stepped mode only — the helical entry is its own lead. Lead-in rate 0 = Feed rate. Feed 500 / Plunge 300 mm/min defaults.
Tool

Ball end mill for curved/drafted walls (default 4 mm); a flat end mill serves plain vertical walls.

Selection variant

Selection arms the chain picker: trace a closed edge loop in the viewport (Undo pops the last edge, Clear restarts); Compute stays disabled until the chain closes. The picked polygon is the exact XY clip for every level. Whole Part needs no pick — the part outline is the boundary. Selection is disabled on STL.

Watch out for
  • Widening Slope from below ~30 degrees starts dragging shallow floors into a wall strategy — that territory belongs to Scallop/Parallel.
  • Helical mode keeps the first and last levels stepped on purpose (clean top entry, flat floor finish) — not a defect.
  • Lead arcs are skipped inside keep-down stepdowns and between chained loops.
3D Trace User Defined Ops panel: Whole Part / Selection

One 3D pass along a picked profile boundary with the Z following the surface — for rims and perimeters whose height varies, where a constant-Z contour is wrong.

How it cuts

You pick a profile face (its outer wire) or an edge chain under Feature Ops; the kernel walks that XY boundary once, raycasting each point onto the mesh so Z rides the true edge height, with surface-normal tool-radius compensation (the ball rides about one tool radius outside the wall). Horizontal stretches are refit into native G2/G3 arcs (0.01 mm chord tolerance); the rest stay G1. With a Stepdown set, the pass repeats down the wall from the varying top edge to the floor — and when Bottom is left at model bottom, each column stops at its own local underside instead of over-cutting thin sections. Industry names for this class: 3D contour finishing, boundary projection.

Key controls
Resample stepOp SpecificBoundary sampling spacing, mm. Smaller = Z follows the surface more smoothly and chords hug convex bulges tighter. Default 0.5.
Wall stockOp SpecificRadial finish stock left on the wall (added to the outward tool-radius offset), mm. Default 0.
Start anchorOp SpecificPick start: rotates the closed loop to begin at the segment nearest your picked point.
Cut directionOp ConfigClimb (default) or Conventional — reverses the travel.
StepdownOp Config0 = single pass along the top edge (default); >0 = descend the wall in steps to the Bottom height.
Lead-in radiusOp ConfigTangent planar entry/exit arc, mm; 0 = straight plunge. Clamped to the tool radius; swept in the outward void so it leaves no witness mark. Lead-in rate 0 = Feed rate. Feed 500 / Plunge 300 defaults.
Tool

Ball end mill, default 6 mm. A tapered ball IS supported here: the taper contact lifts the tool on steep walls a plain ball would gouge.

Selection variant

The pick is the op: 3D Trace lives under Feature Ops (B-REP) with a Pick face button — the picked profile boundary is what gets traced. There is no whole-part button.

Watch out for
  • STEP parts only — feature-op picks need analytic B-rep faces; the button is disabled on STL.
  • The offset band (multiple outward passes) was removed on purpose: a 2D offset of a 3D rim collapses raised features. One boundary, optionally stepped down.
  • With Bottom set to anything other than model bottom (e.g. stock bottom for parting), every column descends the full depth — mind thin sections.

Slots & rails T-Slot · Dovetail

T-Slot User Defined Ops panel: T-Slot / Dovetail

Second-pass undercut: a T-slot disc cutter widens a pre-cut vertical slot below the surface into a rectangular channel.

How it cuts

Pick the slot FLOOR face; the loaded disc cutter's neck rides in the existing clearance slot while the disc cuts the channel. Entry is STRICTLY LATERAL — the disc can never plunge (disc wider than neck). The op classifies the floor's walls: double-walled slots enter AXIALLY from an open end, descending to depth in air past the end face; single-walled slots use a SIDE lead-in from the open side; a blind far end is fed to a disc-radius short of it and backed out. Curved slots are followed along their centreline.

Key controls
Wall stockOp SpecificRadial stock-to-leave on the channel walls, mm, default 0.
Pass extensionOp SpecificHow far the disc runs past an open end/side, in air, before it engages and after it exits. Default 0 = (auto): disc radius + 2 mm.
Tool

T-slot (disc) cutter — disc diameter, neck diameter and cutting width all come from the loaded tool (defaults 12 / 6 / 6 mm). Feed 300 / plunge 120 mm/min defaults. Neck reach (getting the neck down the clearance slot) is the operator's responsibility.

Watch out for
  • Requires a pre-cut vertical clearance slot for the neck — this op is the SECOND pass.
  • A blind slot (walls all around) is REFUSED — the disc cannot get in.
  • The floor must be horizontal; a tilted floor or a wall pick is rejected at pick time.
  • Multi-pass rides the universal rows: Stepover = lateral step widening out to the walls (0, or at least the disc width, = single pass); Stepdown = axial height stacking up to the overhang when the channel is taller than the disc (0 = single pass).
Dovetail User Defined Ops panel: T-Slot / Dovetail

The same lateral-entry undercut pass with a dovetail cutter — a trapezoid channel whose angle is the cutter's flank angle.

How it cuts

One kernel with T-Slot; the cross-section is purely the cutter's shape (flank angle comes from the tool's tip angle), so for a single pass the centreline sweep is identical. Same floor-pick, same wall classification, same axial / side lead-in entries, same blind refusal.

Key controls
Wall stockOp SpecificRadial stock-to-leave, mm, default 0.
Pass extensionOp SpecificAir run past an open end/side, mm; 0 = auto (disc radius + 2 mm).
Tool

Dovetail cutter; disc/neck/width and the flank angle are tool-driven. Feed 300 / plunge 120 mm/min defaults.

Watch out for
  • Height stacking via Stepdown is T-SLOT ONLY — a dovetail's cross-section is cutter-fixed, so it cannot stack height passes.
  • Needs the pre-cut vertical clearance slot; blind slots refused; horizontal floor required.

Engraving Engrave

Engrave User Defined Ops panel: Engrave / V Carve

Two modes: Centerline rides picked edge chains at a fixed depth; V Carve fills closed regions at variable depth along the medial axis so corners and serifs come out sharp.

How it cuts

Centerline: the tool tip rides each picked chain (open trail or closed loop) at Depth below each chain point's own Z, so a chain on a non-planar edge engraves a uniform-depth groove along the surface. Line width comes from the tool tip, not the path: V tool width = tip flat + 2 × depth × tan(half angle); non-V tool width = tip diameter. The universal Stepdown row splits depth into passes (closed loops stay down and step at the loop seam; open trails retract and re-plunge). V Carve: pick letter FACES (one click brings the outline plus its islands) or closed edge loops; the V tool runs the region's medial axis, plunging until the cone spans wall to wall — narrow strokes cut shallow, wide strokes deep, branch tips run into corners at depth 0. Depth acts as the MAX-depth cap; the carve surface is the resolved heights Top. The same mechanism production CAM ships as an 'Engrave' toolpath.

Key controls
DepthOp Specificmm below each picked chain point's own Z (Centerline) / max-depth cap (V Carve). Default 0.2 mm, range 0.01-50. For a V tool this IS the line-width knob.
NoteOp SpecificPanel hint row: 'Pick edge chains in the viewport. Each completed chain adds a path; Clear resets.' Chains accumulate in pick order = cut order.
Tool

Centerline: any tool, but a V engraver gives depth-controlled line width (tip angle + measured tip flat come from the tool at build time). V Carve needs a V tool (engraver / chamfer / countersink bit). Default tool 6 mm, feed 500 / plunge 300 mm/min.

Watch out for
  • B-rep (STEP) only — edge picking needs analytic edges, STL has none; both User Defined Ops buttons grey on a mesh part.
  • No lead arcs by design (a lead at depth would widen the groove at the ends) and Cut direction is greyed — the groove is cut symmetrically about the curve.
  • V Carve does not consume Stepdown (depth varies point to point; a note says so if you set it) and where the region is wider than the bit can span at the cap depth, the middle floor is left uncleared (soft note; no flat-clearing pass yet).
  • Centerline depth is measured below the chain's own Z — the heights Bottom row is inert for this op.

Rotary — whole part 4-axis

Rotary ops live in the Rotary context: the part turns about the machine's rotary axis and the kernels work in radial coordinates (depth = radius from the centerline). An indexed context is 3-axis at a locked angle — use the 3-axis ops there. The machine entry, not the post, supplies the rotary letter and sign.

Adaptive Rotary ops panel

Bulk rotary roughing that spirals the stock off in fresh full-bite bands, level by level, down to the part wall plus your leave-on.

Rest machining

Adaptive and Level Rough (and their Selection variants) carry the Rest machining checkbox. The op skips what earlier ops in the same rotary context could reach with their tools — typical chain: D12 Level Rough, then D6 Adaptive with rest on. "Earlier" means every op above it in the program order that has a tool; the model is prior-tool clearance, not tracked stock, so a prior op scoped to a band is over-counted — if a corner is missed, turn rest off for that op. An empty result with rest on is legitimate: the earlier tools already cleared everything this one can reach.

How it cuts

The part is sliced along the rotary axis; at each axial level the part cross-section (grown by the cutter radius) is subtracted from the stock disc, and the remaining ring of material is cleared by a spiral comb: the tool enters at the stock skin and marches inward, each pass biting a fresh band of about one ring step until the innermost pass leaves a uniform wall stock. Every contour point becomes an (axial, radial, A) feed move; A is carried continuously so the table never spins the long way around, and the tool retracts to the safe radial between levels. The region math unions plane sections across the tool's full width, clips to what a radial tool can actually see (no cutting under overhangs), and checks every link corridor, hopping over material instead of feeding through it.

Key controls
ResolutionOp SpecificAxial slice spacing sampling resolution (mm). Default 2.0 mm. Serves as the auto value for Stepover when Stepover is 0.
Radial engage (xD)Op SpecificRing step between spiral passes as a fraction of tool diameter. Default 0.40. Serves as the auto rule for Stepdown when Stepdown is 0.
Stock to leaveOp SpecificWall stock the rough leaves on the part (mm). Default 0 = AUTO, which means 10% of tool diameter — NOT zero stock (the field shows "(auto)" at 0).
Start endOp SpecificWhich axial end the clearing starts from: Axis min (default) or Axis max — e.g. tailstock toward chuck.
Axial from / Axial toOp SpecificManual whole-part containment window along the rotary axis, WCS mm, with a viewport Pick button per field. Both 0 = whole part. Mesh (STL) parts only.
Angle from / Angle toOp SpecificAngular containment sector in degrees. 0..360 = full wrap. Mesh (STL) parts only.
Stepover (universal Op Config)Op SpecificLateral slice spacing (mm). Default 0 = auto -> the Resolution value.
Stepdown (universal Op Config)Op SpecificRadial ring step (mm). Default 0 = auto -> Radial engage x tool diameter.
Feed / Plunge / Lead-in (universal Op Config)Op SpecificCutting feed 800 mm/min, plunge 300 mm/min defaults. Lead-in = feed on the first ~tool-radius of each pass entry; 0 = same as Feed.
Heights Top / BottomOp SpecificRadial clearing window: Bottom is a model-protected floor limit (material inside it is left), Top a start ceiling (skip pre-turned stock). Defaults = stock outer / model inner = no clip. Retract = safe radial between levels; Clearance = final park. Feed height is informational.
Tool

A roughing cutter — typically a flat end mill. The kernel has no per-cutter-category contact math: it treats the tool as a plain cylinder of the stated diameter.

Selection variant

Adaptive (Selection): pick faces on a STEP part and the same rougher confines its clearing to the picked region. The manual axial/angle window rows do not apply (the pick is the window).

Watch out for
  • There is deliberately no shank/holder collision check on this op — the operator guarantees stickout (house rule: clearing ops never shrink their own cut to protect against interference).
  • Stock to leave 0 is AUTO (10% of tool diameter), not cut-to-size — unlike the finishing ops where the same label's 0 means cut to size.
  • The Axial/Angle window rows are mesh-only: on a B-rep (STEP) part they grey out — use the face-pick Selection variant instead.
  • Per-pass engagement control (trochoidal relief in narrow necks) is not in yet; expect full-width bites in tight necks.
Level Rough Rotary ops panel

The rotary analogue of a 3-axis Z-level rough: radial shells replace Z levels, and it is gouge-safe by construction.

How it cuts

The part's outer radius over (axial position, angle) is treated as a height map, and everything above it is removed in shells. In Axial mode the tool runs along the rotary axis with A held static per pass, stepping A between passes for angular coverage and stepping radially for depth; Radial mode runs continuous-A, lathe-like passes around the axis instead. Every feed point sits at or above the part's outer surface at that spot, so the tip physically cannot reach inside the part — even on a leaky STL shell. The surface field is deliberately over-estimated (max-dilated) so keep-down links always block near material.

Key controls
Scan directionOp SpecificAxial (default) = passes along the rotary axis, A static per pass — best for non-axisymmetric parts. Radial = continuous-A passes around the axis — best for round parts.
Stock to leaveOp SpecificWall stock left by the rough (mm). Default 0 = AUTO (10% of tool diameter), not zero stock — the field shows "(auto)" at 0.
ResolutionOp SpecificAxial sampling resolution of the height field (mm). Default 2.0 mm.
Start endOp SpecificAxis min (default) or Axis max — which axial end the clearing starts from.
Axial from / Axial to, Angle from / Angle toOp SpecificManual whole-part window (WCS mm axial band + 0..360 deg sector). Both-zero axial / 0..360 angular = whole part. Mesh (STL) parts only.
Stepover (universal Op Config)Op SpecificLateral step between passes (mm). Default 4.0 mm.
Stepdown (universal Op Config)Op SpecificRadial depth of cut per shell (mm). Default 4.0 mm.
Feed / Plunge (universal Op Config)Op SpecificFeed 800 / Plunge 300 mm/min defaults.
Tool

Flat end mill roughing: the cut width per pass is the tool diameter; only the angular step between passes scales with radius.

Selection variant

Level Rough (Selection): same kernel confined to the picked STEP faces; the manual window rows are dropped (the pick defines the region).

Watch out for
  • Heights Top/Bottom/Feed are greyed — this op reads only Retract (safe radial) and Clearance; the cut geometry comes from the part and stock.
  • The Axial/Angle window rows grey out on B-rep parts — use the Selection variant there.
  • Like Adaptive, no shank/holder collision check — stickout is the operator's guarantee.
Parallel Rotary ops panel

The rotary surface finish: scan-line passes draped over the cylinder, fit into glass-smooth line-and-arc G-code.

How it cuts

It is 3-axis Parallel wrapped onto the cylinder: the part is rayed once into a cylindrical contact buffer, then dilated by the ball with a closed-form formula so a late pickup (gouge) is impossible by construction. Passes are uniform-pitch rings or axial scans (industry-standard spacing), lightly smoothed inside a bounded tolerance tube that never crosses a real wall, then each run is fit with the same greedy line+arc engine as 3-axis Parallel — a fitted line is exactly one machine-frame move with zero chord error, and arcs are re-linearized on the fitted circle so raw scan noise never reaches the G-code. Emitted as G93 inverse-time coupled motion.

Key controls
Scan directionOp SpecificAxial (default) = scans along the rotary axis; Angular = rings around it. (Note this op's menu says Angular, not Radial.)
LinkingOp SpecificHow scan lines connect: Spiral (default, continuous helix), Zigzag, or Lift (retract-rapid between lines).
Sample stepOp SpecificScan-line sampling step (mm). Default 0 = auto = Stepover / 2.
SmoothingOp SpecificBounded (default): smooths contact noise within +/-0.03 mm of the raw contact; real walls (ribs) are split boundaries the filter never crosses. Off = raw contact.
Total toleranceOp SpecificThe line/arc fit accuracy band (mm). Default 0.025 mm.
Stock to leaveOp SpecificMaterial left ON the surface along the surface normal (mm). Default 0 = cut to size; negative = cut IN by that much (correcting a measured oversize). No compute cost — the solve just rolls a bigger ball.
Edge passOp SpecificCheckbox, default OFF. Re-cuts flagged rim/edge stations against a 4x-fine local rescan so the ball envelope cannot shave them (measured: shave tails 0.150 -> 0.085 mm). Costs about 2-3x compute whole-part, more on a feature-dense band — switch it on for the program you actually export.
Axial from / Axial toOp SpecificContainment window along the rotary axis (WCS mm), each with a viewport Pick button (pick a ring edge for an exact boundary). Both 0 = whole part.
Angle from / Angle toOp SpecificAngular window (deg). 0..360 = full wrap.
Stepover (universal Op Config)Op SpecificSpacing between scan lines (mm). Default 1.0 mm.
Cut direction (universal Op Config)Op SpecificA-sweep sense: Climb (CCW, default) or Conventional (CW). Only these two — a helix has a single A direction, so there is no alternating option.
Feed / Plunge (universal Op Config)Op SpecificFeed 600 / Plunge 300 mm/min defaults.
Tool

Ball end is the default (Cutter type: ball end); end-mill and bull nose (with Cutter corner R) are also accepted by the contact solve.

Selection variant

Parallel (Selection): same knobs, confined to the picked STEP faces via the face pick — the region is the pick, not a knob.

Watch out for
  • Heights Top/Bottom/Feed are greyed — only Retract and Clearance are consumed.
  • Tip gouge is excluded by construction in the contact solve; the Certify Toolpath button independently sweeps the complete shank/holder against the mesh and reports — it never edits the path.
  • The edge pass costs about 2-3x compute whole-part and up to about 7x on a feature-dense band — leave it off for interactive tuning.
Pencil Rotary ops panel

Traces the inside corners of a rotary part — the concave seams where two surfaces meet — like a 3-axis pencil pass.

How it cuts

It walks the part's face adjacency to find concave edges, filters out tessellation noise below the Seam angle threshold, chains the seams into continuous runs, and then places the ball tangent to every face meeting at each point, emitting the tip along the seam. Because the cutter axis is locked to the radial direction on a 4-axis machine, a seam whose bisector tilts too far tangentially (worst case the wall-floor circle of a radial bore) cannot be cut without grazing the wall — those seams are rejected by the Reach tol gate rather than gouged.

Key controls
Seam angleOp SpecificMinimum concave dihedral angle (deg) for an edge to count as a seam. Default 30 deg — raise to skip shallow blends, lower to catch soft corners.
Reach tolOp SpecificThe 4-axis reachability tolerance (cosine, 0-1). Default 0.25 (~14 deg off the radial-axial plane): seams whose bisector tilts tangentially beyond it are rejected as unreachable by a radially-held tool.
Cut direction (universal Op Config)Op SpecificSeam A-travel sense: Climb (+A, default) or Conventional (-A). Only these two — a seam trace has one direction per pass, so there is no alternating option.
Feed / Plunge (universal Op Config)Op SpecificFeed 600 / Plunge 300 mm/min defaults.
Tool

Ball end only in practice — the contact math places the ball centre on the seam bisector so the ball kisses both faces at once.

Selection variant

Pencil (Selection): traces only the seams adjacent to the picked faces.

Watch out for
  • Needs STEP face topology: on a plain STL (no face IDs) the op returns an EMPTY toolpath — that is the designed refusal, not a bug.
  • Heights Top/Bottom/Feed are informational; the contact radius comes from the mesh. Retract = safe radial, Clearance = final park.
  • Shank collision is currently a warning in the log only — no per-move flag in the path yet.
Geodesic Finish Rotary ops panel

The true simultaneous 4-axis flank finish: A turns continuously with all three linear axes so the ball always meets the picked flank square-on.

How it cuts

You pick a flank (or a connected patch of faces) on a STEP part; the geodesic iso-contour engine lays evenly spaced passes over it, and each sample is posted to X, Y, Z and A so the surface normal is presented vertical in the machine's cross-section plane — output is G93 inverse-time coupled motion. A per-sample lean solve (within your Lean min/max) steers the tool around obstacles like the channel's opposite wall with zero-penetration against the whole solid as the hard constraint, preferring the Contact angle you set for surface speed. What the posture cannot reach is trimmed and reported, never silently kept.

Key controls
Lean min / Lean maxOp SpecificThe solver's allowed tool-lean range (deg), defaults -45 / +45. Tighten on machines with limited travel; the solve stays inside it per sample.
Contact angleOp SpecificPreferred off-tip engagement angle (deg). Default 15 — keeps the cut off the dead-centre tip for surface speed.
Residual minOp SpecificSkip passes shorter than this much cut (mm). Default 0 = keep every pass.
Smoothing (0-8)Op SpecificLaplacian smoothing iterations on the drive polyline (de-wavies the path and the A axis). Default 8; dial down for tight fillets.
Presentability (0-1)Op SpecificMinimum cross-section normal a rotary A can present; samples below it are axial end caps and are dropped. Default 0.10 admits shallow-drafted near-transverse faces; raise toward 0.25 to reject shallower; 0 keeps all.
Side clearanceOp SpecificExtra radial air the planner demands between the stock and everything above the cutting ball (flute/neck/shank/holder), in mm. Default 0.5. Certify still reports true geometry; tight passages may trim more.
Stepover (universal Op Config)Op SpecificIso-contour (pass) spacing (mm). Default 0.3 mm.
Feed / Plunge (universal Op Config)Op SpecificFeed 1000 / Plunge 300 mm/min defaults. No Cut direction row — the sweep sense comes from the geodesic march.
Tool

Ball end ONLY (corner radius > 0) — flat and bull nose tools are refused. Tapered ball is supported: the flute cone is staged into the collision model so the lean solve avoids it.

Selection variant

Selection-only by nature: whole-body or face-pick through the same op row; the picked faces MUST be one connected patch (a selection in two or more separate pieces is refused).

Watch out for
  • STEP / B-rep only — STL has no pickable faces, so the op refuses (the inverse of the mesh-only rotary ops).
  • Heights Top/Bottom/Feed are informational; only Clearance and Retract are consumed — tip position comes from the posted contact geometry.
  • There is no Certify checkbox on this op: the kernel's certification always runs during generation, and the independent full-body report lives behind the Certify Toolpath button.
  • An open-shell (non-volumetric) mesh cannot be certified — the signed-distance oracle has no inside/outside; certification is skipped aloud rather than reporting noise.
Contour Rotary ops panel

The rotary Z-level finish: conforming contours at descending radius levels, tool pointing straight at the centreline — pairs with Level Rough the way the 3-axis Z-Level finish pairs with its rough.

How it cuts

The part is sliced with cylinders about the rotary axis at descending radius levels; at each level the op walks the exact iso-line where the ball just touches the part plus your Stock to leave — so a blade is an island the contour walks around, never an edge to cross. The tool stays through-axis (no lean solve, zero orientation freedom), a strategy class proven against a production-CAM reference toolpath. Every contour vertex is pinned to the true offset surface by an exact-distance solve, unreachable spots (overhung flanks, blocked reach) are trimmed and reported rather than silently kept, and every link between cuts travels a certified corridor. Heights Top and Bottom bound the radius ladder (they are tip radii, the Z-level Top/Bottom analogue).

Key controls
Radial stepdownOp SpecificTHE primary knob (top row): how far the contour ladder drops in RADIUS between passes (mm). Default 0.8 mm. Smaller = finer surface and proportionally more levels — cycle time scales almost linearly. Deliberately independent of the universal Stepover row, which is greyed for this op (the Tool Library rewrites Stepover on every tool change and would silently retune the ladder).
Stock to leaveOp SpecificExtra normal offset left on the surface (mm). Default 0 = cut to size.
Side clearanceOp SpecificExtra radial air (mm, default 0.5) demanded around the tool body — but ONLY on tiers wider than the ball (shank above ball diameter, neck, holder). A straight shank at exactly ball diameter gets NOTHING from this knob: in the wall-riding pose (shank parallel to the wall the ball just cut) extra air there is geometrically impossible — demanding it would refuse most of the cap-ring points. Shank rub on a concave flank is governed by Max flank lean, a necked tool, or Stock to leave instead.
Max flank leanOp SpecificMax flank angle above the ball equator the pass will engage (deg). Default 18. Up to this angle the tool tilts off the rotary axis (machine Y, both senses) to ride leaning and shadowed flanks; every tilted pose is collision-certified. Y excursion ~ radius × sin(angle) — mind the machine's Y travel. 0 = strictly through-axis.
Contact windowOp SpecificCheckbox, default OFF. When on, out-of-window contacts are re-posed about the fixed ball centre — the cut itself never moves, in-window vertices keep their pose exactly, nothing is trimmed. Off = emission identical to the knob not existing.
Contact minOp SpecificContact window low bound (deg), default 15 — burnish guard: surface speed at the contact scales with sin(angle) and dies at the tip.
Contact maxOp SpecificContact window high bound (deg), default 60 — gouge guard: past 90 the neck eats stock; 60 keeps clear of the cliff. Operator guidance: best around 30, stay away from both extremes. The UI cross-clamps so min < max always.
OrderingOp SpecificFeature serpentine (default): finish each feature's descending serpentine before moving on — crankshaft webs, blade flanks. Level sweep (360): traverse the full 360 at every level before stepping down — the disc-part idiom (impeller), at the cost of a link over each blade per level.
Min segment lengthOp SpecificDrop toolpath fragments shorter than this (mm). Default 0 = keep everything; full rings never drop. Blocked bands slice contours into slivers that each pay a plunge/retract for millimetres of cut — excluding them trades tiny coverage for far cleaner linking.
Axial from / Axial toOp SpecificWhole-part axial window (WCS mm) — e.g. bracket just the blades and hub on a disc part. Hidden while a face pick is active (the pick is the scope); a typed window survives the pick and returns when it clears.
Cut direction (universal Op Config)Op SpecificSerpentine sense: Both ways (alternating, default), or one-way Climb / Conventional with lifted-retrace returns.
Feed / Plunge (universal Op Config)Op SpecificFeed 1000 / Plunge 300 mm/min defaults.
Tool

Ball end — the level math is built on the ball-centre offset surface (levels run at tip radius + ball radius). The reach check models the full tool body: flute cone, neck, shank, holder.

Selection variant

Same row offers Whole Part and Selection: a face pick confines the contours to the picked region and hides the axial window rows (whole-part only, per the operator's rule against dead knobs).

Watch out for
  • Reading the Certify report: it is POOL × PART × DEPTH — pools are feed / plunge / retract / rapid, part names which body segment touched (ball / shank / holder), and depth bands are clean up to 0.05 mm (mesh-fidelity floor: STL facets themselves deviate ~16 um median), graze 0.05-0.2, then 0.2-0.5, then above 0.5 mm. Near-surface readings are EXACT mesh tests, not grid estimates — the grid only fast-clears far poses.
  • A 53-micron shank reading on a concave flank is the geometry of a straight shank leaning over the wall — Side clearance will not remove it (it guards only the fat tiers). Reach for Max flank lean, a necked tool, or Stock to leave.
  • Hop lifts between cut pieces sit in the PLUNGE pool at plunge rate BY DESIGN: they stay at depth below the safe cylinder, and the writer renders retracts as G0 — a max-rate rapid at depth is not acceptable below the safe cylinder, so these are G1 at plunge rate along a certified corridor.
  • The universal Stepover row is greyed on purpose — Radial stepdown on the Op Specific panel is the level step, and nothing links the two.
  • Near-cylindrical full-revolution bands are this op's documented starvation zone — the Parallel family owns those regions, exactly as 3-axis Z-level pairs with Parallel.

Rotary — features & 2D 4-axis

Drill Rotary ops panel

Radial peck-drills a batch of holes into the rotating stock, one plunge per hole at its axial + A position.

How it cuts

For each hole: rapid to the safe radial at the hole's A angle, plunge radially in (a peck cycle when Peck depth > 0, one continuous plunge when 0), optional dwell at the bottom, rapid retract. Holes are ordered by a greedy shortest-A walk (sorted by axial and A, with A unwrapped to the nearest +/-360) so the table never rapids 359 degrees the long way round; the order is stable on the input, so after a tool break you can count holes by index. Breakthrough for through holes lives on the heights Bottom offset, not a knob.

Key controls
Peck depthOp SpecificDepth per peck, mm. 0 (default) = single continuous plunge; above 0 = peck cycle that fully retracts to the safe radial between pecks for chip clearance.
Dwell (s)Op SpecificSeconds to dwell at the hole bottom on the final plunge for chip clearance. Default 0.
Tool

A drill bit (or stub drill) at the hole diameter — the cycle is a straight radial plunge, no orbiting. Default tool Ø 4 mm.

Selection variant

User Defined Ops panel, Rotary tab: "Drill — Pick holes" accumulates a batch, then Run (N) drills them all with one tool. True 4 Axis tab: "Ecc. Drill — Pick hole" is a single pick of an OFF-CENTRE hole; the op offers same-diameter eccentric siblings and drills them in one op (same kernel, per-hole pose).

Watch out for
  • No Retract mode choice here (unlike 3-axis drill): the rotary drill always full-retracts between pecks.
  • Breakthrough is set by editing the heights Bottom offset, not by an op parameter (default 0 = no breakthrough).
Bore Rotary ops panel

Enlarges radial holes by orbiting; A mode chooses between a held-A arc orbit and a true wrapped helical orbit.

How it cuts

Two motion strategies behind one op, deliberately BOTH offered and never collapsed: Static A rotates the hole under the spindle once, holds A, and orbits in clean G2/G3 arcs treating the cylinder wall as a flat tangent plane — the dimensional-truth choice for small bores. Helical A interpolates A with the axial axis so the tool follows the actual circle traced on the OD (emitted as short segments under G93 inverse-time) — the edge-quality choice when curvature dominates (large bores). Auto picks by chord error (roughly orbit radius / stock radius <= 1/8 stays static). With Pitch > 0 each orbit descends helically and closes with one flat finishing orbit; with pitch 0 it stepdown-levels with a straight plunge per level (good on a pre-drilled pilot). Batches share the shortest-A hole ordering.

Key controls
A modeOp SpecificAuto (default; chord-error pick) | Static A (A held; flat-tangent G2/G3 orbit, accurate on small bores) | Helical A (A interpolates with the axial axis, large bores).
Target ØOp SpecificFinished bore diameter, mm. Seeded from the AFR-detected / picked hole diameter; 0 = use that seed.
PassesOp SpecificNumber of radial passes stepping out to the wall. Default 1.
Cut orderOp SpecificInside-out (default; final pass at the wall — the finishing order) | Outside-in. Only meaningful when Passes > 1.
Wall stockOp SpecificRadial stock left on the wall for a later finish pass, mm. Default 0.
Tool

Endmill smaller than the target bore (it orbits out to size). Default tool Ø 4 mm.

Selection variant

User Defined Ops panel, Rotary tab: "Bore — Pick holes" (batch). True 4 Axis tab: "Ecc. Bore — Pick hole" single-picks an off-centre hole and offers eccentric siblings — same kernel via the per-hole pose.

Watch out for
  • The helix descent per rev rides the universal Op Config STEPDOWN row (mapped to pitch, default 0.5 mm/rev) and the multi-pass orbit spacing rides the STEPOVER row — there are no separate op rows for them.
  • No lead-in for rotary bore (intentional): it enters by an air descent to the OD kiss plus the helix, which is already gouge-free, so the 3-axis sized lead-in was not ported.
  • Pilot diameter and depth are derived server-side from the stock companion feature; 0 keeps the derivation.
Face (rotary) Rotary ops panel

Tabbed end-contour parting: the tool holds still while the part rotates under it, cutting the part to final OD at the parting plane.

How it cuts

Per radial pass from stock OD in toward the target: for each tab slot, plunge radially, feed a pure-A arc through the slot, lift, move to the next slot; then step the radius in by Stepdown. With Tabs = 0 each pass is one full revolution. Tab width is specified in mm of arc AT STOCK OD, so the physical tab is the same size regardless of part diameter. The cutter centre sits one tool radius on the air side of the parting plane, so the flute cuts exactly AT the boundary instead of straddling it. Because every feed move is a pure A move, the writer emits G93 inverse-time feed.

Key controls
TabsOp SpecificNumber of evenly spaced holding tabs left to keep the parted section on its parent stock (broken off at the bench). Literal count: 0 really means untabbed. Auto-seeded at op creation from the stock walk — tube stock seeds 3, solid seeds 0 — and you can override either way.
Tab widthOp SpecificArc length of each tab at stock OD, mm. 0 = stock-derived default (4 mm on tube stock).
End (air side)Op SpecificMin | Max: which side of the parting plane is air (seeded from the detected end-face feature). Sets which way the cutter offsets off the boundary.
Tool

A narrow end mill (default Ø 3 mm) — it is a parting cut; depth per radial pass is the universal Op Config Stepdown (default 0.5 mm).

Selection variant

AFR END FACES section, or User Defined Ops panel, Rotary tab "Face — Pick face" (B-rep pick of the end face).

Watch out for
  • Tab geometry is validated: each tab arc must be smaller than its slot arc (360/Tabs) and larger than zero, or the op refuses.
  • There is no Tab height knob here — facing parts off at a single plane, so tabs have width only (unlike the 3-axis contour tabs).
  • Cut mode row offers Stepped (per-level passes) or Spiral (continuous radial spiral).
OD Step Rotary ops panel

Turns a cylindrical span down to a target OD with a continuous helical serpentine sweep.

How it cuts

Approaches at one axial end at the safe radial, then helically descends by Stepdown while sweeping axially across the span, reverses at the opposite end, descends again, and serpentines until the target radius is reached; the retract spirals out if the exit end is open. Boundary handling per end: at a "wall" end the cutter centre stays a tool radius INSIDE the edge so the side flank cannot gouge the neighbouring full OD; at an "open" end it overtravels a tool radius so the bottom edge cleans the edge fully. The same op serves a step turn-down and full-OD facing — the difference is just which OD region you pick.

Key controls
Cut strategyOp SpecificContinuous (default): helical descent + sweep, the roughing mode. Stepped: discrete full-circle passes for clean walls and floor — the mode that enables the tangent-arc lead-in (set Lead-in R in the Op Config Pattern section).
Axial / revOp SpecificAxial advance per revolution (continuous) / column stepover (stepped), mm. 0 (default) = auto = 50% of tool diameter.
Tool

SQUARE end mills only (v1) — the cutter's bottom edge sweeps along the OD; there is no plunge into a side wall. Default Ø 4 mm; radial depth per pass is the universal Stepdown (default 0.5 mm).

Selection variant

AFR OD REGIONS section (largest region = stock OD facing target; smaller = step targets), or User Defined Ops panel, Rotary tab "OD Step — Pick face".

Watch out for
  • Square end mill only; a ball or bull nose is not supported here.
Face Finish Rotary ops panel

Side-mill (flank) finish of the flat faces that stand square to the rotary axis — crank-web cheeks and OD-step shoulders.

How it cuts

These transverse faces cannot be reached by the tool END, so the end mill FLANK finishes them: the cutter centre sits one tool radius (plus any stock to leave) onto the face's open side so the flank is flush with the face plane, then orbits at discrete radial levels from the face's outer material radius inward while the part rotates. Each orbit is CLIPPED to the real material at that radius via the recognised region polygon — a plain annulus gets full circles, a crank-web cheek gets arcs that follow the counterweight edge and skip the pin bore (islands are grown by a tool radius so the flank can't touch the pin).

Key controls
Stepdown (universal Op Config row)Op SpecificHere it is the RADIAL stepover — the band of face finished per orbit, mm. Default 6.0. Keep it at or below the tool's flute length, since the flute must cover the band between levels.
Cut direction (universal Op Config row)Op SpecificOrbit sense for the full-ring sweeps. Default alternating.
Tool

An end mill cutting on its FLANK (default Ø 6 mm). Flute length is the real limit: it must span the radial band per orbit.

Selection variant

Dispatched from the AFR VERTICAL FACES section — there is no User Defined Ops palette row and no op-specific parameter rows.

Watch out for
  • Sector padding and stock-to-leave use internal defaults in v1 — they are not operator rows.
  • If the radial stepover exceeds the flute length, the band between levels is simply not covered — the UI does not police this.
Groove Rotary ops panel

Plunges a square circumferential groove into the OD by a serpentine helical descent between the two walls.

How it cuts

Approaches one groove wall at the safe radial, helically descends in place at that wall by one Stepdown, sweeps axially at the new depth to the opposite wall, descends there, sweeps back — repeating until full depth, with a single retract at the end. Groove width is the detected axial span; depth runs from stock OD down to the groove floor (heights Bottom, seeded from the AFR-detected inner radius).

Key controls
Cut strategyOp SpecificContinuous (default): helical roughing sweep. Stepped: discrete full-circle passes — enables the tangent-arc lead-in (Lead-in R in Op Config).
Axial / revOp SpecificAxial advance per revolution / column stepover, mm. 0 (default) = auto = 50% of tool diameter.
Tool

SQUARE end mills only (v1), and the end mill diameter MUST NOT exceed the groove's axial width — the kernel refuses otherwise. Default Ø 3 mm; radial Stepdown default 0.5 mm.

Selection variant

AFR OD REGIONS section only (grooves are a group type there, beside Full OD and Steps) — grooves are auto-detected; no User Defined Ops palette row.

Watch out for
  • Square end mill only, sized inside the groove width.
Slot Clear Rotary ops panel

Clears a closed-perimeter through-slot in tube stock — the cut goes clean through the wall to the ID.

How it cuts

A slot and a pocket are the SAME geometry to the kernel: a closed perimeter on the unrolled cylinder, cleared radially level by level from the OD down to a floor — for a tube slot the floor is the stock ID, so the cut breaks through and there is nothing under the floor. Per level the cutter walks the offset perimeter with interpolated A that is re-projected per depth (a deeper cutter sits at a smaller radius, so the part rotates further to stay on the same physical wall). Cut mode (universal row) picks Helical continuous descent vs Stepped per-level passes; Keep tool down governs retracts in stepped mode.

Key controls
Clear floorOp SpecificSpiral the interior out instead of profiling only the perimeter. Defaults OFF for a tube slot (there is no floor material — the slot is through).
Wall stockOp SpecificRadial stock left on the walls for a finish pass, mm. Default 0.
A modeOp SpecificAuto (default, resolves to Interpolated) | Interpolated (A tracks the wrap continuously — the general path) | Static (A held at the recess centre, cut runs as a flat tangent plane in plain G94 — a fallback for machines that cannot interpolate A, accurate only while the recess is small versus the stock radius).
Finish passOp SpecificRough leaves stock, then a light final pass removes it: floor via Floor stock; walls via Wall stock > 0 (wall-contour pass down every level).
Floor stockOp SpecificDepth stock the roughing leaves above the floor, removed by the finishing skim, mm. Default 0 (opt-in).
Pocket directionOp SpecificOutside-in (default) | Inside-out ring progression when clearing the floor. Honoured in Stepped cut mode only.
Tool

Flat end mill (default Ø 4 mm); walls are vertical only — no corner fillet/chamfer/taper profiling. Stepover and Cut direction ride the universal Op Config rows; Stepdown 0 = auto (50% of tool Ø).

Selection variant

AFR SLOTS section, or User Defined Ops panel, Rotary tab "Slot — Pick floor/wall" (B-rep only; greyed on STL — the pick needs analytic faces). The picked recess IS the region.

Watch out for
  • Pocket direction is inert unless Clear floor is ticked (a profile-only pass cuts one ring per level — there is no ring order to choose); the row greys with that reason.
  • In Helical cut mode the direction is fixed outside-in; Stepped is the mode where your choice applies.
Pocket Clear Rotary ops panel

Clears a closed-perimeter recess in solid cylinder stock down to a radial floor, spiralling the interior out.

How it cuts

Same kernel as Slot Clear — the only real difference is the floor: a solid pocket has material under it, so Clear floor defaults ON and the interior is spiralled out at each level. The perimeter walk uses interpolated A re-projected per radial level so the cutter stays on the physical walls as it descends; Cut mode (universal row) picks Helical continuous descent vs Stepped per-level passes.

Key controls
Clear floorOp SpecificSpiral the interior out (solid pocket). Defaults ON for a pocket in solid stock.
Wall stockOp SpecificRadial stock left on the walls for a finish pass, mm. Default 0.
A modeOp SpecificAuto (-> Interpolated) | Interpolated | Static (flat-tangent fallback; small recesses / non-interpolating machines).
Finish passOp SpecificFloor finishing skim — rough leaves Floor stock, final pass removes it; Wall stock > 0 adds a wall-contour finishing pass.
Floor stockOp SpecificDepth stock removed by the finishing skim, mm. Default 0.
Pocket directionOp SpecificOutside-in (default) | Inside-out ring progression. Stepped cut mode only; inert without Clear floor.
Tool

Flat end mill (default Ø 4 mm). Floor-clear ring spacing = universal Stepover (0 = auto); radial engagement auto-falls back to 50% of tool Ø.

Selection variant

AFR POCKETS section, or User Defined Ops panel, Rotary tab "Pocket — Pick floor/wall" (B-rep only; greyed on STL). The picked floor or wall derives the recess feature.

Watch out for
  • Pocket direction greys out unless Clear floor is on, and only Stepped cut mode honours it (Helical is outside-in by construction).
Clear Plug Rotary ops panel

Clears the stock ring AROUND a raised plug or boss, leaving the plug standing on the cylinder.

How it cuts

Runs the pocket/slot clearing kernel's islands branch: the region to clear is the band around the picked plug out to the Clear offset, cleared radially level by level with the plug protected as an island. Because the plug stands through every level, the floor-finish / ring-direction machinery of the ordinary pocket does not apply here.

Key controls
Clear offsetOp SpecificHow far out from the plug the stock is cleared, mm. Default 5.0. (Facing has the same knob under the name XY margin.)
Wall stockOp SpecificRadial stock left at the plug wall for a finish pass, mm. Default 0.
A modeOp SpecificAuto (-> Interpolated) | Interpolated | Static — same A-interpolation choice as the other clears.
Tool

Flat end mill (default Ø 4 mm), same tooling model as Pocket Clear.

Selection variant

User Defined Ops panel, Rotary tab "Clear Plug — Pick plug" (B-rep only): pick the plug's face; the op clears around it.

Watch out for
  • Finish pass, Floor stock, Pocket direction, Cut mode and Keep tool down are deliberately absent — the islands branch ignores them (the plug stands through the region), and this exclusion is locked.
  • This clears AROUND material; it never touches the plug face itself beyond Wall stock.
Clear by Feature Rotary ops panel

Roughs the stock bay around an eccentric journal (crank pin): full-revolution sweeps whose tip lifts over the orbiting pin like a cam follower.

How it cuts

Per axial station and radial level, the tool makes a full-revolution A sweep while the tip rides the flat-end-mill radius-compensated silhouette of the pin circle — lifting over the pin and returning to the level on the far side (the classic "rotary pocket" strategy, but feature-driven). The cam is computed for an inflated pin (radius + stock to leave) so the leave is normal to the pin surface everywhere. One shared A grid serves every level, station and journal; descents and axial transits happen at the pin-down home angle, and rapids happen only at clearance. This op is the ROUGH: it leaves Stock to leave everywhere plus a lift-over scallop band (up to the stepdown) on the pin flanks — Eccentric Turn finishes the pin, Fillet finishes the cheek blends.

Key controls
Stock to leaveOp SpecificRadial stock left on the pin for the Eccentric Turn finish, mm. Default 0.5.
Cheek marginOp SpecificAssumed maximum cheek-fillet radius, mm (default 2.0): passes near the bay edges ride higher so an unmodeled fillet cannot be gouged; transits at depth also clear it.
A stepOp SpecificA-axis sample step per revolution, deg (default 2.0). Snapped to an exact divisor of 360 so every level shares one grid — drift between grid index and machine angle would be a gouge, not a texture.
Tool

Flat end mill, default Ø 10 mm. Radial level step = universal Stepdown (default 2.0 mm); axial station step = universal Stepover (default 4.0 mm, 40% of the D10 default).

Selection variant

True 4 Axis tab: "Clear by Feature — Pick pin". Operates on detected eccentric-journal features; one op batches a set of journals.

Watch out for
  • Rough only — expect Stock to leave everywhere plus a scallop collar on the pin flanks; do not ship this as a finish.
  • A tool-fits-bay gate refuses the op when the tool cannot keep tool radius + stock clear of the cheeks.
  • Stepover here is real mm, not 0-for-auto (the field's minimum is 0.01 mm, and 0.01 mm on this op once meant about 5.5 million segments).
Eccentric Turn Rotary ops panel

Finishes the crank-pin surface by orbital crown following — the tool tracks the orbiting pin at every table angle.

How it cuts

The tool axis follows the pin centre on the machine tangent axis while the tip rides the crown height, so the flat tool bottom stays tangent to the (allowance-inflated) pin at the point directly under the tool centre at every A. Over one revolution the contact point sweeps the ENTIRE pin circumference. The pass ladder starts at Stock allowance (what Clear by Feature left), descends by Pass depth to zero, then repeats Spring passes at zero — pass-major order with zig-zag station order. The shared A grid auto-refines until the orbit chord sag (which would undercut the crest) is below tolerance.

Key controls
Cut modeOp SpecificHelical (default): one continuous 4-axis helix per pass — axial feed = stepover mm/rev while orbiting, cleanup rings at the band ends, no station hop marks. Orbit: discrete full-revolution orbits per axial station.
Stock allowanceOp SpecificRadial stock the bay rough left on the pin, mm (default 0.5) — where the finishing ladder starts.
Pass depthOp SpecificRadial depth removed per finishing pass, mm. Default 0.25.
Spring passesOp SpecificExtra zero-allowance repeats after the final pass, to spring tool deflection out of the pin. Default 1.
Cheek marginOp SpecificAssumed max cheek-fillet radius, mm (default 2.0) — same gouge guard as the clear.
A stepOp SpecificA sample step, deg (default 2.0); snapped to an exact divisor of 360, then auto-refined for chord sag.
Tool

Flat end mill, default Ø 10 mm — the flat bottom is the contact model. Axial station step = universal Stepover (default 7.0 mm, 70% of the D10 default). No Stepdown field for this op.

Selection variant

True 4 Axis tab: "Eccentric Turn — Pick pin". Same journal features as Clear by Feature; one op batches a set.

Watch out for
  • PREREQUISITE (noted on the toolpath): the bay must already be cleared by Clear by Feature — the tool shank sweeps the bay volume above the pin and the kernel models ONLY the pin.
Fillet Rotary ops panel

Continuous-A ball finish of a concave transition fillet — the radius blending a journal or step into a web or shoulder.

How it cuts

A ball-end tool rides the fillet arc while the A axis sweeps a full revolution per arc station; the ball centre sits inward along the surface normal so the ball is tangent to the fillet, and the toolpath carries the cutter TIP. The same kernel serves a coaxial fillet (a surface of revolution) and an ECCENTRIC fillet on an orbiting crank pin — the eccentric pose follows the pin centre via the same validated map the Eccentric Turn uses. The tool stays down marching between arc stations (a surface finish is continuous contact); rapids only at clearance; the eccentric A grid auto-refines until orbit chord sag is under tolerance.

Key controls
Fillet stepOp SpecificAngular step between fillet rings along the arc, deg (default 3.0) — smaller = finer cusp and more rings.
Stock to leaveOp SpecificExtra normal offset left on the fillet surface, mm. Default 0.
Tool

BALL end mill (default Ø 6 mm), and the ball radius must be SMALLER than the fillet radius or it cannot enter the blend.

Selection variant

Manual single-face pick (there is no AFR detector): "Fillet — Pick face" — pick the torus face; the deriver reads it and handles coaxial OR eccentric transparently, including a partial arc. Offered in BOTH the Rotary Feature Ops and True 4 Axis columns.

Watch out for
  • A step is fixed at 2.0 deg internally — not a knob.
  • Cut direction (universal row) sets the ring A-sweep sense: alternating (default) | climb (+A every ring) | conventional (-A every ring).
  • Toolpath notes carry stickout depth, ball fit and tangent travel — read them before cutting an eccentric fillet.
Chamfer Rotary ops panel

Finishes a straight-bevel cone chamfer on a journal or pin shoulder, coaxial or on an orbiting crank pin.

How it cuts

Two tool models behind one Strategy knob. Form: a conical chamfer / spot tool whose flank matches the bevel angle rides the chamfer flush, one full A revolution per pass, with a radial ladder marching the tip from the shoulder end to the journal corner — standard chamfering, but the tool angle must match. Mill: a ball or bull nose end mill rides the cone face in Stepdown rings along the bevel (like the rotary Fillet but on a straight bevel) — any tool angle. Eccentric pins use the same validated pose map as the Eccentric Turn/Fillet so the tool follows the pin, not an epitrochoid; tool stays down between passes and rapids only at clearance.

Key controls
StrategyOp SpecificAuto (default; picks from the assigned tool — angled chamfer/V tool -> Form, ball/bull -> Mill) | Form (chamfer tool) | Mill (ball / bull nose).
Tool half-angleOp SpecificChamfer tool half-angle, deg (default 45 — a 45x45 chamfer). The bevel angle the flank cuts, Form strategy.
StepdownOp SpecificBevel-pass spacing measured along the chamfer face, mm (default 1.0) — smaller = finer cusp / more rings (Mill strategy). This is the op's own row, separate from the universal 3-axis Stepdown.
Stock to leaveOp SpecificExtra normal offset left on the bevel, mm. Default 0.
Spring passesOp SpecificExtra zero-stepover finishing repeats. Default 0.
Tool

Form strategy: an angled chamfer / V tool whose half-angle MATCHES the chamfer — a mismatch is refused. Mill strategy: any ball or bull nose end mill (default Ø 6 mm).

Selection variant

Manual single-face CONE pick: "Chamfer — Pick face", offered in both the Rotary Feature Ops and True 4 Axis columns; the deriver handles coaxial or eccentric, including partial arcs.

Watch out for
  • Form is refused when the tool angle does not match the chamfer angle — switch to Mill for an off-angle tool.
  • Cut direction (universal row): alternating (default) | climb | conventional ring sense. A step is fixed at 2.0 deg internally.
Wrapped Contour Rotary ops panel

Pick an edge chain or face outline; it is unrolled flat and wrapped back around the cylinder as a 2D contour cut.

How it cuts

The picked 3D polyline is unrolled to flat (axial, around-the-surface) coordinates upstream, then wrapped onto the cylinder as continuous interpolated-A motion, cutting from the surface radius down to the floor (heights Bottom) in Stepdown radial steps. Paths can be OPEN (an engraving stroke or edge trail) or CLOSED (a face outline / edge loop). Keep tool down (universal row) skips the lift between levels: open paths serpentine, plunging deeper at whichever end they finished; closed loops just plunge deeper at the joint. The rotary analogue of a 3-axis 2D contour.

Key controls
Cut sideOp SpecificComp side: which side of the picked path the tool offsets to, so the tool EDGE rides the contour. Right (default) = inside a closed loop (cut the feature, don't gouge it) | Left = outside | On-line = tool centre rides the path (engraving, no offset).
Tool

Endmill (default Ø 3 mm); for On-line engraving-style cuts, whatever the mark calls for. Stepdown 0 = auto (50% of tool Ø).

Selection variant

User Defined Ops panel, Rotary tab: "Wrapped Contour — Pick edge/face". Each pick fills the path, the closed flag, and the axis centerline at pick time.

Watch out for
  • The lead arc rides the universal Op Config "Lead-in R" row, not an op row: 0 (default) = plunge on the contour line; > 0 adds tangential lead-in/out arcs on the void side of closed loops. Opt-in.
  • Depth is the heights Bottom radial floor — set your cut depth there.
Wrapped Pocket Rotary ops panel

Pick a closed face or loop on the cylinder; the region is unrolled, wrapped, and CLEARED as a solid pocket.

How it cuts

Same manual pick as Wrapped Contour, but the closed region routes through the rotary pocket-clearing kernel: the perimeter is offset inward by the kernel itself and the recess is cleared level by level, interior spiralled out. Closed regions only. Cut mode (universal row) picks Helical continuous descent vs Stepped per-level passes, exactly as in Pocket Clear.

Key controls
Clear floorOp SpecificSpiral the interior out. Default ON — a wrapped pocket is a solid recess.
Wall stockOp SpecificRadial stock left on the walls for a finish pass, mm. Default 0.
A modeOp SpecificAuto (-> Interpolated) | Interpolated | Static — same A-interpolation choice as the other clears.
Finish passOp SpecificFloor finishing skim; Wall stock > 0 adds the wall-contour finishing pass.
Floor stockOp SpecificDepth stock removed by the finishing skim, mm. Default 0.
Pocket directionOp SpecificOutside-in (default) | Inside-out ring progression. Stepped cut mode only; inert without Clear floor.
Tool

Flat end mill (default Ø 4 mm), same tooling model as Pocket Clear. Stepdown 0 = auto (50% of tool Ø).

Selection variant

User Defined Ops panel, Rotary tab: "Wrapped Pocket — Pick face/loop" — the pick must be a closed region; it fills the path, closed flag and centerline.

Watch out for
  • Closed regions only — an open chain belongs to Wrapped Contour.
  • Comp side and Lead radius do NOT apply here: the pocket kernel offsets inward itself.
Part III — Output from the app

G-code export notes

Facts about the writer that the export dialog cannot show:

CommentsExport dialog Unticked = the writer emits no comment at all (banner, tool table, op headers, notices, inline tails). Your custom header / footer lines are always written exactly as typed.
Tool table and T wordsWriter The header lists every tool as T5 = D6mm 6mm 2F Flat — the tool number from the Tool Library and the tool's name, never a library id. Tools without a number are numbered by first use, lowest free number, and carry the tag [auto-numbered] in the tool table, with one INFO line: match those to the machine before running. With no explicit H register on any tool, G43 H follows the T number. Names with parentheses render with [ ] in comments (controls fault on nested parentheses).
Rotary word decimalsPost Angle words share their digit budget with the integer part on word-length-capped controls. The Fanuc family (Fanuc, Haas, Mazak, Doosan, Brother, Mitsubishi, Fadal, Fagor, Hurco) ships two rotary decimals: A reaches 999,999.99 deg — some 2,700 turns — before the 8-digit cap, and 0.01 deg is 10 microns of arc at a 60 mm radius. Uncapped posts keep four. The knob is per post (PP Utility > Advanced > Number format > Rotary word decimals); beyond the cap, split the program or enable the post's Rotary rewind (PP Utility > Rotary group: a G92-style position-set, cancelled at program end).
Footer retractWriter The program ends at max(safe Z, the last op's clearance), converted once — rotary ops included.
Rotary positioningExport dialog Drop whole turns / Shortest / Absolute applies within the program, every rotary op, including after a tool change. Between programs it is the control's wrapped-rotary / rollover setting that keeps the first A move short — there is no program-end unwind.
Inverse time (G93)Writer Tiny simultaneous blocks can push F words into the millions. LinuxCNC accepts them; for controls with a 6-digit F word, set the post's F word width (digits) — the export dialog warns when it is unset.
Canned cyclesExport dialog Used only where the hole motion is exactly reproducible by a cycle, and only on posts whose control parses G8x. Helical bores and mixed-depth holes stay long-handed either way.
GRBLPost Stock GRBL builds compile mist coolant out and stall the sender on M7, so the GRBL posts drop it; full-circle arcs are split in two, because a start-equals-end arc hands its sweep to the controller's float noise.
HeidenhainExport dialog Klartext streams the chained ops (contours, drills, pockets). The dense 3D ops (3D Pocket Clear, Adaptive, Parallel, Scallop, Z-Level, Ramp) are not yet supported: the dialog greys the Heidenhain row while one is ticked and restores your pick when you untick them.

Takshak 1.0 · User Manual · the app, every operation, and the G-code that leaves it.