Reads metadata out of Autodesk Inventor .ipt / .iam / .idw / .ipn files - and neutral
STEP (.stp / .step) files - directly from their bytes, no Autodesk Inventor installation
required. The Windows viewer also shows the model in interactive 3D, generated with Inventor
or with a built-in converter that needs no Inventor at all.
The Windows desktop viewer ships on the Microsoft Store - it installs, updates and code-signs itself, with nothing else to set up:
(The core library and CLI are cross-platform and built from source - see Build & run.)
The Windows viewer - the Home screen (drop a file, or reopen a recent one), and a document open with its thumbnail, key iProperties and every property grouped by set:
And the 3D viewer - spin the model, give every body its own colour, and mark it up, all generated without Inventor installed:
It exploits the fact that Inventor files are standard OLE Compound File Binary
containers and that all iProperties live in standard OLE Property Sets. See
docs/INVENTOR-FILE-FORMAT.md for the full
reverse-engineering write-up.
- Document type (part / assembly / drawing / presentation) from the root CLSID
- All iProperties - Part Number, Designer, Material, Project, Status, Description, custom properties, dates, "Last Updated With", etc.
- Cached mass / volume / surface area / density (with the Valid Mass Props caveat)
- The embedded preview thumbnail (PNG/BMP)
- Referenced files (assembly components, the model a drawing documents)
- Per-model-state iProperties - read every model state's properties at once, without
switching states in Inventor, including a diff of what changes between states.
*(For complete data, enable Inventor 2027+'s Generate All Model States on Save
- right-click the Model States browser node. Otherwise a state's values only appear
once that state has been recomputed in Inventor; until then the tool shows
(not cached)instead of guessing.)*
- right-click the Model States browser node. Otherwise a state's values only appear
once that state has been recomputed in Inventor; until then the tool shows
- Model States and the originating template / version provenance
- STEP files (
.stp/.step) - the ISO-10303 header (author, organization, schema), entity counts, products and solid bodies - The raw CFB storage/stream tree, and any individual stream
The Windows app turns any part or assembly into an interactive 3D view - generated once with Inventor's own translator, or with a built-in converter that reads the mesh cached in the file and needs no Inventor at all. On top of that:
- Body coloring - give every part its own colour with one click
- Redlining - draw, add text, or paint straight onto the model surface; markup lives on layers saved with the cached viewable
- An interactive reference graph with three layouts and node thumbnails
- STEP models in 3D, converted in-app with Open CASCADE
See the documentation site for the full tour.
ExtrabbitCode.Inventor.MetaReader.slnx
├─ src/
│ ├─ InventorMeta/ cross-platform core library (the parser) - net10.0
│ │ ├─ Cfb.cs OLE Compound File Binary reader
│ │ ├─ OlePropertySet.cs OLE property-set decoder
│ │ ├─ InventorProps.cs Inventor-specific property/FMT mapping
│ │ ├─ ReferenceGraph.cs referenced-file resolution
│ │ └─ InventorDocument.cs public facade over the above
│ ├─ InventorMeta.Cli/ command-line tool ("invmeta") - net10.0
│ └─ InventorMeta.App/ WinUI 3 desktop viewer - net10.0-windows
├─ tests/
│ └─ InventorMeta.Tests/ xUnit test suite for the core library - net10.0
├─ docs/
│ └─ INVENTOR-FILE-FORMAT.md reverse-engineering write-up
└─ documentation/ documentation website (Vite / React Router)
The core library (the src/InventorMeta project, namespace ExtrabbitCode.Inventor.MetaReader)
has zero external dependencies and is the reusable piece - drop it into your own apps or
Inventor add-ins. The CLI and WinUI app are thin front-ends over the same InventorDocument class.
dotnet build src/InventorMeta.Cli -c Release
# friendly report
dotnet run --project src/InventorMeta.Cli -- info SamplePart.ipt
# per-model-state iProperties + what differs between states
dotnet run --project src/InventorMeta.Cli -- states SamplePart.ipt
# everything as JSON
dotnet run --project src/InventorMeta.Cli -- json SamplePart.ipt
# every property in every property set
dotnet run --project src/InventorMeta.Cli -- props Assembly1.iam
# extract the thumbnail
dotnet run --project src/InventorMeta.Cli -- thumb SamplePart.idw out\thumb
# raw container tree / one stream / dump all streams
dotnet run --project src/InventorMeta.Cli -- tree SamplePart.ipt
dotnet run --project src/InventorMeta.Cli -- cat SamplePart.ipt /UFRxDoc
dotnet run --project src/InventorMeta.Cli -- extract SamplePart.ipt out\streamsAfter dotnet build, the binary is invmeta(.exe) in the project's bin/Release.
dotnet build src/InventorMeta.App -c Release -r win-x64
# launch (optionally with a file to open immediately):
src/InventorMeta.App/bin/Release/net10.0-windows10.0.19041.0/win-x64/InventorMeta.App.exe SamplePart.iptOpen a file (button or drag-and-drop) to see the thumbnail, key iProperties, a grouped
view of every property, references & model states, and the raw file structure. The
Export JSON button writes the full metadata. The app is built self-contained
(WindowsAppSDKSelfContained), so the Windows App Runtime does not need to be
pre-installed.
using ExtrabbitCode.Inventor.MetaReader;
var doc = new InventorDocument(@"C:\path\SamplePart.ipt");
Console.WriteLine(doc.DocumentType); // "Inventor Part (.ipt)"
Console.WriteLine(doc.Summary["Part Number"]); // "SamplePart"
foreach (var r in doc.References) Console.WriteLine(r);
if (doc.Thumbnail != null)
File.WriteAllBytes("preview." + doc.ThumbnailExt, doc.Thumbnail);
string json = doc.ToJson();Metadata, properties, references and the preview are fully and stably readable. The
parametric model and B-Rep geometry live in the proprietary RSeStorage database and
are not decoded - for geometry, export to STEP/SAT or use the Inventor API. See the
format doc for the full picture.
.NET 10 SDK. The WinUI app additionally needs the Windows App SDK packages (restored automatically) and a Windows build target.



