TOC | web-ifc documentation | platform documentation | demo | community | npm package
web-ifc is a javascript library to read and write ifc files, at native speeds. web-ifc is part of the That Open Company project, which aims to lower the threshold for developing open BIM applications.
npm install web-ifc
const WebIFC = require("web-ifc/web-ifc-api.js");
// initialize the API
const ifcApi = new WebIFC.IfcAPI();
// initialize the library
await ifcApi.Init();
// open a model from data
let modelID = ifcApi.OpenModel(/* IFC data as a string or UInt8Array */, /* optional settings object */, );
// the model is now loaded! use modelID to fetch geometry or properties
// checkout examples/usage for some details on how to read/write IFC
// close the model, all memory is freed
ifcApi.CloseModel(modelID);
See examples for more details on how to use web-ifc.
The current live build of web-ifc is available here. Using this allows you to test newest fixes before we make a release. If you wish to use this version then download the zip file and place the contents of the dist folder manually into your node_modules/web-ifc folder. I.e if you are using web-ifc-three then it will be node_modules/web-ifc-three/node_modules/web-ifc. Please note you must replace the javascript and the WASM.
These are the requirements needed to build web-ifc (only for those that wish to build their own version).
- Node v16 or later
- NPM v7 or later
- EMSCRIPTEN v3.1.44 or later
- CMAKE v3.18 or later
We have a library of test models in the tests/public folder. If you have a model you would like to contribute please open a PR.
You can run regression tests on all these models by running npm run regression
. It will alert you if any of the sample model geometry has changed. If the change is correct you can refresh the regression tests by running npm run regression-update
.
The WASM library is built through emscripten, please see the emscripten installation guide for information on how to set up emscripten. Afterwards emsdk_env
needs to be in your path.
To build the WASM you also need CMAKE see here and (on windows) MINGW see here - once installed (and in your path) run npm run setup-mingw
to configure the environment for web-ifc.
Run npm install
to install all dependencies.
Run npm run setup-env
whenever you open a new terminal, this will set up the required emscripten environment variables for you to compile code.
Run npm run build-release
to build a release version of the wasm binary and the accompanying web-ifc api. It will be placed in ./dist
.
If you wish to build the WASM with debugging enabled you can run npm run build-debug
. This will enable you to inspect debugging information better when running web-ifc.
Run npm run dev
to launch a development server with a basic ifc file viewer.
The output of the build process consts of the following files:
- web-ifc.wasm - The wasm (compiled C++) to run in the browser
- web-ifc-mt.wasm - The wasm (compiled C++) to run in the browser if multi-threading is supported.
- web-ifc-node.wasm - The wasm (compiled C++) to run in node
- web-ifc-api-node.js - Compiled javascript wrapper for the wasm to run in node.
- web-ifc-api-node.d.ts - Typescript definitions for the web-ifc api (for node)
- web-ifc-api.js - Compiled javascript wrapper for the wasm to run in browser.
- web-ifc-api.d.ts - Typescript definitions for the main web-ifc API
- ifc-schema.d.ts - Typescript definitions for the IFC schema
- helpers/properties.d.ts - Typescript definitions for the properties aspect of the web-ifc API
- helpers/log.d.ts - Typescript definitions for the logger aspect of the web-ifc API
- web-ifc-mt.worker.js - Webworker javascript to enable multi-threading in the browser.
Although the primary focus of the library is to be used through WebAssembly in the browser/nodejs, the project can be used stand-alone as a c++ library or executable. See here for a simple entry point to get started.