What This Is

This is a developer tool, not an in-app feature. It is a command-line script that ships with the PureCut CNC source repository and runs under Node.js. There is no button for it in the app. If you just want to set up a machine, start from Custom Machine Definitions — duplicating a built-in profile and editing it in-app is quicker and needs no toolchain.

If you already run another CAM package and have a post-processor there that is known-good for your controller, the converter reads that file and writes a PureCut CNC machine definition JSON from it, plus a report telling you exactly what it could and could not carry across. You then open that JSON in the app's machine editor, fix anything the report flagged, and use it like any other definition.

It is a head start on a definition, not a drop-in replacement for one.

Running It

From a clone of the application repository, with dependencies installed:

npm run convert-post-processor -- --input path/to/machine.pp --output my-machine.json

The -- before the flags is required — it tells npm run to pass everything after it to the script rather than treating it as an npm flag.

That command writes two files and prints a readable summary to the terminal:

  • my-machine.json — the machine definition, ready to import in the app.
  • my-machine.report.json — the same conversion report in machine-readable form.

Run npm run convert-post-processor -- --help for the flag list straight from the tool.

Flags

FlagRequiredWhat it does
--input <path>YesThe vendor post-processor file to convert.
--output <path>YesWhere to write the machine definition JSON.
--format <id>NoForce a specific reader instead of detecting one from the input's extension. Useful when a file was renamed.
--strictNoRefuse to write the definition if any finding would change emitted 3-axis G-code. The report is still written either way.
--forceNoOverwrite an existing output file. Without it, a second run against the same path fails rather than clobbering a file you may have hand-edited.
--name <string>NoMachine name recorded in the output. Defaults to the input filename.
--vendor <string>NoOptional vendor label recorded in the output.

Supported Formats

The format is detected from the input file's extension. Four formats are declarative — the file is a structured list of settings, so it is parsed properly and converted field by field:

CAM packageExtension--format id
Visual Mill.spmvisual-mill
Vectric / Estlcam.ppvectric-estlcam
ArtCAM.conartcam
ECam.xmlecam

The other three formats are programs rather than settings files — their behaviour comes from code that the host CAM package executes. Those are read as text and matched against the standard idioms each vendor's posts are written in. Expect more findings, and read the report closely:

CAM packageExtension--format id
SheetCAM.scpostsheetcam
Autodesk HSM / Inventor.cpsautodesk-cps
Mastercam.pstmastercam-pst
The vendor file is never executed. Nothing in a post-processor you feed the converter is run, evaluated, or loaded as code — even for the three script-like formats, which are only ever scanned as text. Converting a file you downloaded cannot run anything on your machine.

Reading the Report

Every conversion produces a report that accounts for each field in the source. This is the part that matters — a definition that converted "successfully" can still be missing something your controller needs. Each finding carries one of four statuses:

StatusMeaning
mappedCarried over from the source.
omittedThe source doesn't declare this, so PureCut CNC's generic default was kept.
unsupportedThe source declares behaviour PureCut CNC has no equivalent for — a fourth axis, plasma/THC control, a vendor macro.
conflictingThe source's own signals disagree, or its nuance can't be expressed in a PureCut CNC definition.

Findings printed with [blocks --strict] are the ones that would change emitted 3-axis G-code if they were silently dropped. Read those first. Everything else is informational — a vendor capability with no counterpart here, a formatting nuance — and doesn't need action before you use the output.

Use --strict when nobody will be reading the report: it refuses to write the definition at all unless every field that affects 3-axis motion was actually resolved from the source.

After Converting

  1. Read the printed report, or open <output>.report.json.
  2. Import the JSON in the app — Manage machines…Import machine — and open it in the machine editor. See Machine Library and Custom Machine Definitions.
  3. Fix anything the report flagged as unresolved but relevant to your jobs. The editor's Advanced tab gives you the raw JSON if the form doesn't surface a field.
  4. Export a short job and read the G-code before you cut with it.
A clean conversion is not a safety guarantee. The converter can tell you that it understood every field in the source file. It cannot tell you that the source file was right for your machine. Verify the output the same way you would verify any new post-processor — read the G-code, then run it dry before it touches material.