Build on xeoIFC
xeoIFC is one IFC engine with the same functions in the browser (WebAssembly with a WebGPU viewer) and in native programs (one plain C header). It reads IFC 2x3 to IFC 4.3, tessellates it, answers queries, and writes IFC for splits, merges and authored models. This page is for developers who want xeoIFC inside their own product: which platforms exist today, a small working program for each, and how evaluation and licences work.
1. Platforms
| Host | What you use | Status |
|---|---|---|
| Browser | wasm modules with TypeScript declarations: engine functions in a Web Worker, the WebGPU
Viewer on the page | available |
| xeokit | XeoIFCLoaderPlugin: IFC straight into a xeokit viewer | available |
| C, C++ | xeoifc.h with xeoifc.dll (Windows x64) or libxeoifc.so
(Linux x64, Linux arm64) | available |
| C#, .NET | P/Invoke over the same header | sample below; NuGet package on request |
| Python | ctypes over the same header | sample below; wheel on request |
| Java, Delphi, other languages | any language that calls C functions | through the header |
| Command line | xeoifc: IFC to GLB, XKT or a self-contained HTML viewer; query, split, merge,
render; an MCP server for AI agents | Windows x64, Linux x64, Linux arm64 |
| macOS, iOS, Android | - | on request |
2. Recipes
Every native sample does the same thing and prints the same lines: load a model with a background job, find the external walls with one document API query, and write them to a new IFC file.
Browser, about 150 lines
One canvas, a streamed load in a worker, orbit, zoom, pick and properties.
Browser, complete viewer
xeoIFC Web: tree, properties, sections, measuring, BCF, IDS, clash, terrain, export.
xeokit
Load .ifc and .ifczip into a xeokit viewer, without a conversion step.
Python
external_walls.py with ctypes, no packages: python external_walls.py xeoifc.dll model.ifc.
Desktop application
xeoIFC Qt: a complete C++ viewer on the library, with the library drawing into the window. Open source (MIT).
The calls it makes and its load times
xeoIFC gpui: a viewer in Rust with gpui on the same library, without Qt. Open source (MIT).
How a gpui window hosts the 3D view
xeoIFC WPF: a viewer in C# with WPF on the same library, with the features of xeoIFC Qt. Open source (MIT).
Downloads: xeoifc-wasm.zip (the WebAssembly library with JavaScript bindings and TypeScript declarations, without the viewer application) and xeoifc-qt-source.zip (the native library for Windows and Linux with xeoIFC Qt) - all releases on the releases page.
3. The same API everywhere
The browser library, the native library and the command line share one document API: JSON operations in, JSON results out. The query of the samples is the same request in every language:
{"op": "query.select", "doc": "m",
"args": {"text": "is IfcWall and Pset_WallCommon.IsExternal = true",
"select": ["name", "storey.Name"], "includeRefs": true}}
The command line prints the whole API as TypeScript declarations: xeoifc describe.
4. Evaluation and licences
Every function works without a licence key; viewing is free. Without a key, each IFC file that the library writes carries
one more element, an IfcBuildingElementProxy with the text "xeoIFC evaluation version", and the converter
marks its GLB and XKT files the same way. A licence key removes the marker:
xeoifc_set_licence_key(session, key, NULL); /* C: 1 licensed, 0 no key, -1 unknown or expired */
worker_set_licence_key(key, Date.now() / 1000); // browser (Web Worker)
xeoifc -i model.ifc -o model.glb --license-key KEY # command line, or XEO_IFC_LICENSE_KEY
For your product we offer an engine licence (browser and native), export licences, custom builds of the web and desktop viewers, and support with priority fixes on your files. The libraries are provided under the xeoIFC Testing License for testing and evaluation. For commercial or production use, contact xeoFoundry.
5. Send us your hardest file
Send up to three IFC files that your current engine struggles with. Within 48 hours you get back, privately: a self-contained HTML viewer of each file, rendered views, and the load time and memory. No commitment - contact xeoFoundry.