What This Is
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
| Flag | Required | What it does |
|---|---|---|
--input <path> | Yes | The vendor post-processor file to convert. |
--output <path> | Yes | Where to write the machine definition JSON. |
--format <id> | No | Force a specific reader instead of detecting one from the input's extension. Useful when a file was renamed. |
--strict | No | Refuse to write the definition if any finding would change emitted 3-axis G-code. The report is still written either way. |
--force | No | Overwrite 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> | No | Machine name recorded in the output. Defaults to the input filename. |
--vendor <string> | No | Optional 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 package | Extension | --format id |
|---|---|---|
| Visual Mill | .spm | visual-mill |
| Vectric / Estlcam | .pp | vectric-estlcam |
| ArtCAM | .con | artcam |
| ECam | .xml | ecam |
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 package | Extension | --format id |
|---|---|---|
| SheetCAM | .scpost | sheetcam |
| Autodesk HSM / Inventor | .cps | autodesk-cps |
| Mastercam | .pst | mastercam-pst |
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:
| Status | Meaning |
|---|---|
| mapped | Carried over from the source. |
| omitted | The source doesn't declare this, so PureCut CNC's generic default was kept. |
| unsupported | The source declares behaviour PureCut CNC has no equivalent for — a fourth axis, plasma/THC control, a vendor macro. |
| conflicting | The 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
- Read the printed report, or open
<output>.report.json. - Import the JSON in the app — Manage machines… → Import machine — and open it in the machine editor. See Machine Library and Custom Machine Definitions.
- 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.
- Export a short job and read the G-code before you cut with it.