Two Places a Machine Lives

A machine definition is the post-processor: the G-code dialect, number formatting, header and footer, canned cycles, and everything else that decides what the exported file actually says. In PureCut CNC that definition exists in two places, and knowing which one you are looking at explains almost everything about how machines behave.

Application libraryProject snapshot
Holds Every built-in machine shipped with your installed version, plus your own saved machines (My Machines). Exactly one definition — the machine that project is set up for.
Stored in The application, not any project file. It follows you from project to project. The .camj file itself. It travels with the project.
Used for Choosing, editing, importing, and exporting machine definitions. Generating G-code. The embedded snapshot is what the exporter reads.
Editing it Never dirties the open project and never enters its undo history. Always an explicit action — it dirties the project and is undoable.
Why the split matters. Because export reads the project's own snapshot, upgrading PureCut CNC or editing a machine in your library can never quietly change the G-code an existing project produces. Replacing a project's copy is something you do on purpose.

My Machines

My Machines is your personal, application-wide list of machine definitions. Add a machine once and it is available in every project you open afterwards — it is no longer trapped in whichever project you happened to create it in.

To get there, select the Project node in the feature tree and click Manage machines… below the Machine dropdown. The Manage Machines dialog groups definitions three ways:

  • Built-in machines — the definitions shipped with the version of PureCut CNC you are running (Grbl, GrblHAL, LinuxCNC, Mach3, UCCNC, Generic). They are read-only; Duplicate one to get an editable copy.
  • My Machines — your saved custom definitions. Edit, duplicate, import, export, or remove them here.
  • In this project — the snapshot embedded in the open project.
screenshots/cam-machine-manager.png
The Manage Machines dialog — read-only built-in definitions grouped above My Machines, with the selected definition's details and actions alongside

Because bundled definitions are read from the current build rather than copied into each project, a machine added to a new release reaches your existing projects as soon as you update the app.

Status Badges

With the Project node selected, the properties panel shows the selected machine's status directly under the dropdown:

BadgeMeaning
Built-in / Custom Where the definition originally came from, followed by the output file extension.
Update available The project's snapshot and the library entry with the same ID differ. Nothing has changed on its own — see Update Notices.
Not in My Machines The project carries a machine your library has never seen — typically a project someone shared with you. It still exports normally. Use Save to My Machines in the Manage Machines dialog if you want to keep it.

Update Notices

When you open a project, PureCut CNC compares its embedded snapshot with the library entry that shares its ID. If they differ — because the built-in definition changed in a newer release, or because you have since edited your own copy — a non-blocking notice appears: Machine definition update available. It offers three choices, and none of them happens by itself:

ChoiceWhat it does
Review updateOpens the Manage Machines dialog focused on that machine, listing exactly which fields differ — axis mapping, number formatting, program header/footer, canned cycles, and so on — so you can decide with the differences in front of you.
Keep project copyDismisses the notice. The project keeps the definition it was saved with and its G-code output is unchanged.
Update project copyReplaces the project's snapshot with the library version. This edits the project — it marks it dirty and can be undone.
Updating a definition can change your G-code. That's the whole point of the notice. If a job is already proven on the machine, Keep project copy is the conservative answer; re-verify the output before cutting if you update.

Sharing a Project

Because the definition travels inside the .camj file, a project you send to someone else stays exportable on a machine their installation has never heard of. They see a Not in My Machines badge, and the G-code they export is identical to the G-code you would export from the same project.

If they want that machine for their own future projects, Save to My Machines lifts the embedded definition into their library. Nothing forces them to — a project-only machine is a perfectly normal state, not an error to resolve.

Older Projects

Projects saved before this change stored a copy of the entire machine library inside the file. When you open one, it is compacted automatically: the project keeps only the definition it actually uses, and any custom machines it carried are merged into My Machines so they are not lost. Files get noticeably smaller as a side effect.