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

HostWhat you useStatus
Browserwasm modules with TypeScript declarations: engine functions in a Web Worker, the WebGPU Viewer on the pageavailable
xeokitXeoIFCLoaderPlugin: IFC straight into a xeokit vieweravailable
C, C++xeoifc.h with xeoifc.dll (Windows x64) or libxeoifc.so (Linux x64, Linux arm64)available
C#, .NETP/Invoke over the same headersample below; NuGet package on request
Pythonctypes over the same headersample below; wheel on request
Java, Delphi, other languagesany language that calls C functionsthrough the header
Command linexeoifc: IFC to GLB, XKT or a self-contained HTML viewer; query, split, merge, render; an MCP server for AI agentsWindows 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.

Open it

Browser, complete viewer

xeoIFC Web: tree, properties, sections, measuring, BCF, IDS, clash, terrain, export.

Open it - the calls it makes.

xeokit

Load .ifc and .ifczip into a xeokit viewer, without a conversion step.

Documentation and examples

C

external_walls.c with CMake, on the library from xeoifc-qt-source.zip.

examples/c

C# (.NET 8)

Program.cs with P/Invoke: dotnet run -- xeoifc.dll model.ifc.

examples/csharp

Python

external_walls.py with ctypes, no packages: python external_walls.py xeoifc.dll model.ifc.

examples/python

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

How a WPF window hosts the 3D view

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.