ExtrabbitCode Inventor MetaReader

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 stream

STEP 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.bak

Destroyed 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.

On this page