Recommended test
Use a smoothly joined line and quarter-circle arc safely inside the stock. Keep the default 6 mm flat end mill so each side offset is 3 mm.
- In CAD, draw a horizontal line, then snap only the start of a quarter-circle arc to its right endpoint. Leave the arc’s other endpoint free—do not snap it back to the line’s first endpoint. Select either segment and confirm Path status reports Open and 2 segments.
- Switch to CAM → Operations, choose Add contour, and click either segment. The complete connected chain should enter setup with On line selected.
- Choose Left. The line should shift exactly 3 mm to its left, the arc radius should change by exactly 3 mm, and both should meet at one continuous exact join.
- Choose Right. The path should move to the opposite side without a gap, overlap, or short connecting chord. At a semicircular corner, an exact outer join may correctly extend the compensated arc slightly beyond 180°.
- With Left selected, choose Reverse direction. S/E and primitive order should reverse; because side follows travel, the physical result should match the former Right side.
- Create a very small arc or a severe line/arc corner. A collapsed, missing, excessive, ambiguous, or self-crossing offset join should be blocked with a clear message while On line remains available.
- Restore the test geometry, choose Left or Right, and select Create mixed contour. Confirm the stored operation still lets you switch among Left, On line, and Right.
- Open 3D. The solid pale-purple curve is the original CAD source, the thinner mint curve is the cutter centre, and the translucent amber channel shows the full tool diameter. Confirm the mint curve is on the selected side, then play or scrub the animation.
- Review G-code and preflight. Every pass should contain one G1 line followed by one exact G2/G3 arc, and the reviewed program should be eligible for local export after the required confirmations.
- As regressions, confirm a standalone arc still offers machinable Left/On line/Right and a line-only chain still supports compensated mitered joins.
Second-join test: Snap another line to the free arc endpoint so Path status reports Open and 3 segments in line–arc–line order. Use Add contour again, choose Left and Right, and confirm both exact joins remain continuous through 2D, 3D, animation, G1 + G2/G3 + G1 review, and preflight.
Arc–arc test: Draw two arcs that share only one endpoint, preferably as a smooth S-shaped pair, so Path status reports Open and 2 segments. Select the chain with Add contour and test Left, Right, and Reverse. The two compensated arcs should meet at one exact join, remain two circular moves in 3D and animation, and review as two consecutive G2/G3 commands.
Longer-chain test: Extend that S-shaped pair with a line at each free end, select it with Add contour, and confirm all four primitives remain continuous on Left and Right. The reviewed cut order should stay line, arc, arc, line; an impossible internal join must block the complete operation rather than skipping a segment.
Open-spline output test: Draw one unmirrored open spline safely inside the stock. In CAM choose Add contour and click the spline. Only On line should be available. Confirm the centre line, cutter band, S/E terminals, sample count, and 0.050 mm tolerance, then create the contour. Edit Cut and Step, reverse S/E, and inspect 3D animation. Open the G-code preview, confirm the sampled-spline header and one G1 cut per sample per pass, then complete preflight and verify local `.nc` saving unlocks.
01 · SELECT A BOUNDARY
Create directly in the CAM workspace
Open Contour begins with one semantic rectangle edge or an unambiguous open component made from connected lines, arcs, or a supported spline. Choose Add contour and click any segment. Cadivari follows the connected component and opens its placement controls. The associative topology reference and operation settings are committed together only when the contour is created.
02 · DIRECTION
Left and Right follow S to E
The gold caret makes the active S-to-E direction visible on the cutter centreline. Connected line chains and standalone arcs can reverse that complete direction. Rectangle edges use stable semantic travel: Bottom goes left to right, Right goes bottom to top, Top goes right to left, and Left goes top to bottom.
With the default 6 mm tool, Left or Right shifts a line by 3 mm or changes an arc’s exact radius by 3 mm. The translucent band still shows the full 6 mm cutter sweep. Reversing the path swaps the physical meaning of Left and Right.
03 · CONNECTED LINES
Offset segments meet at checked miter joins
For a connected line-only chain, Cadivari orders every segment into one continuous polyline. On line preserves those source vertices. Left or Right shifts each segment by the cutter radius and intersects adjacent shifted lines to create an explicit mitered cutter-centre corner.
S marks the machining start, E marks the end, and Reverse direction reverses every vertex—not just the selected segment. The 2D and 3D views, typed motion, animation, G-code, and export all consume the same validated compensated vertices.
An exact reversal has no defined side join. Miters beyond the conservative 4:1 limit, collapsed offset segments, self-crossing offset results, and cutter sweeps outside the stock are also rejected with a clear message. On line remains available when compensation is unsuitable.
04 · EXACT CIRCULAR MOTION
Display sampling never becomes machine output
A standalone circular arc resolves from its exact centre, source radius, signed sweep, and direction. Left and Right change the cutter-centre radius analytically by the tool radius. Reverse swaps S/E and the signed sweep, so side placement remains correctly relative to travel.
Stock validation evaluates the exact endpoints and relevant quadrant extrema before expanding them by the cutter radius. The 2D and 3D renderers receive a smooth chord-error-bounded sample only for display.
The motion plan stores centre, radius, signed sweep, and clockwise state in one circular interpolation record per depth pass. Animation evaluates that true circle, and the postprocessor turns it directly into one G2 or G3 block. Display points never become a row of short G1 cuts.
04A · EXACT MIXED GEOMETRY
Primitive order and exact joins stay explicit
An open chain containing lines and circular arcs stores an ordered exact segment list separately from its smooth display sample. Reverse direction reverses that list, swaps every segment endpoint, and negates every arc’s signed sweep.
Left and Right now compose the proven line-line, line-circle, and circle-circle solvers across the complete chain. Each retained line or arc is rebuilt between its neighboring exact joins; On line remains the unchanged source-centre option.
Compensation rejects a missing or ambiguous intersection, a collapsed/reversed segment, a join beyond the conservative 4:1 limit, a secondary or non-adjacent crossing, an arc-radius collapse or wrap, or a cutter sweep outside stock. A passing chain preserves every line as G1 and every circular segment as exact G2/G3 through 3D, animation, G-code, preflight, and export.
04B · SAMPLED OUTPUT
Review and export one On-line open spline
One standalone, unmirrored open spline can become a stored On-line operation. Cadivari begins with a bounded sample count, doubles it when necessary, and compares intermediate curve points with the resulting chords. The path is accepted only when the measured chord error is no greater than 0.050 mm, with a conservative 512-segment ceiling.
The blue line is the sampled cutter centre and the translucent band shows the complete cutter diameter. Every calculated depth pass uses one typed linear cut per sample. The same ordered moves drive the 2D summary, translucent 3D channel, pass lines, animated cutter, live XYZ readout, and G1 output. Reversing direction swaps S/E and the complete motion order.
Left/Right compensation remains disabled. Before G-code is admitted, the plan requires On-line placement, a bounded measured chord error, no more than 512 linear segments, and exact agreement between samples and path segments. Preflight then independently reconciles sample count × pass count with typed cut moves and generated G1 blocks. Any disagreement, invalid geometry, unsafe stock sweep, or invalid machining value blocks export.
05 · DEPTH PLAN
Every pass is explicit
For rectangle edges, line chains, standalone arcs, and mixed line/arc chains, cut depth and stepdown are positive millimetre inputs measured downward from stock-top Z0. Cadivari displays each resulting negative-Z pass and the exact final Z. Spoilboard overcut is a separate explicit value, so a through cut does not hide extra depth.
Feed, plunge, and the manual spindle target are stored with the operation. They are editable preview starters, not recommendations for a particular cutter, material, router, or machine.
06 · MACHINE-INDEPENDENT MOTION
One-way passes return safely
The deterministic plan starts retracted at job zero, rapids at Safe Z to S, plunges, and follows every ordered exact line or circular segment to E. It retracts at E and returns to S at Safe Z before every later pass. The last move is always a retract.
This motion plan does not claim a ramp or lead-in. Verify that the selected cutter is centre-cutting and suitable for the material before export.
07 · INSPECTION
Geometry and machine motion stay distinguishable
The 2D view separates rapid and cut geometry and reports length, segment count, pass count, final Z, and exact circular measurements where applicable. In 3D, a solid pale-purple curve marks the original CAD source, a thinner mint curve marks the resolved cutter centre, and the translucent amber channel shows the full tool diameter through every depth pass. Dashed blue is reserved for Safe-Z rapid motion.
The summary reports CAD-versus-cutter radius for an arc, or CAD-versus-cutter length for other open paths. Geometry colors remain stable when validation changes; warnings and errors stay in the operation panel and status card. The channel mesh uses the smooth display sample for rendering, while the animated tool position and exported motion use exact interpolation. Neither mode is material-removal simulation, collision detection, or an estimate of real machine time.
08 · REVIEWED OUTPUT
The tested motion is the exported motion
The Shapeoko/GRBL translator accepts the same verified rectangle-edge, line-chain, circular, and bounded spline moves used by 2D, 3D, and animation. It emits metric absolute endpoints, explicit XY-plane and incremental I/J arc-centre modes, G0/G1 linking, one G2 or G3 command per exact arc pass, and one G1 cut per approved spline sample. It preserves every Safe Z return and never invents a reverse cutting pass.
The line-numbered preview separates G0, G1, and G2/G3 counts. Spline programs include a visible sample-count, measured-error, and tolerance header. Automatic preflight independently reconciles the sampled geometry, typed moves, pass count, and translated blocks. The four session-only operator confirmations, deterministic filename and fingerprint, browser download, and native desktop save dialog are shared with closed contours. No spindle command or direct machine connection is added.
A through-depth open operation receives a dedicated workholding warning. The warning does not prove that the remaining material, stock, or clamps are safe.
09 · VALIDATION
Geometry and machining values must be consistent
Line-chain compensation checks every source segment, miter length, resulting segment length, non-adjacent path crossing, and cutter-radius sweep. Standalone arcs check exact offset-radius collapse and exact physical sweep bounds. Curved compensation validates analytical line-circle or circle-circle joins, candidate choice, retained segment direction and length, miter ratio, secondary crossing, circular traversal order, and full physical sweep. Machinable operations additionally validate depth, feed, plunge, spindle, Safe Z, motion continuity, and the translated program. Stored operations remain visible when later edits make them invalid; Cadivari reports the problem instead of silently changing the operation.
CURRENT SCOPE
Exact primitives plus bounded spline output
- One semantic rectangle edge with Left, On line, or Right cutter-centre placement and complete machine output
- One unambiguous connected line-only open chain with On-line, Left, or Right placement and complete machine output
- Mitered line/line joins with reversal, miter-limit, collapse, self-intersection, and stock-sweep validation
- One standalone circular arc with exact Left/On-line/Right radius, S/E reversal, collapse checks, depth motion, 2D/3D animation, G2/G3 review, preflight, and export
- Any unambiguous open line/arc chain with exact Left/On-line/Right pairwise joins, retained primitive order, reversal, animation, G1/G2/G3 review, preflight, and export
- Whole-chain collapse, wrap, disconnection, self-intersection, and physical cutter-sweep validation
- One standalone unmirrored open spline with adaptive On-line sampling, stored depth passes, typed G1 motion, 3D, animation, spline-specific preflight, and local export
- Spline Left/Right placement remains locked
- No bevel/round line-corner choice, open-contour tabs, lead-in, ramp, multi-operation file, or direct machine connection