🏠 Architects no longer draw building plans one by one, but create 3D models of buildings, much like the houses modelled in The SIMS. This way of working is called BIM (Building Information Model), because the models created contain both geometry and information.
🔥 However, a building is so complex that there is no single application that can create these models in their entirety. Each application has a specific mission: modelling geometry, calculating structures, making energy simulations, creating project documents, and so on.
👀 These tools come from multiple developers around the world and each one works in its format. In other words, the structural model created by a structural calculation application cannot be read by energy simulation software and vice versa. So how is it possible to create a model of a building from multiple tools?
🎉 The answer is IFC, a format created by BuildingSMART to contain these 3D models of buildings. It is open, so anyone can read and write it. Yay!
Anyone who wants to make a BIM application needs to read and write IFC files to be able to import and export information from other tools. Unfortunately, IFC is a format that is difficult to read and write. There are thousands of pages of documentation and creating and maintaining a self-made IFC parser is a huge task.
Can you afford IFC?
💸 This is something only companies with several developers working full time on this could afford. It doesn't sound that open anymore, does it?
In case you are curious about how an IFC looks like inside, here you have an example. Imagine parsing hundreds of thousands of lines like these:
💀 Even if you are willing to create a parser from scratch and maintain it with every change in the IFC schema, there are several non-trivial questions to tackle this problem. How to manage memory in very large files? How to implement geometric generation efficiently? What to do when an IFC has not been defined correctly?
It wouldn't make sense for all developers to have to implement their own IFC file reader and writer for their applications. Especially when we all want the same thing: importing and exporting geometry and data.
This allows developers of architecture and construction applications to work in IFC effortlessly and focus on the functionalities that add value to their business.
IFC.js has two focuses:
IFC.js can generate 3D scenes because it is compatible with 3D libraries such as Three.js or Babylon.js. This means that you can create 3D BIM tools right away.
High-level access to all the properties associated with that geometry. This means easy access to data on the building components, their materials, thermal characteristics, structural strength, etc.
This library is for anyone who wants to develop BIM applications. This includes both developers creating applications for the construction industry and architects and other professionals who want to take advantage of the data in their IFC files.
You can use IFC.js to create open BIM applications for any platform:
👓 IFC.js can read IFC files seamlessly.
🏐 Generate 3D geometry that runs on 60 fps in a browser.
🎨 Easily edit geometry appearance with the power of Three.js.
🏠🏠🏠 Load multiple federated IFC models.
📃 Retrieve IFC properties for reports and databases.
✍ IFC.js also can edit and write IFC files from scratch.
The core of the library: an IFC parser and geometry generator written from scratch in C++ and compiled via Emscripten to WebAssembly. This repository encapsulates the complexity of reading IFC files and loading their data into memory.
Do you want to help us keep improving the world of Open BIM development with IFC.js? The library is big, so you will have to choose where you want to participate.
In any case, we encourage you to stop by the Discord channel, say hello and tell us what's on your mind, so we can give you some guidance.