NwcIO 0.10.0
dotnet add package NwcIO --version 0.10.0
NuGet\Install-Package NwcIO -Version 0.10.0
<PackageReference Include="NwcIO" Version="0.10.0" />
<PackageVersion Include="NwcIO" Version="0.10.0" />
<PackageReference Include="NwcIO" />
paket add NwcIO --version 0.10.0
#r "nuget: NwcIO, 0.10.0"
#:package NwcIO@0.10.0
#addin nuget:?package=NwcIO&version=0.10.0
#tool nuget:?package=NwcIO&version=0.10.0
<p align="center"> <img src="docs/images/nwcio-banner.png" alt="NwcIO" width="640"> </p>
NwcIO
NwcIO is a fast, 100% managed .NET library and command line tool that reads Autodesk Navisworks cache and document files (.nwc, .nwd, .nwf) directly from disk without Navisworks or the Navisworks API, and exports IFC, glTF, OBJ, HTML, and JSON.
Built clean-room under the IOExtend organization alongside RvtIO and IfcIO.
What it does
- Reads scene hierarchy, geometry meshes, materials, transforms, GUIDs, and property categories.
- Exports to standard Industry Foundation Classes (IFC2X3 & compact IFC4), binary glTF 2.0 (
.glb), Wavefront OBJ, and structured JSON. - Coordinates multi-model federated assemblies with 3D geometric clash detection, proximity clustering, and clash matrix execution.
- Manages saved viewpoints, dynamic section planes, redlines, selection sets, and search sets with Navisworks XML and buildingSMART BCF 2.1 exchange.
- Supports 4D TimeLiner construction simulation with Microsoft Project XML (
.xml) and Primavera P6 (.xer) exchange, appearance profiling, spatial grids, 3D measurement, and revision comparison. - Generates standalone, zero-dependency interactive 3D WebGL HTML viewers (
.html) with 6-sided section box, turntable orbit, and viewpoint walkthrough tours.
Install
Install the command line tool:
dotnet tool install --global NwcIO.Cli
Add the library to a .NET project:
dotnet add package NwcIO
The library targets .NET 8 and .NET 10. It uses managed code without native dependencies or Windows-only APIs and supports Windows, Linux, and macOS.
Command line
Export to IFC, glTF GLB, Wavefront OBJ, or JSON:
# Convert to IFC2X3 or modern compact IFC4
nwcio model.nwc model.ifc --ifc4
# Convert to binary glTF 2.0 (with PBR materials and vertex normals)
nwcio model.nwc model.glb
# Export 3D meshes to Wavefront OBJ
nwcio model.nwc model.obj
# Export scene hierarchy and properties to JSON
nwcio model.nwc model.json
Coordinate models, detect clashes, and export BCF:
# Run clash detection between models and export buildingSMART BCF 2.1
nwcio clash arch.nwc mep.nwc --bcf clashes.bcfzip --tolerance 0.01
# Execute multi-discipline clash matrix across a federated folder
nwcio clash-matrix ./models/ -o matrix.json --export-markdown matrix.md --bcf matrix.bcfzip
# Export standalone 3D WebGL HTML viewer with sectioning and measure tools
nwcio view model.nwc -o viewer.html --grids grids.xml
TimeLiner, viewpoints, search sets, and revision diff:
# Simulate 4D construction schedule at a specific date
nwcio schedule model.nwc --sim-date 2026-06-01 --export-csv schedule.csv
# Export saved viewpoints and section planes to BCF 2.1 or Navisworks XML
nwcio export-viewpoints model.nwc --bcf viewpoints.bcfzip --xml viewpoints.xml
# Compare two model revisions (added, deleted, modified geometry & properties)
nwcio diff baseline.nwc revision.nwc -o diff.json --bcf diff.bcfzip
Diagnostics and progress go to standard error. Run nwcio --help for the full list of options.
Library
Open a Navisworks document, inspect elements, and export to GLB or IFC:
using NwcIO;
using NwcIO.Exporters;
// Open document directly from disk
var doc = NwcDocument.Open("model.nwc");
Console.WriteLine($"Model: {doc.ModelName}");
Console.WriteLine($"Nodes: {doc.RootNodes.Count}, Triangles: {doc.TotalTriangleCount:N0}");
// Query nodes by property category
foreach (var node in doc.FindNodesByProperty("Item", "Type", "Wall"))
{
Console.WriteLine($"Node: {node.Name} (Path: {node.Path})");
}
// Export to binary glTF 2.0 and IFC4
NwcGlbExporter.Export(doc, "model.glb");
NwcIfcExporter.Export(doc, "model.ifc", new NwcIfcExportOptions { Schema = NwcIfcSchema.Ifc4 });
Run 3D geometric clash detection between documents:
using NwcIO;
using NwcIO.Clash;
var archDoc = NwcDocument.Open("Architecture.nwc");
var mepDoc = NwcDocument.Open("MEP.nwc");
// Detect interferences with broad-phase AABB and narrow-phase triangle intersection
var report = NwcClashDetector.DetectClashes(archDoc, mepDoc, new NwcClashOptions
{
Tolerance = 0.01, // 10mm tolerance
ClashType = NwcClashType.Hard
});
// Group clashes by spatial 3D proximity and export BCF 2.1
report.GroupByProximity(clusterDistance: 1.5);
report.SaveBcf("Clashes.bcfzip");
See the public API for the supported surface and getting started guide for detailed workflows.
Documentation
The documentation site with API references and guides is at https://ioextend.github.io/NwcIO/. offers an automatically generated overview of the repository.
Supported files
Reads binary Navisworks Cache (.nwc), Navisworks Document (.nwd), and Navisworks Federated (.nwf) files. Tested against models saved across Navisworks 2016 through 2026.
Limitations
- Version 0.10.0 is a preview. The API can evolve before 1.0.
- Geometry extraction supports triangle meshes, line sets, cylinders, and point clouds; proprietary custom parametric solids are tessellated.
- Writing native
.nwdfiles is not supported (export targets native.nwc, open standards: IFC, GLB, OBJ, JSON, HTML, BCF, and Navisworks XML exchange).
Build from source and tests
Use the .NET SDK selected by global.json, which specifies 10.0.100 with latestFeature roll-forward.
From the repository root:
dotnet build NwcIO.slnx -c Release
dotnet test
Contributing
See CONTRIBUTING.md and the Code of Conduct. Release changes are recorded in CHANGELOG.md.
Security
Report vulnerabilities through GitHub private vulnerability reporting in the repository's Security tab. Do not open public issues for security vulnerabilities. See SECURITY.md.
License and trademarks
NwcIO is licensed under the MIT License. Copyright holder: mahach666.
NwcIO is not affiliated with, endorsed by or sponsored by Autodesk. Autodesk and Navisworks are trademarks of Autodesk, Inc.
The file format is read by analysing binary streams for interoperability. No Autodesk code or binaries are included.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.