# web-ifc **Repository Path**: rambuild/web-ifc ## Basic Information - **Project Name**: web-ifc - **Description**: No description available - **Primary Language**: Unknown - **License**: MPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-18 - **Last Updated**: 2022-01-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

ifc.js | demo | discord | usage examples | npm package | contributing

web-ifc

[![Build](https://github.com/tomvandig/web-ifc/actions/workflows/build.yml/badge.svg)](https://github.com/tomvandig/web-ifc/actions/workflows/build.yml) ![npm](https://img.shields.io/npm/dw/web-ifc) **web-ifc** is a javascript library to read and write ifc files, at native speeds. **web-ifc** is part of the [ifc.js](https://ifcjs.github.io/info/) project, which aims to lower the threshold for developing open BIM applications. ## Status Although it is quite stable and fast already, web-ifc is in **pre-alpha status** until ifc support matures. The list of currently supported ifc elements, or level of support for different ifc types, is an undocumented work in progress. Depending on your models, web-ifc may be quick and correct, or slow and broken, please share any problematic models so I can take a look :) ## Install `npm install web-ifc` ## Quick setup ```JavaScript 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](https://github.com/tomvandig/web-ifc/tree/main/examples/usage/src) for more details on how to use web-ifc. ## Building WASM module ### Setting up emscripten The WASM library is built through emscripten, please see [the emscripten installation guide](https://emscripten.org/docs/getting_started/downloads.html) for information on how to set up emscripten. Afterwards both `setup-env` and `em++` need to be in your path. ### WASM library 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-all` to build a release version of the wasm binary and the accompanying web-ifc api. It will be placed in `./dist`. Run `npm run dev` to launch a development server with a basic ifc file viewer. ## Stand alone C++ 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](https://github.com/tomvandig/web-ifc/blob/main/src/wasm/web-ifc-test.cpp) for a simple entry point to get started. ## Contributing Want to help out? Great! Please checkout [our contribution suggestsions](https://github.com/tomvandig/web-ifc/blob/main/contributing.md).