Skip to main content

Open Source IFC Frameworks : some experiences

I have been looking at programming Frameworks for IFC (Industry Foundation Classes), the open standard to exchange Building Information Models. I assume you are at least aware of what they are and what they contain...

While most commercial BIM software currently exports and opens IFC documents, I was interested to learn about actually doing something directly with these files, e.g. analyzing and visualizing or even generating them.

There are a few free IFC viewers available. Tekla BIMsight and Solibri Viewer are both recommended (the latter even cross-platform). But they are closed and can not be adapted for other purposes. However, I also read about a few interesting Open Source projects for creating and opening IFC files.
In the next posts, I will discuss some of them into more detail and try to have them running/compiled on my computer. I discussed BIMserver in an older post.

But first some overall thoughts.

  • Large class libraries: IFC contains a large list of classes. Most frameworks generate C++ or Java classes from the IFC schema files, which is obviously the smart thing to do. Certainly when things do not work well, as you can alter the generation procedure and 500+ classes are updated.
  • Viewers: in most cases, people start with viewing (or parsing) IFC files, to visualize them as lists or 3D models. However, when thinking about generative architecture and procedural design, it would be nice to have model generators too. Open Toolkits might be a way to start supporting them.
  • Cross-platform or not? The examples I found are either C++ or Java. The Java libraries should work on all platforms, whereas for the C++ libraries it depends. The class libraries themselves are commonly platform agnostic,  although many use recent libraries or even newer language constructs that are not always supported everywhere. The viewers are commonly using external libraries and they are not always cross-platform (although many are). As most BIM development seems to occur on Windows machines, I am particularly wary about having it supported on OSX as well. Usually, when Windows is supported, the next platform that is attempted is Linux, and in many cases this is available. But compilation on OSX is usually left at volunteers. So I will try to see if I can help a bit.



Comments

  1. B-Processor is Open Source BIM that is begin developed by an academic team at Arhus School of Architecture in Denmark. To my understanding, they do not support IFC files.

    http://b-processor.dk/

    ifcBrowser, as part of the development around ifcEngineDLL at TNO (Netherlands), is freely available for non-commercial use and source code examples of integration in custom programs is provided, but the ifcEngine is a Windows-only library for linking in your own software and is NOT Open Source at all.

    http://www.ifcbrowser.com/ifcengineviewer.html
    http://www.ifcbrowser.com/ifcenginedll.html

    ReplyDelete
  2. Other is uberviewer (GPL licence) You can see it in osbim.org

    ReplyDelete
  3. Uberviewer seems to be a Windows-only MFC program, that uses the non-Open Source IFCEngine.dll.

    While it is licensed as GPL, I'm not sure that it can legally be so.

    It contains MFC-snippets from the Visual Studio App-Wizard, containing copyright claims from Microsoft.

    It links against a non-Open Source (but free) library, that is not distributed as Source Code but in library (binary) form only.

    So while I am supportive of all Open Source BIM efforts, I have doubts about the mixture of licenses in this work.

    And I can not use it inside OSX.

    ReplyDelete
  4. The IFC Engine DLL is indeed a commercial application and source code is not available for free.

    However it is cross platform with also versions for Linux (not yet for MAC) and all source code is available for a fee.

    For commercial companies this gives the benefit of having access to all source code and being able to update/use (parts of) it without the requirement to add it to the community.

    The examples have free source in the sence that enyone can use them without limitation. Late binding enables use for VB, VB.NET, C/C++, C#, Delphi, JAVA etc. The use of SDAI as an interface should make it possible (for the non geometry part) to exchange the IFC Engine DLL with any other toolbox that supports SDAI.

    ReplyDelete
  5. Update:

    BIMServer is getting a new IFC Engine (ifcOpenShell) which is a drop-in replacement for the closed -source IFC-Engine in version 1.0. Sounds like this one is clean

    ReplyDelete
  6. I heard about it and would love to see this succeed, to get a complete Open Source solution (or platform, as BIMserver is more and more becoming).

    ReplyDelete

Post a Comment

Popular posts from this blog

Improve usage of BIM during early design phases

When I was collecting ideas for a book chapter on BIM (that seemed to never have emerged after that), I collected 10 ideas, which I believe still reflect good recommendations to improve the usage of BIM during the early design phases. These ideas are related to BIM software, but you can apply them in any flavor, as long as you can model with Building Elements, Spaces and have control over representation. Introduction This article gives an overview of several recommendations and tips, to better apply BIM applications and BIM methodologies, in the context of the early design phases. Many of these tips are applicable in any BIM application and they are based on experience gathered from teaching, researching and using BIM software. Sometimes they could help software developers to improve the workflow of their particular BIM implementation. Tip 1 : Gradually increase the amount of information In the early design phases, the architect makes assumptions and lays out the main design in...

PythonOCC : Open Source interactive CAD shell (and how to run it on OSX)

What is PythonOCC? PythonOCC is an Open Source (LGPL) Python-wrapper for OpenCASCADE. So what is OpenCASCADE (OCC)? This is an advanced Open Source (custom license) modeling kernel, comparable to commercial engines, such as ACIS or Parasolid, which are used in quite some commercial CAD programs. When you want to develop CAD software, you could use OCC and write programs in C++. And why using Python? With this wrapper, you can create CAD and geometry scripts in Python, which is an interpreted Object-oriented scripting language. You can write almost "on-the-fly" and seriously reduce the implementation effort, by skipping the compiling-phase. You can even interact with a running program in the Python interpreter. Want to read more about this? The OpenCASCADE official website  (currently Linux and Windows are officially supported) The PythonOCC website/blog  (beware that the core of the actions happen in the development repositories). So far so good. Now the nasty, techn...

Getting BIM data into Unity (Part 8 - Strategies to tackle IFC)

This is part 8 of a series of posts about getting BIM data into Unity. In this post, we’ll discuss IFC as a transfer format towards Unity. As with the previous post, this is not a coding post, although hints and examples are provided. Open BIM and IFC Everybody who ever met me or heard me present on a conference or BIM-lecture will not be surprised to hear that I’m a strong believer in the Industry Foundation Classes (IFC), an open standard, with already two versions published as an ISO standard, being IFC2x2 and IFC4 (but surprisingly not IFC2x3 which is widely used). In the ideal world, this would be the format to use to transfer BIM data into another environment, such as Unity. So what are our options? Looking in the Unity Asset Store Assimp is a library which supports multiple formats, including IFC. https://assetstore.unity.com/packages/tools/modeling/trilib-unity-model-loader-package-91777   I did a few attempts, but alas without any success. It is po...