rs_cam is a Rust CAM workspace for 3-axis wood routers. It combines a reusable CAM core library, a batch CLI, and a desktop GUI for interactive toolpath generation, simulation, and G-code export.
- Input formats: STL, SVG, DXF
- Output formats: GRBL, LinuxCNC, and Mach3 G-code, plus SVG preview and HTML setup-sheet export
- Tool families: flat end mill, ball nose, bull nose, V-bit, tapered ball nose
- Operations: 22 GUI-exposed machining strategies across 2.5D, roughing, and 3D finishing
- Verification: tri-dexel volumetric stock simulation (Z/X/Y grids, 6 cardinal cut directions), playback, and holder/shank collision checks
- Responsive compute: separate toolpath and analysis lanes with explicit queue/cancel state
- Automation: direct CLI commands plus TOML-driven job execution
- Feeds and speeds: machine + material models with vendor-LUT-assisted recommendations
- Internal architecture: controller-first GUI shell, canonical operation metadata, and shared adaptive support code across 2D/3D adaptive
crates/rs_cam_core: geometry, importers, cutter math, toolpath generation, dressups, simulation, feeds/speeds, and G-codecrates/rs_cam_cli: batch interface and TOML job runnercrates/rs_cam_viz:egui/wgpudesktop application (rs_cam_gui)architecture/: durable design docsresearch/: algorithm notes, provenance, and exploratory researchplanning/: active backlog, status, and archived planning snapshots
Run the desktop app:
cargo run -p rs_cam_viz --bin rs_cam_guiInspect the CLI surface:
cargo run -p rs_cam_cli -- --helpRun the test suite:
cargo test -q- Product surface:
FEATURE_CATALOG.md - Source and algorithm attribution:
CREDITS.md - Architecture overview:
architecture/README.md - Research and background material:
research/README.md - Planning and backlog:
planning/README.md
The repo is well past the prototype stage, but some edges are still being finished:
- per-operation manual pre/post G-code is editable in the GUI but not emitted during export
- GUI project save/load round-trips editable state and model references, but computed toolpaths, simulation caches, and collision outputs are intentionally regenerated after load
- profile “In Control” compensation exists in UI/state, but
G41/G42emission is not wired - feed optimization is limited to fresh-stock, flat-stock workflows with known stock bounds; unsupported cases are disabled instead of approximated
- rapid-collision rendering and simulation deviation coloring have core/helpers in place but are not fully surfaced
The repo currently keeps these gates green:
cargo fmt --checkcargo test -qcargo clippy --workspace --all-targets -- -D warnings
Linux CI also runs a dedicated rs_cam_viz regression lane for the renderless GUI harness and compute-lane queue/cancel tests.
This repo carries explicit attribution for algorithm lineage, data sources, and external runtime assets in CREDITS.md. The short version: the cutter-contact and waterline stack is heavily informed by OpenCAMLib, adaptive-clearing ideas are informed by Freesteel/libactp and FreeCAD CAM, the 2D offset/boolean layer builds on geo/i_overlay and cavalier_contours, and the feeds/speeds system is attributed directly to its vendor charts, material-property references, and formula sources rather than to an old imported precursor project.