Command Line
Read Inventor files, compare model states and export JSON from a terminal or a script - no Inventor required.
Prefer the terminal, or need to process many files unattended? invmeta is a small command-line
tool that reads the same metadata as the desktop app - Inventor files and STEP files alike. It's
cross-platform (Windows, macOS, Linux) and, like the app, needs no Autodesk Inventor.
The desktop viewer is on the Microsoft Store; the command-line tool is for developers and automation, so you build it from source.
Build it
You need the .NET 10 SDK, then:
git clone https://github.com/TWiesendanger/ExtrabbitCode.Inventor.MetaReader.git
cd ExtrabbitCode.Inventor.MetaReader
dotnet build src/InventorMeta.Cli -c Release
# the binary lands in src/InventorMeta.Cli/bin/Release as invmeta(.exe)Commands
invmeta info <file> friendly report (type, iProperties, refs, version)
invmeta states <file> per-model-state iProperties (parts/assemblies)
invmeta json <file> full metadata as JSON
invmeta props <file> every property in every set
invmeta graph <file> recursive reference tree
invmeta segments <file> RSeStorage segment inventory + damage check
invmeta repair <file> fix a stale segment registry (backs the file up first)
invmeta tree <file> raw file structure
invmeta thumb <file> [outBase] extract the embedded preview image
invmeta extract <file> <outDir> dump every stream to disk
invmeta cat <file> <streamPath> hex+ascii dump of one streamSTEP files (.stp / .step) work with info, states, json, props and graph - you get
the ISO-10303 header (description, authors, organizations, schema), entity counts, products and
solid bodies. The remaining commands (tree, thumb, extract, cat) read Inventor's OLE
container structure, which STEP files don't have.
Everyday use
A quick, readable report - document type, key iProperties, references, model states and version:
invmeta info "SamplePart.ipt"Compare a multi-state part's properties (the same data as the Model States tab):
invmeta states "SamplePart.ipt"Pull the preview image out of a file:
invmeta thumb "Assembly1.iam" preview
# -> writes preview.png (or preview.bmp)Checking a damaged file
When Inventor refuses to open a file with an "Error loading segment … in database" message,
segments inventories the internal databases and checks their integrity:
invmeta segments "Broken.ipt"It distinguishes two kinds of damage. A stale segment registry is only bookkeeping that drifted
out of sync - no data is lost - and repair fixes it in place, writing an untouched backup copy next
to the file first:
invmeta repair "Broken.ipt"
# -> patches the registry; original saved as Broken.ipt.pre-repair.bakDestroyed segment data (runs of zeroed bytes where compressed geometry used to be, typically from
a disk fault or an interrupted copy) is not repairable - the bytes are physically gone. segments
reports which segments are affected and how much survives, and repair refuses the file rather than
producing one that still won't open. The only fix is to restore an earlier copy from Vault or another
PDM, the OldVersions folder next to the file, or a backup.
Automating across many files
Because json writes to standard output, it drops straight into scripts. For example, export the
metadata of every part in a folder:
for f in *.ipt; do
invmeta json "$f" > "${f%.ipt}.json"
done…or pull one field out with a JSON tool like jq:
invmeta json "SamplePart.ipt" | jq -r '.summary."Part Number"'If you'd rather call the parser directly from your own program instead of shelling out, see For developers.