finds.dev← search

// the find

CauldronDevelopmentLLC/CAMotics

★ 735 · C++ · NOASSERTION · updated Mar 2026

Open-Source Simulation & Computer Aided Machining - A 3-axis CNC GCode simulator

CAMotics is a desktop simulator for 3-axis CNC GCode that lets you preview tool paths before cutting. It's aimed at hobbyist CNC owners who want to catch mistakes without wasting material or snapping bits. The built-in TPL scripting layer (JavaScript via V8) lets you write parametric tool paths as code rather than importing from a CAD package.

Embedding V8 as a scripting engine is the genuinely interesting design decision here — you can write full parametric programs in JavaScript that emit GCode, which is far more expressive than raw GCode templating. Prebuilt machine configs for popular hobbyist CNCs (Shapeoko, X-Carve, Taig) mean you can get realistic workspace and travel limit simulation without digging through specs. The included examples cover a wide range of real tool path patterns — gears, DXF imports, multi-file assemblies — which doubles as a usable test suite. Cross-platform prebuilt packages means most users never need to touch the build system.

The build process is a genuine obstacle: you have to first build cbang, the author's own C++ utility framework from a separate repo, set an environment variable pointing at it, then build CAMotics — and V8 has to be installed before cbang. Getting V8 built from source on any platform is its own project. Hard 3-axis limit means it's useless for 4th/5th axis work, which is increasingly common even in hobbyist shops with rotary attachments. The project is tied to Qt5 at a time when Qt5 is end-of-life; there's no visible Qt6 migration work. SCons as the build system means almost nobody will have it installed or know how to debug it when something goes wrong.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →