cadmpeg
cadmpeg inspects native CAD containers, decodes supported model data into
CADIR, validates and compares CADIR models, and exports CADIR or STEP AP214.
It also writes supported .f3d and .sldprt models.
Native codecs transfer different subsets of geometry, topology, design intent, presentation, and metadata. Check format support before relying on a conversion path.
Install
Install with Homebrew:
Or use the installer for macOS and Linux:
|
Or install from crates.io:
Convert a model
convert decodes the input, validates the resulting CADIR, then exports it:
The output extension selects step, f3d, sldprt, or cadir. Pass
--format when writing to standard output or when the filename does not
identify the format:
Conversion stops before export if validation finds errors. It also refuses
geometry output when decoding transfers no geometry. --allow-invalid and
--allow-empty override these checks. These flags permit output; they do not
repair or add model data.
Inspect, decode, and validate
Inspect a native container without decoding its model:
Decode a native file to canonical CADIR JSON:
Without --output, artifact-producing commands write only the artifact to
standard output. Diagnostics and loss summaries go to standard error, so
redirection remains safe.
Validate either CADIR or a supported native file:
Use export to skip CADIR validation:
--container-only stops native decoding before geometry. It is useful for
container diagnostics and normally requires --allow-empty when followed by a
geometry export.
Compare models
diff compares two decoded models structurally:
It reports unit, tolerance, arena membership, and modified entity fields.
Exit status 1 indicates a difference.
Inputs and outputs
The built-in codecs recognize .f3d, .sldprt, .CATPart, and the NX and
Creo .prt layouts by content. Commands that load models also accept CADIR
JSON. Use --input-format to bypass detection for an ambiguous or
extensionless input.
Output formats are:
cadirfor canonical CADIR JSON;jsonis an alias.stepfor ISO 10303-21 STEP AP214.f3dandsldprtfor the native writers' supported subsets.
Native writing may depend on retained source data and rejects unsupported edits. The format support page defines each reader and writer's current semantic coverage.
File output is atomic. cadmpeg refuses to replace its input or an existing
output unless --force is present. An explicit --format takes precedence
over a conflicting output extension and emits a warning.
Losses and machine-readable reports
Native decoding prints whether geometry transferred and lists known losses.
STEP export reports omitted, reduced, or normalized content. To save a
versioned JSON record of a decode, export, or convert operation, pass
--report:
The command report contains decode, validation, and export sections when those
stages ran. inspect --json, validate --json, and diff --json write
versioned JSON directly to standard output.
Exit status
0: the requested operation completed; validation passed and diffs were empty when those checks ran.1: semantic result, such as validation errors, a non-empty diff, or refusal to export invalid or empty geometry.2: operational error, including invalid arguments, unrecognized input, decode or encode failure, and file-system errors.
Run cadmpeg help <command> for the complete options of a command.
More documentation
Requires Rust 1.88 or later. Licensed under Apache-2.0.