BlenderBIM - OpenBIM authoring with Blender

BlenderBIM allows you to author, audit, import, and export OpenBIM data using Blender. OpenBIM includes IFC data, but also BCF, MVDXML, gbXML, and more. The objective is to be capable of delivering the design, engineering, and construction of the built environment purely using free and open-source software, in an industry that is highly proprietary and dominated by a monopoly.

https://blenderbim.org/
https://blenderbim.org/download.html
https://blenderbim.org/blenderbim-tutorial.html
https://blenderbim.org/blenderbim-vs-revit.html

This add-on was previously only publicized on the buildingSMART forums, and I wanted to refrain from posting here while it was still incredibly unstable, but as it is starting to mature, I would like to present it to the BlenderArtists forums, and would really appreciate early adopters and feedback :slight_smile:

The add-on is 100% free and open source.

BIM data, of course, is just one part of the toolset and ecosystem required for the built environment. There are other tools that are necessary to be used in combination with BlenderBIM for a full workflow, of course, such as Archipack, sun position, Sverchok, Measure-it, and more. BlenderBIM focuses purely on the BIM data aspect.

In addition to the Blender add-on, BlenderBIM comes with a few utilities, which integrate with the add-on:

  • IFC Diff - to create “diffs” of IFC files
  • IFC COBie - to extract COBie data from a COBie MVD IFC file into a spreadsheet format for quick auditing
  • BIMTester - uses IfcOpenShell to run unit tests on a BIM file, to audit if categories or properties are correct and what you expect.
  • (Experimental) IfcDoc - warning: highly experimental utilities to cut sections / plans / RCPs and do sheet layouting with SVG.

BlenderBIM and its utilities are already being tested in large-scale commercial projects in various portions of the design and construction pipeline by a few people around the world in various firms.

a2f3674dfd3628ddb06cd9136f3d661ed5b01f4a_2_690x463

b9bf1e88ec92294fad85e90ae380ed8d6dc0877a

The changelog from the buildingSMART forums have been copied below to provide details for those who are interested :slight_smile:

Changelog
  • Supports writing IFC4 files first and foremost.
  • Lots of clever reuse of representations to create efficient and small IFC files and you have full control over exactly how you optimise the IFC file, including generating products from parametric arrays and object group instances
  • Supports the spatial tree including multiple buildings, multiple sites, and so on
  • Create, edit, and save aggregations including extremely granular breakdowns
  • Create project libraries, not just projects
  • Quantity take-off calculations
  • Quickly assign IFC4 compliant property sets as well as custom ones
  • Modeling abilities are completely separate from BIM data. In contrast to other tools where the type of object governs how you can model it, in Blender it is totally separate and you can instantly convert an object from one type to another, change its aggregation, change its spatial location such as changing floors, etc without any fear or breaking your model
  • Export with/without quantities, or with/without representations (hint: an export without geometry retains all of the useful BIM data but is extremely fast to export, and creates a tiny IFC filesize!)
  • Improved support of project libraries, so you can have multiple project libraries, and easily relate/unrelate them to projects
  • Property sets now detect data types from the property set templates, so you can define your own property set templates, and it will read them that to allow you to enter in data quickly. I am not aware of other vendors using property set templates, so this is exciting news!
  • Implement IFC georeferencing through map conversions and target CRS definitions. This makes three vendors that I am aware of that do this properly: ArchiCAD, FreeCAD, and now Blender.
  • Allow you to export 2D / 3D wireframe geometry, this allows some very efficient filesize savings where a full solid representation is not required.
  • Export basic material colours and rendering styles including transparency.
  • Allow export of an externally defined material, such as a .blend file, .vrmat file, or even .mat Radiance file for lighting simulation!
  • Units are no longer hardcoded, and now support different types of metric units which can be set through the Blender UI, so you can choose to work in metres, millimetres, etc.
  • Allow property sets to be assigned to types, and have object property sets override type property sets.
  • Objects and types can now be associated with external documents, such as plans, brochures, specifications, warranties, etc.
  • Objects and types can now be classified using classifications such as Uniclass / Omniclass / anything you choose.
  • Objects and types can now record qualitative constraints in the form of objectives. This can help record design intentions and health and safety strategies, among other things like code compliance requirements.
  • Documents and classifications are related to the project itself.
  • Support for multiple representations are created. Previously, only a ‘Body’ representation was created. Now, you can add or remove multiple representations, some of which may be automatically generated from the ‘Body’ representation, and some which you have full custom control over their content. The supported representations are: Body Axis Clearance Footprint Reference Box CoG
  • Although Blender has first-class support for manipulating breps, you can now choose to export simple extrusions of any angle (i.e. not necessarily normal to the profile curve) as a SweptSolid, giving the first steps towards supporting IFC roundtripping with programs like Revit which support these types of geometries but not other types.
  • You can now create nested element relationships: for hosted objects and nested components.
  • Material layer sets can be defined
  • Material constituent sets can be defined
  • Predefined door attributes can now be defined and assigned to door types
  • Predefined window attributes can now be defined and assigned to window types
  • It also has a QA module which allow for QA, which is really exciting! Because very often we get IFC models which are very badly misclassified.
  • The QA module includes a feature to allow applying a temporary colourscheme to the model based of a property. For now, the interface allows you to colour it by IfcClass, but you could theoretically colour by anything (fire ratings, acoustic ratings, any property …).
  • You can bulk approve or reject classifications and keep track of what elements you’ve audited for various properties. Any IFC property auditing will get tracked in plaintext format in Gherkin syntax, so it reads like English
  • You can now select objects by GlobalId
  • New basic UI for georeferencing data
  • Custom psets are now supported - it can also support complex data types and you can load in your own pset templates too!
  • New UI for adding in attributes, with drop down selection of possible attributes taken from the spec. Now everyone can easily add attributes!
  • New UI for adding / removing property sets (and you can set them in bulk!)
  • New quick project setup button to add site / building / storeys.
  • Bugfixes for importing, assigning classes, and roundtripping geometry with Revit (Revit seems to expect normalised direction vectors, even though the IFC spec doesn’t require this)
  • Now supports assigning surface colours directly to object representations via styled items, as well as assigning surface colours via materials - and as the user, you have the choice which way you want to do it. To my knowledge no other BIM authoring tool supports this feature!
  • New BIMTester tool is now packaged and available for Windows 7. It audits your BIM file to customised rules, and generates HTML reports!
  • New UI to explicitly assign how swept solids are represented, to make it easy to round trip with Revit.
  • New UI to assign externally defined materials - more on how this allows people to create incredibly detailed CG rendering workflows soon!
  • IFC import has been somewhat rewritten in preparation to start supporting the ability to import this data too, not just geometry and basic materials and ID. The importer has been merged with the exporter and packaged as a single package to make it easy to install.
  • Importing IFCs now have improved mesh reuse and optimisations on shape creation leading to much faster imports! Also some bugfixes thanks to @Hans_Lammerts
  • New interface to assign documents to IFC objects
  • New interface to assign classification systems (Uniclass / Omniclass) to IFC objects
  • IFC importing now also imports object attributes
  • Bugfix in BIMTester to run and re-run multiple test suites
  • IFC COBie packaged with minor bugfixes
  • Experimental gbXML export now supports creating openings, as well as some bugfixes
  • New IFC Diff tool (basically git diff for IFC files) - this allows you to take two different IFC files and it will compare them and tell you what changed. It will tell you if geometry has changed, or
  • attributes, and also the previous value of the attribute and the new value of the attribute. It writes it out to a json file which can be visualised with BlenderBIM so you can overlay changed models.
  • New experimental sectioning tool to create construction documentation. You can cut sections direct from IFC files and create view hatching / line weight stylesheets with CSS which can be mass applied across objects. Objects are smart vectors, so unlike other documentation tools, 2D documentation have SVG classes applied so each object knows the IFC GlobalId, material, and IFC class.
  • New interface to create, edit, and save IFC aggregates
  • Import now supports curves, so you can import survey point geometry that might come from 12D, for example.
  • Export now supports Blender curve objects, not just mesh objects, so you can do profile extrusions along vector curves and export them
  • A whole bunch of geometry processing fixes in the underlying IfcOpenShell library by @aothms (which are quite technical but it looks like a great job! :slight_smile: )
  • 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.
17 Likes

This looks really great. I downloaded the addon and installed in blender 2.8 and 2.81, then I activated the addon and all seem fine, but nothing happens… It’s like the addon is not even activated I get none of what I see in the video. Can you help?
I noticed the version I downloaded for windows is version 0 and In the tutorial is something else

Hi @Ector3 ! Thanks for trying out BlenderBIM. The missing version number has been now fixed and will be available in the next build. However, it is purely aesthetic and shouldn’t affect functionality.

Are you sure you downloaded the Windows version of the add-on? Are there any error messages in the console? Feel free to catch me online on IRC at https://blenderbim.org/community.html and I can help debug live.

Hy noidtluom! Thanks for this huge addon!
I tried also to export a *.ifc file, but after export i could not importing it into FreeCad or Revil LT 2016.
Only the a reimport into blender has worked.
It also depends to the unit scale? Used Metric/ Meter 1.0
Used 2.81/Windows: blender28-bim-191121-win.zip
(blender28-bim-win64-190930.zip only import and export?)
Any hints?

I got a result to open it in FreeCad so far! But not in Revit LT Viewer 2016.
Just saved the blend file before export…

Hey @mkbreuer ! BlenderBIM should support any unit scale, so if it doesn’t work due to unit scales, please let me know and it is a bug.

If you are on FreeCAD, ensure that your IfcOpenShell version is 0.6.0, otherwise it won’t import IFC4 files, but I think the latest versions of FreeCAD package this correctly :slight_smile:

Glad to hear you got it working on FreeCAD! Can you please send me your IFC file to [email protected] and I can try and help debug why it doesn’t work in Revit LT Viewer 2016?

I am also curious why you needed to save the blend file before export - that should not make a difference. If you can somehow replicate your issue, then please send me your IFC file so that I can debug it.

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 BlenderBIM.org website design! Cleaner layout, mobile friendly.

https://blenderbim.org/

Now comes with new tutorial articles on:

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

2 Likes

Now it works on my blender in windows 10. Thanks… Time to play with it

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:

0

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: https://blenderbim.org/

2 Likes

Thanks for all your work it looks awesome… What would be the proper way to install it. I downloaded the new zip file and it has a lot of new folders in it now, so I was not able to install through the preferences install method.

I recommend uninstalling the old version of the plugin first (keep a backup for any custom data you might’ve added). Then, you can install using the preferences, add-on, install method. You do not need to unzip the .zip file. Keep in mind it might take a little while since the add-on filesize is much larger (to include necessary deps for doing construction sections).

https://blenderbim.org/install-blenderbim.html - this may help.

I am online on IRC in general - if you catch me online we can screenshare and I can help debug.

Thanks noidtluon, Yes it works… Thank you.
The documents looks so professional and beautiful. How do you make it look like that? what is your workflow.

Thanks for a great great work :blush:would it be possible to view navigate ifc outside blender? Even without a bim server instance.

@nafergo, there are various tools to view IFCs outside Blender. Lots of proprietary tools like Revit/ArchiCAD/Tekla/12D all support IFC, also proprietary web systems like Aconex and BIM360. As for free software viewers, XBim is a free software web viewer for Windows, and there is also BIMSurfer v2, which is an experimental web viewer. Over time, we hope to develop a full design to construction and beyond pipeline using 100% free software.

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 BlenderBIM.org 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..

If you’d like to vote for Thomas’ presentation and support Blender, FreeCAD and Free software in general, click here to view his entry. 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, otherwise, try again.

Get the new version now: https://blenderbim.org/

1 Like

No words man no words. Truly amazing.

Hi, great work on adding IFC support to Blender!

I’m currently working on adding geometry to Blender programmatically (point sets from a compactor machine, represented as planes), with the purpose of exporting this as IFC. As far as I can see, this will work quite well, except adding properties…

To fully utilize the power of BIM I want to add custom properties to each individual object in the Scene, and to my frustration this doesn’t seem to be possible from within BlenderBIM?? If I’m not mistaken, with the current workflow you need to first generate a csv containing all custom property names and values, and reference this file to the object. My models will contain thousands of objects, each with their own unique properties - so even if I generated all the csv files I’m afraid the file I/O would make a serious dent to the efficiency.

Am I missing something, or could you maybe point me in the right direction to implement this? (As far as I can see, the properties is added to the IFC structure on export - but I’m not sure if I can alter this behavior from the script running inside Blender?)

And again, great work!

@inge_handagard you are right that it is a significant limitation to have to create a CSV. It works well for types, but not for individual products which need their own properties. Can you create a bugreport here and I will fix it :slight_smile: Edit: see next post.

@inge_handagard - your issue has now been fixed as of this commit. You can simply add pset data to the obj.BIMObjectProperties.override_psets property.

If you’d like to set specific data types, you can define a property set template in the schema folder (a sample is provided).

Thank you!

That is absolutely insane :astonished: Impressive response! I’ll check it out, and get back to you :slight_smile:

Hi,
I treid to open a .ifc file from Revit. The parts seem to be loaded, but I can’t see anything in my viewport.
Any idea what this is?
Thanks