buildingSMART Forums

Presenting Blender as a new IFC authoring tool

Question is When will this IFC 4.2 see the light in my prevered design software of choice? IFC has gained momentum in buildings but for other sectors that have a relationship with mechnanical and topography very little has changed of the years.

As I see IFC4.2 has a lot of improvements, especially in HVAC, the main issue today I think is buildingSMART should change/improve and develop a lot of things after ISO19650

Also, I guess, some software companies see their future unpredictable, because IFC, especially in STEP 2017 has some features that is not pleasant for software vendors

My two cents is that you cannot really compare DXF with IFC. They have different purposes and complement one another. Judging a format by how “aged” it is is not a valid argument in my opinion. To my understanding, DXF does not contain standard locations for representing complex BIM relationships, and therefore it not suitable as a BIM format. However, it is certainly extremely suitable for documentation, and certain forms of geometry.

In the field of GIS, there are quite a few formats out there - from the common shapefile format, to GeoJSON, Spatialite databases … from my experience they have more standards than the BIM world :slight_smile:

Update time!

  • New support for importing and exporting imperial units, and you can choose your primary LENGTHUNIT.
  • You can create geometry specifically for the PLAN geometric representation context now, and choose the TARGET_VIEW enum to do plans, sections, RCPs …
  • New export options to export materials as styled items. This is useful for exporting to Revit (and a few others), which seems to completely ignore IfcMaterial, but instead treats the styled item name as the material name, and ignores any colours assigned via IfcMaterial. Ideally, this should be fixed on their end, but is a workaround.
  • New import options to import 2D curve elements
  • Parametrically generated geometry from Blender now maintain their GlobalId value, even if you generate less or more of the geometry.
  • New import option to ignore site locations, so that non-geolocated IFC2X3 files or incorrectly geolocated IFC4 files (almost every single Revit export that we come across) can import with a sensible project origin.
  • New UI and improved support for specifying multiple swept solid extrusions per object, for geometric round-tripping with programs like Revit
  • Stephen Leger from Archipack has started contributing code! He has done some neat cleanups and optimisations on the Blender UI.
  • IFC BIMTester now has a feature where you can choose to purge tests for elements which have been since deleted since you wrote your test suite.
  • You can now specify IfcPerson and IfcOrganization details including postal and telecom addresses for export.
  • As usual, bugfixes, most notably for the export location of swept solids and parented Blender objects.

I am impressed by the ambitious and promising initiatives towards OpenBIM. Please keep on with it!

After learning more about the details I will come back with qualified technical comments.

Best regards,
Herbert from Austria

1 Like

Thank you @Herb! It is a long and difficult journey ahead, but the world needs more open :slight_smile:

First things first … new Blender version 2.81 has been released! See the changelog. This one focused a lot on improved sculping tools. The retopo tools are really important to bring in scanned geometry into high quality meshes. The built-in bulk rename is nice, although it already existed as an add-on for a while, and the improved snapping is great. Faster renders and improved denoising is awesome!

Update time!

  • Bugfix for IFC locations of objects which have a parent relationship or constraints in Blender
  • Plugin renamed to BlenderBIM
  • Version number now shows on the add-on
  • Objects can now be arbitrarily scaled in any axis
  • Under the hood code clean-up and PEP8 improvements
  • You can now specify an IFC Diff and do an incremental import. No need to reimport an entire file, just import the things which have changed!
  • Bugfix for BIMTester to prevent overwriting existing feature files
  • Optimisation for the “select audited elements” function. Much faster.
  • Add support for element voids and fill elements relationship. You can now properly do doors in walls and stuff like that.
  • Bugfix for IFC “select by type” function which wasn’t working.
  • Implement support for IFC library (not project library, which already existed - this new feature lets you specify if your project is on a BIM server, such as Git)
  • A couple new sentences added to the BIMTester vocabulary to mark elements as exempt from testing
  • Bugfix when shape representations are reused in their mapped item entity.
  • Support for parametric mirroring of geometry (aka the mirror modifier in Blender) to export out to IFC - it can halve your modeling time and export filesizes for symmetrical portions of your building!
  • New dropdown for audit class in the audit panel, instead of having to navigate to other panels to approve or reject IFC classes.

Also - brand new website design! Cleaner layout, mobile friendly.

Now comes with new tutorial articles on:

Also started a new series of articles to help upskill people on OpenBIM:

Related tools like Archipack also now have the ability to split and merge walls:


Happy holidays, everyone! It’s been almost 3 weeks since the last update, but there have been many developments.

  • Imports now support styled item colours, and differentiates between material surface colours and object surface colours
  • Support a “material passport”, essentially you store externally defined surface styles, and Blender can detect if any Cycles or Eevee shaders exist in it, and will load them. This allows for IFC models with complex textures and materials for CG renderings. No other BIM program can do this.
  • New IFC Clash utility, to perform clash detection, with a specified dimensional tolerance. This data can be exported into JSON so you can visualise clash results and analyse them. Clash detection is done directly on the IFC so you can run it on your BIM server. Can run from command line. This replicates functionality from Navisworks or Solibri.
  • You can proxy one shape for another using associated documents. If you associate another mesh object, Blender can replace the IFC shape representation with another Blender native file format. This way you can have low-fidelity models in the IFC file but retain higher polygon models elsewhere.
  • Import now supports document associations
  • New UI to choose exactly what geometric representation contexts to export.
  • IFC diff utility can now run from command line input so that it is easier to run from a BIM server.
  • New support for construction documentation. More on this below.
  • Bunch of under the hood fixes with IfcOpenShell thanks to @aothms and other IfcOpenShell contributors like AdriScho and mieszk

Complex material support:

Object proxying support:

Clash detection, as well as the JSON output (note: BCF output will come too):


User-configurable geometric contexts:


Per-object colour support:

I wanted to highlight one of the most important changes in this release is the ability to do construction documentation. A BIM model is only half the story, documentation is the “map” to help navigate your way through the data and direct your attention to portions of interest in the BIM model. So having open-data standards for OpenBIM is not enough, we need to have open-data standards for documentation.

This documentation is generated (i.e. section cut) from the IFC file directly (so you can headlessly publish it on your BIM sever!) and supports any direction of cut (plan, section, RCP, elevation), with clipping plane options and your typical slew of annotative objects. All sheets and output is in SVG, as it is an open-standard for vector data with wide support, and there is no viewer for the IFC annotation objects. Managing views on sheets is done with Inkscape, another free and open source vector tool. A standard web browser can view the output too. The technical lettering font is also completely open-source thanks to the LibreCAD community who has a nice collection.

We are currently using a 100% free and open-source pipeline to perform certain jobs on live commercial projects. The IFC file is used as a native format, Git is used for versioning, and construction documentation is also 100% open-source. See here a sample sheet which I am able to show produced with BlenderBIM.

Some close-ups:


If you’d like a copy of the PDF to see the full scale output please send me a message.

The output supports dimension strings (rotated and orthogonal), text with multiline and different alignment supports, section and plan level annotations, and different hatching styles, line thicknesses, leader markers (e.g. architectural tick dimensions v.s. engineering arrow dimensions), grids (from IfcGrid) and so on. I’ve set a bunch of presets to get people started with typical 2.5, 3.5mm 5mm, etc sizes that are standards in Australia. Dimensions are all calculated based on the model. This documentation is also semantic, as it includes SVG classes, so all annotation styles are applied at run-time using CSS, so you can re-use the same plan multiple times and turn on and off visibility or change the display for different users. It can also therefore be interactively queried on a web-browser.

The model is detailed to fabrication level and and have manipulations such as unfolding to create the steel lasercut net as shown at the bottom right of the sheet.

Annotation can be viewed in 3D - there are plans to store this in the IFC file too - but it may prove a little tricky since a lot of IFC entities related to annotation were removed by buildingSMART. It would be good to discuss options to restore some of these.

Sheet revisions are picked up from the active Git repository - so it would tag the current HEAD^ location of the version control system that forms the backbone of your BIM server using Git. No more manual versioning.


Many thanks to Thomas Paviot and Martin Siggel who are supporting Python-OCC which helps makes all this possible.

Oh, also, with BlenderBIM we can integrate with OpenStreetMaps GIS data to get an IFC output from the City of Sydney. Here it is viewed in XBim, taken originally from BlenderGIS add-on. There are roads, but they are coplanar with the ground, so you can’t really see them clearly since XBim doesn’t render it that way.

Download the latest today:


Very cool. I’m excited about the annotation layer being reflected in the IFC file. Would 2nd reviving some of the deprecated annotation classes.

1 Like

Amazing results @Moult !!!

1 Like

This is really powerful :grin:
Congratulations :wave:t2:

btw (off-topic):
How does this work from a mechanical point of view?
I am afraid that the stringer slides through bellow the profile beam, doesn’t it?

I pay high respect @Moult for the great achievements with BlenderBIM.

As contribution for further developments I will spend some comments:

I am happy to report that minor issues that I discovered in the previous version of BlenderBIM disappeared in the new version. (little misalignment of window and openingelement inside wall)
Results (ifc testfile has been built by PostgreSQL PL/ pgSQL):
xBIM Xplorer:



I am a little bit concerned about dynamic performance.
50 storey tower (highly simplified) did not open in BlenderBIM, even after one hour.
other results:
xBIM Xplorer


Best regards, Herb

Thank you for informing us, please if possible attach your test file.

Also, are you working on “grammars?”

There are the “tower” test files:

50 storeys:
tower - 50 storeys.ifc (2.3 MB)

reduced version with 4 storeys only:
tower - 4 storeys.ifc (185.4 KB)

Here are the test files “4storeys-4walls-64windows” that have been generated based on generic (parameterizable) XFC files for octagon windows and for the generic building:

parameter H_STOREY set to 4m:
4storeys-4walls-64windows - H_STOREY 4m.ifc (62.8 KB)

parameter H_STOREY set to 6m:
4storeys-4walls-64windows - H_STOREY 6m.ifc (62.8 KB)

I am not working on grammars from a scientific point of view.

I follow a very pragmatic way (KISS = keep it short and simple) to solve practical planning information challenges with state of the art IT methods and minimized human effort as aligned as possible to current standards (e.g. IFC, DIN SPEC 91391, …). But this would be another story respectively topic.

1 Like

I tried “IFC Clash utility” to be used on a windows machine but I am stuck at half of the way.
Does anyone succeed with “IFC Clash utility” on a windows machine?

I expect only some minor steps to be considered but I did not succeed completely through the tool chain dependencies:

  • “IFC Clash utility”
  • Python
  • Visual Studio
  • fcl
  • eigen3
  • libccd
  • octomap

I am currently stuck at VS2019 compiler error during compilation of fcl:
include\fcl\math\bv\RSS-inl.h(369): error C2280 “attempting to reference a deleted function”

Are there any similar observations?

@Herb - thanks for your encouragement and testing. The stair tread support is welded to the stringer where you drew a red circle. The stair design is also incomplete, so it may change once we refine the engineering.

I have fixed the issue where your file did not load. So you will now be able to import them into Blender successfully.

However, there are a few issues with your file. The first which jumped out was that global IDs aren’t correct. Global IDs must follow a very specific form of base64 encoding of a standard UUID, it is not correct to simply place text in there, which may create issues with IFC programs trying to read your IFC file.

I suspect that these issues may cause problems with reading your file. In the new year hopefully with the help of @aothms we can determine what exactly these are with closer inspection.

The fixes will be available in the next build :slight_smile:

I haven’t gotten the fcl dependency built on Windows yet. In the new year I will investigate packaging of the dependencies so people can have it working out of the box. Perhaps you can ask your questions in the fcl repo?

Happy new year!

1 Like
1 Like

3 entire weeks have passed since the last update, due to a 2 week downtime during the holidays - but we’re back in business with another update!

  • Be less strict about requiring BIM objects to be selected when exporting, to make it more user-friendly. Now you can just bulk select everything.
  • New workaround for importing materials from Revit, since Revit has a funny way of storing materials. Models being imported from Revit will now be much more colourful!
  • You can now create geometry and export spatial elements, such as an IfcSpace.
  • BIMTester now has a variety of new unit tests, including:
    • all IfcFoo elements have a name matching a particular pattern - useful to check whether the BIM author has followed a naming scheme in your BIM execution plans.
    • all IfcFoo elements have a particular shape representation - useful to check if the BIM author has their geometry in a representation that you can edit, for round-tripping between Blender, FreeCAD, Revit, and others.
    • all IfcFoo elements have a particular attribute - useful to check if BIM authors have correctly filled out an attribute
    • all IfcFoo elements have a particular property / property matching a pattern - useful to check if BIM authors have correctly filled out a property in a pset that you need for your exchange requirements
    • all IfcFoo elements have a particular quantity - useful to check if BIM authors have filled out sensible quantity values for something you need to quantify
  • BIMTester can be run now both as a standalone CLI app in your BIMServer, or as a library, and allow you to set custom unit testing parameters for greater testing control
  • Have a “force recut” feature to regenerate a new section / view of a model in construction documentation.
  • New experimental collection of 50 hatch types for construction documentation, including various drafting standards
  • New interface to select a person and organisation to properly set ownership history, with detailed information like addresses and so on
  • New interface to quickly create a new view / section of the model
  • Each view / section now stores its own view scale, instead of it being an export-time setting for convenience
  • New UI to easily switch between views / sections
  • IFC Diff utility, to compare the difference between two IFC files is now packaged for Windows as a standalone executable
  • The IFC Diff utility has also been packaged within BlenderBIM, so you can run it from the Blender interface to compare files
  • Application and IFC header metadata is now (almost) properly filled out, just to be neat.
  • Importing now specially treats aggregations and displays them as aggregates
  • Opening elements are now stored in an import in their own collection for you to do with them what you please
  • New feature to explode aggregations into parts
  • Cleaner geometric representation context UI
  • New interface to quickly assign any representation to a particular context, subcontext, or target view.
  • Automatic vendor hack mode is enabled by default: it detects a particular vendor when importing and auto applies various workarounds for their quirks in their IFC files. Currently enabled for Revit’s lack of IFC geolocation and funny materials. This should help a lot of people who aren’t aware that these workarounds need to be applied and would otherwise get a bad impression of IFC files and BlenderBIM.
  • Bunch of under the hood bug fixes for more reliable importing.

Fancy colours!

Aggregations of imported objects highlighted:

Owner history people and organisations:


Run diffs to compare IFC files!


Views and sheets:


More settings to control MVD import and exports:


Assign various contexts to representations:


Various clean-ups to the website, as well as publicly making the website source code accessible so that anybody can contribute content to it!

New documentation website, with content that is a work in progress, describing in more technical detail about each feature in BlenderBIM. The source code is all public, so others are more than welcome to help write documentation for BlenderBIM!

In addition, Thomas has submitted a new proposed presentation to the BuildingSMART Oslo summit talking about IfcOpenShell and open source authoring workflows - A presentation of the work happening in FreeCAD, BlenderBIM and IfcOpenShell towards authoring capabilities for end-users.. I’ve also noticed that the vote button is kinda weird on some computers - you have to only click the “like” button once and wait for the pop-up. Then enter in your details manually (do not copy paste) and press submit and wait for the pop-up to disappear. Then refresh the page and you will be logged in (check top right). Then you can press the like button again. Not sure why this is the case. If it all works, you will see the vote number increment.

If you’d like to vote for Thomas’ presentation, click here to view his entry.

Get the new version now:


Amazing stuff !!!

Wow :crazy_face:, another big step forward :wave:t2:

Currently I get an error in Blender during activation of blender28-bim-200109-win:
"ModuleNotFoundError: No module named ‘pyparsing’
Do you have a hint where this could come from?

  • blenderbim issue?
  • Python issue on my local machine?