The Universal Workflow
Every job, rotary or flat, is basically these steps:
- Load your model — an STL or STEP file (also PLY, OBJ, OFF, GLB, 3MF; 2D takes DXF or SVG). Conversational strategies need no model; you type dimensions.
- Set up your stock and fixture — for rotary work the bar diameter (the starting radius is half this value), the length, and how far the part sits from the chuck. The preview shows a translucent bar and a wireframe 3-jaw chuck so you can see the part inside the stock and clear of the jaws. Flip or rotate the model if its long axis is not pointing down the bar.
- Add one or more operations to the Operations queue and pick a strategy for each. A typical rotary part is two operations: a rough, then a finish, on the same tool. The queue runs them in order as one continuous program. One tool per program: a posted program never contains a tool change — for a second tool, post a separate program and run them in order.
- Pick the tool. Diameter and shape drive the toolpath, so they must match what you physically load.
- Set feeds and, for rotary, the chuck-RPM cap.
- Set the Work Zero — chuck center or top of stock, matched to how you touch off on the machine.
- Generate the toolpath.
- Preview it — backplot and Spin/sim playback. Your free dry run.
- Post and export — choose your controller, confirm the rotary axis letter and units, save the G-code file.
- Verify and prove out the final file using your machine's procedure, with work zero and tooling matched to the setup. Resolve discrepancies before cutting.
That is the whole thing. Everything below is variations on steps 3 through 6.
Coordinate system and work zero
The default X-mounted rotary frame: a Y-mounted rotary uses the configured mounting transform; confirm the posted axis directions before use.
- X = along the bar (down the length, away from the chuck).
- A = rotation (your rotary axis; default letter is A).
- Z = up and down, which in a rotary job physically means in and out along the radius. RotatoCAM treats Z as the radius from the center of rotation, which is exactly why zeroing matters.
Chuck center (axis centerline). Z0 is the center of rotation. The native, most robust
frame: referenced to the rotary centerline. Re-establish offsets after re-chucking or changing the setup. Set the
Work Zero offset to 0. On the machine, touch the top of the stock and set Z to
+(stock radius).
Top of stock (surface). Z0 is the outer surface at the top. Easiest to set physically (touch the top, hit zero) and it behaves like normal flat milling (cutting in goes negative). Set the Work Zero offset to your stock radius. Accurate only if your real stock diameter matches what you entered.
Two more datums to know:
- X0 is the start of the cutting area, not the chuck face. Zero X where the toolpath begins down the bar.
- The A zero establishes part orientation. A fresh round blank may allow a freely chosen starting angle. Existing features, non-round stock and later setups must be aligned to the programmed orientation.
Which strategy do I pick?
- A round-ish 3D part turned on the bar axis (handles, finials, knobs, sculpted cylinders): rough_radial to clear the bulk, then finish_spiral for the final surface. The bread-and-butter job.
- Text or artwork wrapped around a cylinder: wraparound (or wrap_vcarve for a V-carved look). No 3D model needed, just your 2D art.
- Flat plate or slab work: threeaxis, adaptive_clear for clearing, engrave2d or vcarve for lettering.
- Faceted or prismatic features (hex flats, square, angled features): indexed_surface or mill_flats.
- Shop features with no CAD model (turn to a diameter, face an end, bolt-circle of holes, thread a stud, cut flutes or splines): the Conversational strategies.
Strategy reference
Free ships in the free Community Edition. Pro requires RotatoCAM Pro. Every strategy uses the Universal Workflow; each card lists only what is specific to it.
rough_radial Free
Clears stock in radial levels from the outside diameter down to the deepest valley. The everyday rougher.
Options radial depth of cut; rest-roughing.
rough_helical Pro
A single continuous back-and-forth helix that ramps in with very few retracts. Gentler on a flexy mini-mill.
Options stepdown / pitch; ramp.
finish_spiral Free
The headline strategy: one continuous simultaneous X + A + Z spiral. Best surface, most continuous motion.
Options stepover / scallop; Max radial depth (bridges deep ports at constant radius).
finish_raster Pro
Bidirectional rings where rotation stays within 0–360° (no windup). When you don't want the A axis to accumulate turns.
Options stepover; ring direction.
finish_axial Pro
Lengthwise zig-zag along the bar for a different surface lay (grain along the part instead of around it).
Options stepover; direction.
pencil Pro
Cleanup pass following valleys and groove floors, linked along the length. Run after a finish to clean corners.
Options valley threshold.
indexed_surface Pro
Clocks the part to N positions 360/N apart, then runs a normal 3-axis raster on the up-facing wedge at each. Finishes only by default: it cuts the final surface and assumes the part is already roughed, so queue a roughing operation ahead of it and the finisher plans against the stock that one really left. Set a depth per pass to clear each face in layers instead.
Options number of faces (N); depth per pass (0 = finish only, the default); per-face 3-axis settings.
mill_flats Pro
Cuts hex, square, or any N-sided flats on round stock by indexing and facing each side.
Options number of sides; across-flats; depth.
threeaxis_finish / rough Pro
Standard 3-axis milling of a model on flat stock (no rotary).
Options stepover; stepdown; finish / spring passes.
adaptive_clear Pro
Pocket and bulk clearing using inward-offset paths. Check engagement at corners and transitions for your tool and stock. For pockets and bulk removal.
Options stepover; stepdown.
troch_slot Pro
Trochoidal slotting uses small looping moves to manage engagement. The slot must accommodate the cutter and its loop; verify width, entry and remaining stock.
Options slot width; loop step.
engrave2d Free
Follows 2D line art (DXF/SVG) at a set depth. For lettering, logos, outlines.
Options depth; number of passes.
vcarve Pro
V-bit carving that varies depth for sharp corners and variable line width from 2D art.
Options V-bit angle; flat depth.
wraparound Free
Wraps 2D art around the cylinder and engraves it on the rotary axis. The classic "text around a tube" job; sets bar diameter directly.
Options bar diameter; engrave depth; position along bar.
wrap_vcarve Pro
Wraparound, but V-carved for variable-width lettering.
Options V-bit angle; depth.
profile_cut Pro
Laser and plasma profile cutting of 2D shapes (outline cutting, not milling).
Options laser/plasma mode; passes; power / feed.
ProtoTRAK-style: you type dimensions, no CAD file required.
turn_round Pro
Turn stock down to a target diameter over a length.
turn_profile Pro
Turn a non-round or oval profile (radius as a function of angle).
face Pro
Face the end of the stock flat.
pocket Pro
Rectangular or round pocket at a set depth.
drill_pattern Pro
Bolt-circle, grid, or line of holes, optionally rotary-indexed, with peck drilling + helical boring for oversize holes.
flute Pro
Straight or twisted grooves along the part (flutes, rifling-style).
thread_mill Pro
External single-point thread milling with a standards picker.
index_slots Pro
Evenly spaced slots around the part for gears, splines, and knurls.
Tools, feeds, and the chuck-speed cap
- Tool: pick or edit the tool; diameter and shape (flat, ball, bull, V) drive the path. A ball-nose is typical for 3D finishing. Match it to what you load — one tool per program, so what you pick here is the tool for the whole file.
- Speeds and feeds: a built-in helper for carbide vs HSS with chip-thinning. You set one surface feed target; you do not set a separate rotation speed.
- How rotary speed is planned: the rotation rate is derived. RotatoCAM blends the rotary arc into the planned move length. On posts using G93 inverse-time, coordinated axes share a target block duration. Other posts use controller-specific feed conversion; check the post notes and machine limits.
On a rotary move, a thin section of the part has to spin fast to keep surface speed up. This cap stops RotatoCAM from commanding a chuck speed your rotary cannot turn (which would stall or lose steps). If a move would exceed the configured cap, RotatoCAM slows the coordinated move. This does not guarantee surface finish or account for every machine dynamic limit. Verify the cap for your rotary, workholding and load.
Controllers and posting
Choose the post for your actual controller and configuration. Check the compatibility table for operation scope and experimental status. Stock GRBL is 3-axis only; Genmitsu simultaneous rotary, AtomStack, HC-204A, Makera Carvera, MASSO and RosettaCNC remain experimental. Custom posts belong in ~/.rotatocam/posts/ and require their own qualification.
Before exporting, confirm the rotary axis letter matches your controller config (default A) and the units (mm or inch) match your machine.
The Mach post emits no comments on purpose. Some Mach3 installs refuse to load a file that has comment lines, so RotatoCAM strips them. That is expected. Side effect: open a Mach-posted rotary file in RotatoVIEW and it will ask you to type the bar diameter, because the line that normally carries it was one of the stripped comments.
Preview and verify before you cut
- Backplot draws the toolpath, colored for the selected tool.
- Spin / sim plays the job back, shows a material-removal simulation, and can color the surface by deviation (check the displayed legend for on-target, leftover and gouged regions). It estimates time and distance too.
- Load the final exported G-code to inspect its interpreted motion. Controller settings, unsupported commands and setup differences can make the machine behave differently from the preview.
Backplot shows interpreted motion; feed checks inspect the programmed feeds; material-removal simulation estimates the cut in the modeled stock. These are separate checks, not a machine-safety certification.
Do not infer holder, chuck-jaw, fixture or full-machine collision clearance from a clean cut surface. Confirm the actual assembly, work offsets, controller behavior and travel limits separately. A drawn chuck is not proof that every collision is checked.
Deviation depends on the model and simulation resolution. This guide publishes no universal numerical error bound for the simulation. A small apparent clearance or green surface is not a tolerance guarantee. Timing is estimated and may differ with acceleration and controller limits.
After editing NC, changing tools, stock, fixtures, offsets or post settings, repeat the affected checks on the final file. Complete the machine-specific setup review and controlled prove-out before cutting.
If anything looks wrong, preserve the job and NC file, resolve the cause, and regenerate before making chips.
Troubleshooting and FAQ
My depths are off by a lot (about one radius).
Your Work Zero setting and your machine touch-off do not match. Chuck center → touch off to the centerline (top of stock, then Z = +radius). Top of stock → touch off on the surface. Pick one and be consistent.
My rotations come out wrong (part over- or under-rotates).
Your controller's steps-per-degree for the rotary axis is not set for your gear reduction. A rotary geared down (say 4:1) needs the controller told about that ratio. This is a machine config setting, not RotatoCAM.
Mach3 will not load my file / errors on a comment line.
Use the Mach3 post; it emits no comments. If you posted with a different controller and run Mach3, re-post as Mach3.
RotatoVIEW is asking me for the bar diameter.
Normal for Mach-posted rotary files (the comment carrying it is stripped). Type your stock diameter.
A rotary move ran at the wrong (dangerous) feed.
Check the selected post and controller feed convention. A G93 F word specifies inverse time; G94 has controller-specific per-minute semantics. Reusing the same number in a different mode can produce an incorrect move duration. Do not change feed modes by hand without recomputing and re-verifying the output. Some posts do not use G93.
My finish dove into a bore or port.
Stop and inspect whether the geometry is suitable for a one-radius-per-ray rotary pass. Max radial depth can limit entry into an opening, but bridging leaves material and does not make a hidden bore or undercut machinable. Recheck the result and use a suitable operation for inaccessible regions.
Which strategies are free?
finish_spiral, rough_radial, engrave2d, and wraparound are in the free Community Edition. Everything else is Pro.
Glossary
- Bar / stock: the round blank in the chuck. Its radius is half its diameter; a 40 mm diameter bar has a 20 mm radius.
- Chuck center: the axis of rotation; the natural zero for rotary work.
- Surface feed: the one feed target you set; rotation speed is derived from it.
- G93 inverse-time: the feed mode that keeps X, Z, and rotation coordinated on a simultaneous move.
- Chuck-RPM cap: the safety limit that keeps thin sections from being told to spin faster than your rotary can turn.
- Rest-roughing / rest-machining: targeting stock left by earlier operations; a previous larger tool is one possible source of that stock.
- Deviation coloring: the sim's green/red map of how close the cut surface is to the model.
- Indexed (3+1): rotate to a fixed angle, then cut with normal 3-axis moves; not simultaneous.
- Conversational: type dimensions instead of loading a model.