BlenderBIM - OpenBIM authoring with Blender

Hey @EzVidz - we’re working on dedicated documentation capabilities. There is a long thread covering the progress here.

Interestingly enough, before starting on the BlenderBIM Add-on, I actually started hacking on FreeCAD’s BIM, Arch, and Draft capabilities. It was actually a conscious decision to stop hacking on FreeCAD and build the BlenderBIM Add-on instead. There are a number of what I hope to be well considered reasons for this.

  1. Two geometric paradigms are better than one.

Blender and FreeCAD focus on different geometric paradigms. We need both in the AEC industry. They are suited to different situations. IFC also supports both geometric paradigms, so having editors that are well suited to both is desirable. Similarly, with two applications, it makes it far better to test out round-tripping, without having to rely on proprietary BIM applications where it’s usually impractical due to numerous bugs that take years to fix.

  1. We take a completely different approach to FreeCAD in BIM support

FreeCAD uses a FreeCAD specific BIM data structure, and to interoperate with other non-FreeCAD tools requires import or export. In the BlenderBIM Add-on, we actually only use Blender as an interface. Under the hood, we don’t use a Blender specific BIM data structure: instead, we use IFC natively. It might look like you’re pushing Blender meshes and vertices, but in actual fact, you could be moving parametric IFC solids. As a result, in FreeCAD, the .fcstd means everything. In the BlenderBIM Add-on, the .blend file is meaningless - you can delete it and you won’t lose any data.

Because we don’t import or export, and treat IFC natively, it means that the BlenderBIM Add-on has zero data loss in IFC, and supports 100% of the BIM specification … a feat that is unique in the industry. For example, in under a year, last year, we rebuilt the BlenderBIM Add-on from scratch, and also included 4D and 5D support - a much faster pace of development because IFC was used natively. In exchange for this approach, simple things like drawing walls became much slower to develop. In the long run, I believe this approach is more advantageous. This native IFC support means we also support partial BIM editing - so we can scale to 100,000s of objects on large BIM projects, or in theory an infinite number of objects so long as we load portions of it at a time. Because FreeCAD currently relies on atomic translation, this is not (yet) possible in FreeCAD.

In the future, I suspect that FreeCAD may adopt portions of this strategy too. When that time comes, we will actually be able to reuse a huge amount of development directly in FreeCAD … see the next point.

  1. We actually work together a lot with FreeCAD already

The FreeCAD devs are in close contact with us, and vice versa. We collaborate through . In fact, both FreeCAD and the BlenderBIM Add-on share the underlying IFC engine: IfcOpenShell. The way the BlenderBIM Add-on is designed is that everything is built agnostic of Blender… Blender is purely a user interface (a complex one, to be sure, but it is a UI nonetheless). So every single feature we build in the BlenderBIM Add-on … actually can be re-used for free in FreeCAD (or via command line, or any other app)! For example, BIMTester has been reused in FreeCAD. Many of the performance improvements, or new utility functions have helped improve things in FreeCAD’s BIM capabilities. We’ve designed the code to be sharable.

  1. We use a different paradigm for drawings

We treat drawings as integral to the BIM model. Drawings are direct from IFC(s). Not Blender. This means that you can have 5 consultants using 5 different BIM tools (Revit, ArchiCAD, Tekla, ProStructures, etc) all working through IFC, and generating drawings from BIM datasets that are easily 1gb or more.

The FreeCAD approach is to import all data into FreeCAD, and then drawings are just generated in FreeCAD, not in IFC. So in the BlenderBIM Add-on, you can delete all your Blender stuff, and your full documentation pack - all schedules, drawings, sheets, etc, are still linked to your IFC model - this is a conscious design choice that we believe drawings are just as important as the rest of the BIM model and should not be separated. In FreeCAD, the drawings are currently part of FreeCAD.

I have a huge respect for FreeCAD and their developers. They have helped significantly in the development of the BlenderBIM Add-on, and I hope we have returned the favour too. We are stronger as two projects, sharing core code, rather than one project. More than happy to hear what @yorik has to say :slight_smile:


Thanx for the extensive reply!
I’m confident that you guys know what you’re doing when it comes to deciding what 3D app to use and expand upon.

Have you guys seen CYPE Architecture?
It’s a full IFC Builder/modeler. Just no usable offline, which is a real downside if you ask me.

I take it that replicating an app like this from scratch is a no-go for now?
I think that the closes we might get to that within blender would be creating a dedicated workspace with if possible conventional toolbars for IFC modeling.

I’m already guessing that you are familiar with Andrew Peel’s work? His Home Builder add-on is pretty good, and is also developing a sheet/documentation system for it.

I hope that you guys together with the rest of the community can eventually pull of a IFC modeling/documentation solution, whether it’s a standalone or an add-on/plugin for something else.

I noticed that guys are developing a full IFC system which I don’t know bout all its capabilities. Personally I’m more focused on the Modeling/documentation side of things.

Again thanx for the detailed replay.

And yes I’m also curious about @yorik vision on this.

I’ve seen CYPE’s work, but haven’t used their platform myself. From what I can tell it seems as though CYPE Architecture is not a native IFC builder / modeler. It simply translates its native data into IFC via an export feature, like the majority of existing BIM solutions out there. This means it is not in any technical way different to FreeCAD. It might be packaged nicer, or marketed as pure IFC, but I can’t see any technical difference from its online manual.

Replicating a new modeling app from scratch is a no-go simply due to the sheer complexity involved in building such an app. Making 3D CAD / BIM isn’t easy, even if you’re only working on the interface. It would be a significant investment even if a commercial firm were involved. It is far easier to use an existing geometry engine or platform. Of course, the limitation is that the UX is “shared” with other non-BIM paradigms, for better or worse.

That said, as we have designed the code to be sharable and agnostic of UI, if in the future it becomes easier to achieve this feat, or there are developers who are CG programming wizards around, we won’t be starting from scratch.

Andrew Peel’s work is awesome, and he is also around in . I believe it is currently Blender-specific though, so there are some fundamental differences that make it not possible to integrate directly. However, I’ve been slowly working on a concept to allow any parametric geometry generator to be integrated, be it Andrew Peel’s work, Geometry Nodes, even FreeCAD as an external app, or your own Python script. This is very slow going though.

I apologise that the modeling / documentation side of things is one of the slowest aspects of development. My personal usecases usually have modeling done by another proprietary app already, so we are augmenting an existing BIM dataset, instead of starting from scratch.

BlenderBIM Add-on v0.0.220130 has been released with 252 new features and fixes. It’s our built environment, help support the BlenderBIM Add-on: 100% free and open source software that lets you author and document BIM data fully to ISO standards. It’s built by the AEC community, for the AEC community. Get it today:

It’s been 3 months since the last release. Unfortunately, development had been put intermittently on hold due to various factors, including presentations being prepared for the Boao Forum for Asia ISTIF conference, FOSDEM 2022, and the 1-month online course on OpenBIM and Python programming by E-Zigurat. In addition, there was a one month break from development during the holiday period. It’s a marathon, not a sprint! :slight_smile: Happy 2022, and we’re back!

Let’s get into the details.

Optimisations to authoring and geometry caching

A huge kudos to the exceptional optimisation work by Thomas Krijnen. Especially when modifying large files, expect operations to be in the scale of 100x faster, especially when dealing with proprietary BIM exports. Bulk movement checks are a minimum of 5 seconds faster. Importing files with booleans can be 2x to 3x faster. New performance logging in the core means that optimising is far from over.

A new geometry cache is now implemented, so reopening the same project will be much faster.

Increased stability

Native authoring stability was a huge priority for this release. An additional 450 tests were written since the last release, and 76 bugs were fixed. This is the return on investment in the new testable code architecture which was revealed in the previous release.

Brickschema integration

Brickschema is a way of describing system topologies for building management systems (BMS). When we talk about digital twins and clear away the marketing buzzwords, we’re really talking about things like Brickschema and live building sensor data that Brickschema can reference. The BlenderBIM Add-on is the first in the industry to start providing a graphical Brickschema authoring environment that integrates with IFC.

It is now possible to create a 2-way link between IFC BIM models and Brickschema BMS models. This is possible due to new support for managing IFC libraries. Brickschema authoring is still very new, but it’s ready for basic testing!

New bulk property editor

In our quest to help clean OpenBIM data in the industry, an incredibly suite of bulk property editing tools are now available by developer Vukas Pajic. Includes bulk renaming, data type changing, removal, and adding properties.

Chipping away at drawing generation and MEP support

Drawing generation is a huge task that still isn’t ready for user testing, but all the same work has been done. Including improved section cutting booleans, geometry caching, fixing “the torus problem” for steel sections, new 2D elements in the demo library, paper scale annotations in the viewport, performance testing, native IFC roundtripping for annotations, associating objects for smart annotations, annotation variables, drawing sheets, and improved UI.

Also … more rabbits!

MEP is one of the areas not really supported by the BlenderBIM Add-on but that is now changing. Support is now added for different types of building systems, selecting different types of systems, and displaying distribution ports.

Better docs and building for developers

A number of fixes to the build system makes life easier for developers on different environments to build IfcOpenShell thanks to Thomas Krijnen. Also really exciting is the new super secret demo module tutorial and improved developer guide for new developers who want to learn how to build your own BIM application on Blender and extend the BlenderBIM Add-on.

So much more

Other notable improvements include new UI grouping, IFC to P6 XML export support thanks to developer myoualid, viewing IFC metadata prior to loading with one-click IFC4 file upgrades thanks to developer Gorgious56. Blender 3.0 is now officially supported. In addition, new support for parsing EXPRESS schemas in the interface has been added, in preparation to support IFC4X3. The testing process for IFC4X3 support has begun, with the hundreds of tests in the suite being redirected to check IFC4X3 support, with very promising initial results.

A huge thanks to the growing volume of new contributors who are joining the team and changing the industry. You can too!

All changes

New features:

  • IFC element names no longer treat the Blender name suffix as significant
  • Object names now guard against duplicate IFC prefixes when assigning.
  • All element’s spatial containment collections are now synced when assigning a class.
  • Structural items in the collection hierarchy are now auto synced.
  • Remove legacy unassign class feature in favour of just deleting objects. Thanks theoryshaw!
  • #1692 get_info_2() logical now supported Thanks Thomas Krijnen!
  • You can now specify a target view when creating a new drawing. See #1153.
  • Drawing collection hierarchy is now auto fixed if shuffled around manually. See #1153.
  • Drawings list now reads data from IFC, not Blender. See #1153.
  • Removing sheets now works in IFC. See #1153.
  • You can now create drawing sheets in IFC. See #1153.
  • You can now show and hide distribution ports of an element.
  • New diagrams on the developer guide.
  • Finish building minimum viable product of the IFC2P6 converter. Thanks myoualid!
  • Fix #1514. You can now customise the default names of occurrences create from a type.
  • New software architecture section in the developer guide.
  • New demo module to teach developers how to hack on the BlenderBIM Add-on.
  • Updates to space boundary geometry now auto updates on export.
  • IfcCSV now loads the selector by default so its much more fun to use a lib.
  • You can now remove bricks from a Brickschema model.
  • New utility function for getting ports of an element
  • Implement assign and unassign ports in IfcOpenShell API
  • Dynamically update section shader backface color (#2000) Thanks Gorgious56!
  • Nodes are now offset nicely for cutaway shader (#2000) Thanks Gorgious56!
  • Smart annotation variables for drawings now reimplemented. See #1153.
  • #1993 vs2022 hdf5 Thanks aothms!
  • Editing task times no longer tries to be clever with actual dates because you know what you’re doing.
  • Fix #1576. Managing IfcSystem subtypes is now possible.
  • #1993 msvc 2022 config Thanks Thomas Krijnen!
  • Nicer looking gantt charts and make it easier to print to PDF.
  • Code licensing clarifications. See #1082.
  • Fix #1908. Extracting elements using IfcPatch now includes all properties.
  • Fix #1962. You can now easily append product assets using the API.
  • You can now reset and restore your API owner settings.
  • Header data previews for IFCZIP are now supported as well.
  • Fix #1956. One-button upgrade from IFC2X3 to IFC4.
  • Minor improvement to the sequence UI to always allow you to cancel editing mode.
  • ADD_COMMIT_SHA in build scripts Thanks Thomas Krijnen!
  • You can now associate annotations with objects for smart annotations in IFC. See #1153.
  • define the vector sass [0] as a std::vector<std::unique_ptr<ShapeAnalysis_Surface>> Thanks Benjamin Dahl!
  • Remove broken and obsolete Blender clasher which is incompatible with the geom.tree broadphase approach.
  • Improvements to 2D booleaning Thanks Thomas Krijnen!
  • Implement adding plain bricks not based on IFC
  • Support type-based class checking for converting IFC2X3 models to Brickschema
  • The IFC Class panel now shows inherited predefined types
  • New utility to get predefined type
  • Show ifc specs in file selector (#1980) Thanks Gorgious56!
  • UI Simplification with Panel Groups (#1979) Thanks Vukas Pajic!
  • Implement auto and manual refresh of the Brick model navigator
  • You can now create a new blank Brick project
  • New debug feature to purge HDF5 cache in case the cache is corrupted.
  • Implement human readable rdfs labels in Brickschema navigator
  • Display IFC schema in file selector right hand side panel (#1978) Thanks Gorgious56!
  • New utility to get IFC all elements that are relevant in Brickschema
  • Basic implementation to bulk convert relevant IFC classes to a Brick model
  • New IFC to Brick class mapping utility
  • You can now select all system objects from the object panel for convenience.
  • Optimise all editing API functions to be 100x faster when you’re dealing with proprietary BIM exports with loads of shared owner histories. See #1904 and #1905.
  • Schema versions are no longer locked to IFC4 and 2X3. You can now load express schemas at run time.
  • Purge obsolete IFC types mappings
  • Install to system local root Thanks Thomas Krijnen!
  • Fix: shift count negative or too big Thanks Thomas Krijnen!
  • #1960 BRepBuilderAPI_MakeFace on non-overlapping 2d subtraction Thanks Thomas Krijnen!
  • Log performance aggregates as logger messages Thanks Thomas Krijnen!
  • Logging statement for total file conversion Thanks Thomas Krijnen!
  • Update main.schema_identifier doesn’t exist Thanks Thomas Krijnen!
  • #1969 take uppercase in register_schema() Thanks Thomas Krijnen!
  • build-deps.cmd typo 0.7.0 branch Thanks jakob-beetz!
  • The IfcOpenShell API now supports automatic primitive casting for editing properties. See #1943.
  • Primary measure type lists are now dynamically generated based on the schema.
  • Write documentation to help developers get acquainted with testing
  • fix umlauts not showing up correctly in dynamic enums #1941 (#1945) Thanks Vukas Pajic!
  • Fix #1717 : Disable task editing if task was deleted as a result of deleting its parent (#1936) Thanks Gorgious56!
  • Optimize logic for bigger number of tasks (#1936) Thanks Gorgious56!
  • New bulk property editor (#1896) Thanks Vukas Pajic!
  • Updated for IfcOpenShell build instructions Thanks ssg! Thanks garylzimmer!
  • BlenderBIM Feature - Filter By Building Storey Thanks bosonprojets!
  • Good news everyone! Option to process wall opening subtractions in 2D. Thanks Thomas Krijnen!
  • Small changes to iterator settings Thanks Thomas Krijnen!
  • changes in ifc2ca standard case Thanks Jesusbill!
  • ifc2ca - possibility to exclude zero length springs in point connections Thanks Jesusbill!
  • changes in ifc2ca bonded case Thanks Jesusbill!
  • Optimise operations on large files. #1807 method mapping proposal Thanks Thomas Krijnen!
  • minor changes in ifc2ca scripts Thanks Jesusbill!
  • OCC7.5 to OCC7.6 support → deprecated Poly_Triangulation Nodes() Thanks fichter!
  • Switch to libocct for yml workflows Thanks Thomas Krijnen!
  • Prevent searching for invalid IDs in IFC debugger (#1924) Thanks Gorgious56!
  • New descriptions, labels, and debug output in IFC debugger (#1924) Thanks Gorgious56!
  • Debug op to select highest meshes by polygon percentile (#1924) Thanks Gorgious56!
  • bimtester: if lang argument is not set use feature file lang for output messages, improves #1910 Thanks Bernd Hahnebach!
  • bimtester: update log and smartview, they still are deactivated by default, fixes #1892 Thanks Bernd Hahnebach!
  • You can now add feed relationships in a Brick model from IFC elements
  • From an IFC element, you can now add a new Brick element in a Brick model
  • Assigning a brick reference now adds a 2-way IFC reference in the Brick model
  • Little utility to help printing out maintainable classes and other classes in contractual documentation.
  • bimtester: improved language support #1928 Thanks Bernd Hahnebach!
  • bimstester: feature cleanup and more german support Thanks Bernd Hahnebach!
  • get_total_inverses now efficiently gets the full number of references to an entity to optimise editing. See #1904.
  • bimtester: gui, initialize ifc file and feature file text Thanks Bernd Hahnebach!
  • Allow to assign IfcRelSpaceBoundary to an object (#1902) Thanks Cyril Waechter!
  • Allow to manually update boundary connection geometry (#1899) Thanks Cyril Waechter!
  • bimtester: fix gui, works with feature file now instead of feature directory Thanks Bernd Hahnebach!
  • Converting brickschema projects to IFC libraries now works on IFC2X3
  • Assigning library references now works on IFC2X3.
  • Editing object placements is now 3x faster on large files. See #1807.
  • #1785 HdfSerializer read-only option Thanks aothms!
  • Added information for debugging level parameter Thanks Felipe Mesquita!
  • #1895 don’t signal element ready when result is empty Thanks Thomas Krijnen!
  • Fix #1889. Allow explicitly overriding data types when editing psets.
  • #1153 timing Thanks Thomas Krijnen!
  • #1153 update with two new options Thanks Thomas Krijnen!
  • #1153 option to preprocess shape into sets of profile edges Thanks Thomas Krijnen!
  • #1885 consider schema type when copying attribute values Thanks Thomas Krijnen!
  • bimtester: Fix numerous language issues with french, italian, and dutch Thanks Bernd Hahnebach!
  • (slightly) Optimise batch removing objects Thanks Gorgious!
  • More slow progress in getting annotations round-tripping. See #1153.
  • You can now associate IFC elements with Brick elements and navigate to them
  • You can now assign and unassign library references
  • New UI to add / edit / remove library information and references.
  • Raise default section height from storey from 1.0 to 1.2 Thanks Bruno Postle!
  • A whole bunch of new usecases for managing IFC library information and references
  • New utility to get layers of an element. See #1869.
  • Rebuild text annotations to have leaders in the same object and use text literals. See #1153.
  • Viewport annotation decorations now scale based on paper size. See #1153.
  • Drawing annotations now are stored in IFC using ObjectType conventions. See #1153.
  • Reimplement roundtrip of most annotation elements for drawings. See #1153.
  • New experimental OBJ2IFC script
  • tree.protrusion_distances() Thanks Thomas Krijnen!
  • Purge old 2D element drawing system, so we don’t get double the symbols on drawings.
  • Swapping a Blender material for another is now auto synchronised.
  • Optimise object placement change checking, so medium sized project exports are 5 seconds faster at minimum, but can be much higher since false positives are culled.
  • Load CJIO on execution instead of initialisation Thanks Laurens Oostwegel!
  • show property description in pset_template ui Thanks Vukas Pajic!
  • Geometry caching is now enabled for model importing
  • Changes are now synchronised prior to switching representations.
  • [BlenderBIM] Tools to load IfcRelSpaceBoundary (#1864) Thanks Cyril Waechter!
  • Scale changes are now auto synchronised on export.
  • Improve support for Powerproject 14.0 import (#1865) Thanks ecke101!
  • Integrate ifccityjson in BlenderBIM (#1859) Thanks Laurens Oostwegel!
  • Implement cache updating for drawings. See #1153.
  • Resolve #1836. Scaling in Blender is now auto resolved when representations are updated.
  • Purge old dumb door and dumb window tool to prevent confusing users
  • Add annotation symbols for doors, windows, and bunny to the demo library
  • New IfcOpenShell utility to get instances of an element type easily
  • #1785 omplete stored_settings / requested_settings check Thanks Thomas Krijnen!
  • Consistent setting type Thanks Thomas Krijnen!
  • Resolve #1860. Brickschema is now optional.
  • Drawing module now is in sync with latest C++ upgrades. See #1153.
  • Allow Thanks Thomas Krijnen!
  • #1785 check settings in cache and upgrade to world coords Thanks Thomas Krijnen!
  • Fix casts in XML serializer Thanks Thomas Krijnen!
  • ifccityjson: it is now easier to extract one LOD Thanks Laurens Oostwegel!
  • ifccityjson: prevent interior holes in faces as there is a bug in the geometry generation Thanks Laurens Oostwegel!
  • New feature to select all objects in same container
  • New feature to select the container of an object
  • Resolve #1750. You can now save IFCs under a relative path to your Blend file.
  • only call expensive wstring_convert() when necessary Thanks Thomas Krijnen!
  • #1785 geometry caching caching Thanks Thomas Krijnen!
  • Resolve #1749. You can now save as another IFC filename.
  • Rename some files with more sensical names Thanks Thomas Krijnen!
  • #1153 #1852 project points to form SVG HLR cut plane Thanks Thomas Krijnen!
  • #1153 evenodd SVG styling. Thanks Thomas Krijnen!
  • IfcConvert : SEW_SHELLS on svg serializer Thanks Thomas Krijnen!
  • #1153 boolean subtraction on parts Thanks Thomas Krijnen!
  • –cache and subtraction in Thanks Thomas Krijnen!
  • Add schema caching to Brick schema loading.
  • Implement new Brickschema project browser.
  • Slightly more robust deletion tracking.
  • ifccityjson: Fix bug dependency updated CJIO where cityjson vertices got transformed automatically Thanks Laurens Oostwegel!
  • #1153 another small hack to get boolean projection working more generally Thanks Thomas Krijnen!
  • #1850 Process extrusions of comp profiles seperately Thanks Thomas Krijnen!
  • #1743 don’t consider bbox in opening subtractions Thanks Thomas Krijnen!
  • #1785 geometry caching on multi threaded iterator Thanks Thomas Krijnen!
  • #1153 svg subtraction settings Thanks Thomas Krijnen!
  • #1785 quick identity check to keep trsf form at identity Thanks Thomas Krijnen!
  • Add tutorial to ifccityjson Thanks Laurens Oostwegel!

New fixes:

  • Fix bug where drawing objects could be added to the wrong context.
  • Fix bug where editing then switching to the current representation crashes.
  • Fix bug where syncing an object removed from the collection tree breaks.
  • Fix #2002. Fix bug where sometimes shape IDs wouldn’t be pure integers.
  • Fix #2001. Fix bug where you could not undo deletions.
  • Fix #1998. Fix bug where colours don’t show if styling is applied to the mapped item instead of the actual representation item.
  • Fix error when updating representation on object data with no BIMMeshProperties Thanks Gorgious!
  • Fix bug where you couldn’t select properties with a dot in the name for IfcCSV
  • Prevent error if last temporary section has been removed (#2000) Thanks Gorgious56!
  • Fix shader glitch when user deletes last cutaway object (#2000) Thanks Gorgious56!
  • Fix bug where zero durations were not allowed in task times.
  • Fix #1995. Bug where section cutaways didn’t work in Blender 3.0.
  • Fix bug where you could not add properties to projects themselves.
  • Improve boolean reliability. #1948 clear tmp list Thanks Thomas Krijnen!
  • #1985 Fix bug with selecting objects via geometry tree. Consolidate and correct shell count checks in tree Thanks Thomas Krijnen!
  • Fix propagation of kernel settings (affects multi threading) Thanks Thomas Krijnen!
  • Fix #1934. Fix bug with improper nesting of subfolders when exporting IfcZip.
  • Fix #1954. Fix bug where importing MSProject XMLs with no project names failed.
  • Fix IfcCSV import bug.
  • Fix #1989. Fix bug where you couldn’t export to IfcJSON, since it couldn’t be imported again.
  • Fix bug where you could assign a product twice to a process.
  • Fix #1931. Fix bug where duplicated type products should not share material associations.
  • Fix bug where annotation decorations didn’t show correctly in Blender 3.0
  • Fix #1925. Fix bug where nested collection deletions were not synchronised properly.
  • Fix bug in BCF. Correct HeaderFile (#1942) Thanks molitoris!
  • Boundary geom creation : fix math + small ui fix (#1938) Thanks Cyril Waechter!
  • Fix bug where IfcPatch IFC4 migration could break on Revit files
  • Improve boolean reliability significantly. Thanks Thomas Krijnen!
  • Fix booleaning bug. #1914 only proceed with ‘face addition check’ when first operand contains open shells Thanks Thomas Krijnen!
  • Fix #1692 memory leak in get_info_2() Thanks Thomas Krijnen!
  • Fix #1917. Fix warning where the relating type classes data couldn’t be accessed.
  • See #1917. Refactor and fix warning message when you haven’t got any contexts in a project yet.
  • Fix #1923. Fix bug where creating a new structural analysis model broke.
  • Fix #1913. Fix bug where filtering by decomposition didn’t work on IFC2X3.
  • Fix #1921. Document issue with installing on outdated Ubuntu distributions.
  • Prevent error if id has no geom representation in IFC debugger (#1924) Thanks Gorgious56!
  • Fix bug where libraries didn’t work in IFC2X3
  • Fix #1816. Fix bug where cameras weren’t allowed to be optional in BCF 2.1.
  • Fix bug with missing system arrows in visualising offset models and sink/source mixed flows.
  • bimtester: do not break bimtester if translation files are missing, fixes #1910 Thanks Bernd Hahnebach!
  • Fix bug where Blender name wouldn’t match IFC Name when reassigning class. See #1902.
  • Fix segfault thanks to aothms.
  • Fix percentage loading implementation with the new more accurate progress number.
  • Prevent crash on export for obj with no material (#1903) Thanks Cyril Waechter!
  • Fix bug where selecting type occurrences did not work
  • Fix bug where updating owner history may not work if you were using it outside Blender.
  • Fix model segfault. #1897 handle nesting in get_decomposing_entity_impl() Thanks Thomas Krijnen!
  • Fix bug in FM utility for grabbing classes from the draft FMHEM standard
  • Fix bug in convert length unit recipe where IFC2X3 ownership history fails.
  • Fix #1886. Fix getting layers for IFC2X3 files.
  • Fix bug where subelement coordinates were incorrectly calculated in non SI units
  • Fix bug where you couldn’t copy quantities to other elements
  • Fix bug where unlinking a style that was invalidly linked didn’t work.
  • Fix minor error in console when changing drawings. See #1153.
  • Fix bug where annotative grids did not sync.
  • Fix #1857. Fix bug where deleting from the outliner was not tracked.
  • Fix #1872. Bug where duplicating an object didn’t duplicate its styles.
  • Fix bug where style colours were not auto synchronised.
  • Fix bug #1854. Materials are now auto replaced in Blender when you assign a new IFC material.
  • Fix bug where an added default material was not linked and auto synced.
  • Fix bug in IFC2X3 where updating style colours didn’t work.
  • Fix bug where diffuse colour was not correctly extracted from nodes
  • Fix #1856. Bug where you lost your existing container or aggregation when you added a new aggregation assembly.
  • Fix #1764. Bug where OpenLCA UI would freeze if it couldn’t connect to OpenLCA.
  • Fix #1855. Bug where authoring type dropdowns didn’t refresh.
  • Fix bug where removing a representation from a typed instance didn’t remove all data users.
  • Fix representation where removing a representation left objects with an empty mesh. Now a proper empty is used.
  • Fix bug where non-geometric objects caused the representations UI to not display
  • Fix bug where assigning a type did not use existing representation data in the scene if the context had changed
  • Fix bug where adding a representation to a type instance didn’t share meshes
  • Fix bug where you couldn’t add a plan representation to something with no context identifier
  • Fix interface bug where representations assigned directly to a context aren’t shown
  • Fix bug where existing meshes were not deleted when switching representations.
  • Fix bug where adding a representation to type instances didn’t ensure it was added to a geometric type
  • Fix bug where pie update container didn’t work.
  • Fix bug where copying an instance did not auto link the meshes.

Hello @noidtluom , Ive been experiencing data loss whenever i import an IFC file into Blender. Please help me find solution to this. Thanks.


Hey @Roggii would it be possible to share your file ([email protected] if private) so that I can recreate your bug? It is difficult to know the reason without replicating it first.

We can also organise a screensharing session to debug your issue if necessary.


Sure that’s fine. I will share the file with you. Thanks

Hi folks - would it be possible to offer your section view tool as an individual add-on?

I teach in interior design and this would be very useful.

While I marvel over all the BIM stuff - this is beyond my comprehension!

Thanks! I got your file and the issue is now fixed. In the future, ideally you should export to IFC4 using proper IFC geolocation. The file is not correctly geolocated, which creates all sorts of complications, which we try to autodetect and work around.

1 Like

Hey @cekuhnen sure thing! Have fun!


There is an add-on for this, it is not like that within BIM, because the IFC information is used to generate the 2D drawing of the elements and I think it is implied that this is only possible after entering the correct information in the objects to be dissect, but it might be possible to do it with the Nodes and use the grease pencil, with the layers to give different characteristics to the strokes .

My old attempt with node

I don’t know if you are aware that he also made an add-on to export subdivision surfaces with Blender to IGES.

1 Like

Thanks @noidtluom . I really appreciate your help. Cheers!!!

1 Like

Amazing ! This works very well.

How hard would this be to expand so one could place few section place icons (empties) and toggle between them like in SketchUp?

Hi, are there any instructions on how to do assemblies in Blenderbim? All the instructions that I have found are outdated and don’t work on the newer versions.

Hi, Is it just me or is not working on blender 3.1.2


Hi every one!

You’ve most probably seen this already:

My question is, would it be possible to expand these CAD Tools with IFC BIM tools.
I don’t have any idea myself as to how this would look.
But I imagine 1 Day BlenderBIM having a Toolset/BAR with Wall/Windows/Doors/Stair/Columns and Beams tools, with added a Added CAD Drawing toolset like this mimicking SolidWorks/Inventor.

@cekuhnen great idea! Can you please help post on our Github so we can track it?

@3DWizzard look at the IFC Aggregate panel. Select an object and then press the “+” icon.

@patoaltaco the latest release is updated for Blender 3.1.

@EzVidz yes we are working on an integration, in particular for editing extruded profiles.

1 Like

BlenderBIM Add-on v0.0.220516 has been released with 352 new features and fixes. It’s our built environment, help support the BlenderBIM Add-on: 100% free and open source software that lets you author and document BIM data fully to ISO standards. It’s built by the AEC community, for the AEC community. Get it today:

Support for Blender 3.1!

Blender moves fast, and we’ve got new builds available. Did you know the BlenderBIM Add-on supports all Blender versions from version 2.8 onwards? There are now official builds for Python 3.7, 3.9, and 3.10.

Basic drawing generation is now available

A huge amount of work was done on 2D drawings with over 50 fixes. Almost all drawing data (notable exclusions include rendering styles) are
now part of the Native IFC dataset, and so most of the drawing and sheet features which were broken in previous releases are now working again. If you wanted to test drawings, now is the time! The UI also got a refresh, distinguishing between drawing types and linking drawings and
schedules into sheets. It is now easier to create new drawings with preset directions for project N/S/E/W.

You can now specify custom stylesheets, smart tags are now linked in IFC, new angular, radius, and diameter dimensions, fills, and custom tags on built-in annotation types (such as when annotating levels). Schedules are also now implemented as associated IFC documents. 2D annotation now also has support for Z index so you can change the draw order of linework.

Drawings now also have automatic reference generation. So instead of having to draw annotations manually for objects like grids, sections, and elevations, these annotation symbols are now auto generated and synchronised when the base object is updated. So if you move a grid, the grid on all drawings are also updated. These references keep track of drawing names and sheet numbers, so if you change sheets or reshuffle drawings, the references will also update.

A brand new CAD module allows 2D CAD drafting, especially useful when drawing details. Standard features like trim, extend, intersect, fillet, arc by 2 points, arc by 3 points, and offset are available with hotkeys for rapid editing.

Updates on Information Delivery Specification

BuildingSMART has been developing a new technology known as Information Delivery Specification. This is a standardised approach to auditing IFC models. For example, you can check whether or not properties are assigned, or materials exist. Originally, IfcOpenShell provided support for it during a previous Google Summer of Code project. However, IDS has evolved since then and the IfcOpenShell codebase has been recently updated with a comprehensive test suite that addresses many of the ambiguities in IDS. This addresses many concerns like inheritance,
overrides, and filtering by classifications, properties, attributes, materials, and more.

Unfortunately, IDS is not yet ready for end-users, so this code is only available for developers who want to explore this standard. When stable, this will likely supersede BIMTester.

New documentation for users and developers

Lack of documentation has always been a problem. This release sees a new documentation website with the basics documented for both users and developers.

Users can access the new documentation here:

Enough docs are written to give users a guide of how to explore models. The docs are still horrendously incomplete, but at least this sets a standard of documentation expected and a structure for how to present it.

Developers can access the new documentation here:

This addresses long-time concerns that many of the IfcOpenShell utilities and API were hidden, which is a shame as IfcOpenShell actually has a crazy number of features. Check out the API docs here:

Support for distribution ports

For MEP modeling, all distribution elements (like ducts, pipes, equipment) have connection ports to allow them to connect within a distribution system (chilled water, supply air, etc). Many IFC viewers do not show these distribution ports, which is a shame, because they are critical to ensuring the correct connectivity and topology of a distribution system.

New features involve showing ports, hiding ports, and basic port editing. You can now move, copy, add new ports, or delete existing ports. You can change the location of ports, and the attributes of a port. You can also connect, disconnect, or set the flow direction of ports.

Of course, editing ports by itself is not enough for complete MEP modeling, but it is a critical step in the right direction. Very minimal features have been implemented to do with automatically drawing ductwork from parametric widths and heights, but it is still too early to be productive with.

Construction sequencing improvements

You can now export schedules to Microsoft Project. Importing from MS Project is also improved with a number of critical bugs that broke importing (including calendar and duration calculation) fixed. A number of critical import bugs were also fixed for P6 XML versions <8.1. For those using IFC to XML conversions with IfcConvert, schedule, task, and calendar data is now also converted thanks to Christian Martínez de la Rosa!

Date calculations have been improved, handling cases where tasks are edited without enough date information, infinite loops in invalid calendars, recursive calendar removal, or editing start times with no finish. Date calculations now follow working days, and handle a 9-5pm day as a 1 day durection, instead of calculating from midnight.

Gantt chart presentation is also now much better, showing ISO durations and task captions on the chart bars.

Support for rendering styles and textures

The BlenderBIM Add-on now suports rendering styles and (certain types of) textures. The colours you see in a BIM model are typically the on-screen basic shading colours. However, IFC also stores rendering materials, rendering colours, and textures. These materials (i.e. lighting modes or rendering modes) are actually compatible with glTF and X3D. This means that modern physically based materials are supported. Textures like diffuse, normal, metallic, emissive, are also supported.

With better support for rendering, this gives BIM authors more control over basic model presentation, and with support for texturing, this can be used instead of previous hacks where textures were represented as unnecessary geometry (especially for models which tesselate text, signage symbols, or things like grilles and grates).

New material and style manager

A critical part of managing a BIM model is seeing the materials and styles used. The new material and style manager lets you see a list of these, filter by material or style, delete, add, and see where it is used. Hopefully, this will lead to improved data quality in BIM models where materials can be better managed and audited, and then linked to life cycle analysis.

Styles are also more than colours. The new style manager exposes styles like fill area styles, curve styles, and text styles. Managing these styles are critical for drawing support.

Improved document manager

The UX for managing document and document references have now be improved. Attach and associate documents such as drawings, schedules, and specifications with objects, and add subdocuments or superseded documents. Support for relative paths make it easier to transport associated external documents with IFC models.

New support for actors

BIM isn’t just about geometry … or properties … or tasks, resources, cost items, materials, analytical models … and so on. BIM is also about actors! Actors are people and organisations, including liable engineers and architects, clients and operators, occupants and lessees, manufacturers, warranty providers, and suppliers. These critical relationships betwene objects and “actors” can now be managed. People, organisations, and people within organisations can be designated actor roles and associated with objects, and the UX has been refreshed based on this usecase. This has large implications for facility management.

So much more

A few critical bugs were fixed for coordinate offsets in projects using map coordinates, the selector utility now has support for chaining and “not” filters, basic usability tweaks here and there, such as the save and save as distinction when saving projects, file browsing for URI reference properties, a number of bugfixes related to IFC2X3 authoring, and increased geometry stability when importing. The test suites have now also passed the 1,500 test milestone to guarantee the ongoing stability of the add-on.

A huge thanks to the growing volume of new contributors who are joining the team and changing the industry. You can too!

All changes

All changes can view the directly via the Git logs here:

Credits for this release (in order of commits via git shortlog -sn --since "2022-01-31"):

   256  Dion Moult
    37  Thomas Krijnen
    10  Christian Martínez de la Rosa
     9  ArturTomczak
     7  Dushyant Basson
     6  Massimo Fabbro
     5  Adrien SCHVALBERG
     4  Gorgious56
     3  Bruno Postle
     3  Henri J. Norden
     2  Boris Brangeon
     2  Cyril Waechter
     2  dependabot[bot]
     2  renjianqiang
     1  Bruno Perdigão
     1  Emad Aghajani
     1  Jesusbill
     1  Ryan Schultz
     1  ssg


Are we going to get video tutorials showing off the new features?

  • Basic drawing generation
  • Support for distribution ports
  • Support for rendering styles and textures
  • New material and style manager
  • Improved document manager

Yes a video would be great. I have been playing with it trial and error.

1 Like