// user guide · 4-axis rotary + 3-axis

RotatoCAMUser Guide

RotatoCAM is a CAM program: it takes your model (or a few typed dimensions) and writes a G-code file for your controller. It does not talk to the machine or stream to it. You generate the file here, then load and run it in your controller (Mach3, LinuxCNC, grblHAL/gSender, Mach4, Centroid, MASSO).

The key idea: almost every job follows the same steps, and the strategies differ only in a few options. Read the Universal Workflow once, then each strategy card only tells you what is different about that one.

Always verify before you cut. Back-plot and simulate every job, and air-cut first when unsure. A clean preview is not a guarantee a program is safe. RotatoCAM writes G-code AS-IS, no warranty.

// contents
  1. 01The Universal Workflow
  2. 02Coordinates & work zero
  3. 03Which strategy do I pick?
  4. 04Strategy reference
  5. 05Tools, feeds & RPM cap
  6. 06Controllers & posting
  7. 07Preview & verify
  8. 08Troubleshooting & FAQ
  9. 09Glossary
// 01

The Universal Workflow

Every job, rotary or flat, is basically these steps:

  1. 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.
  2. Set up your stock and fixture — for rotary work the bar diameter (this is your starting radius, get it right), 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.
  3. 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. The queue runs them in order with tool-change and spindle pauses between.
  4. Pick the tool for each operation. Diameter and shape drive the toolpath, so they must match what you physically load. The tool number is emitted as a tool-change pause.
  5. Set feeds and, for rotary, the chuck-RPM cap.
  6. Set the Work Zero — chuck center or top of stock, matched to how you touch off on the machine.
  7. Generate the toolpath.
  8. Preview it — backplot and Spin/sim playback. Your free dry run.
  9. Post and export — choose your controller, confirm the rotary axis letter and units, save the G-code file.
  10. Run it on the machine, with your machine zero set the same way you chose in step 6.

That is the whole thing. Everything below is variations on steps 3 through 6.

// 02

Coordinate system and work zero

The axes:

Work zero — pick one, and match your touch-off

Chuck center (axis centerline). Z0 is the center of rotation. The native, most robust frame: diameter-independent, so depths stay correct even if you re-chuck or change stock. 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:

// 03

Which strategy do I pick?

// 04

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.

Rotary roughing

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.

Rotary finishing (4-axis)

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 (3+1)

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.

Options number of faces (N); 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.

3-axis (flat work)

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

High-efficiency clearing with concentric inward offsets at constant engagement. For pockets and bulk removal.

Options stepover; stepdown.

troch_slot Pro

Trochoidal slotting (small circular loops) to cut slots narrower than a safe straight plunge, easy on the tool.

Options slot width; loop step.

2D and engraving

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.

Conversational (no model needed)

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.

// 05

Tools, feeds, and the chuck-speed cap

The chuck-RPM cap (Feed 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 it, RotatoCAM slows that whole move proportionally, preserving surface quality rather than just clipping the rotation. Set it to a safe maximum RPM for your rotary.

// 06

Controllers and posting

Choose your controller in the post/export step. Supported: grblHAL, GRBL (3-axis only), LinuxCNC, Mach3, Mach4, Centroid, MASSO (and you can drop custom posts into ~/.rotatocam/posts/).

Before exporting, confirm the rotary axis letter matches your controller config (default A) and the units (mm or inch) match your machine.

Mach3 / Mach4 note

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.

// 07

Preview and verify before you cut

If anything looks wrong here, fix it before you make chips. This is free; a crash is not.

// 08

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.

RotatoCAM uses G93 inverse-time on every rotary move and has a built-in feed verifier for exactly this. If you hand-edit G-code, do not remove the G93 lines; a rotary move left in G94 has an undefined feed and can snap a cutter.

My finish dove into a bore or port.

Set Max radial depth on the finish so it bridges over deep openings at constant radius instead of diving to the far wall.

Which strategies are free?

finish_spiral, rough_radial, engrave2d, and wraparound are in the free Community Edition. Everything else is Pro.

// 09

Glossary

← Back to RotatoCAM