@Jiipy hey there! Yeah that isn’t normal. Feel free to report a bug and attach or send your file (dion@thinkmoult.com if private)
Cool, the issue is that the Tekla model defines polycurves which have some wacky almost coincident points. Potentially a problem with the Tekla export, or the user who drew the shape in Tekla who drew multiple points in the sameish spot. One example of an element which triggers this is the IfcPlate with ID 0pxU7f1K199vpToLd0Fdvc name TOLE and tag S235JR.
I’ll see if it is possible to make it more forgiving to these types of “invalid” geometry but meanwhile if you want to fix your file manually you can change this line:
#18779= IFCINDEXEDPOLYCURVE(#18778,(IFCLINEINDEX((1,2,3,4,5,6,8,1))),$);
and this line:
#18793= IFCINDEXEDPOLYCURVE(#18792,(IFCLINEINDEX((1,2,3,4,5,6,8,1))),$);
Notice how the numbers go 1,2,3,4,5,6,8,1 because I have removed the number “7”.
Just open up your IFC file in any text editor, find those two lines, remove the 7, and it should work. Make a backup in case things go wrong
It is magic. Thank you very much. I will continue my learning. This is my first professional project with blenderbim. I complete the building with blender so that the client can use it for VR training.
Upon closer inspection there are more problems with this Tekla file. For example these lines:
#369= IFCQUANTITYWEIGHT('GrossWeight',$,$,IFCMASSMEASURE(0.539),$);
#370= IFCQUANTITYWEIGHT('NetWeight',$,$,IFCMASSMEASURE(0.532),$);
This is invalid. We should not see “IFCMASSMEASURE” there. Can you report a bug to Tekla and perhaps show them this post? I’m not familiar with Tekla’s IFC export features but perhaps they have different versions and maybe this is fixed in a later version of Tekla?
Last I remember playing with Tekla, their IFC4 export was experimental but many people used it anyway due to an issue with IFC2X3 where Tekla didn’t support grids. Potentially IFC2X3 might be more valid, though I’d had to recommend anyone to downgrade.
Ok I forward the message to Tekla. Thanks again.
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: https://blenderbim.org/
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: BlenderBIM Add-on 0.0.220504 documentation
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: IfcOpenShell 0.7.0 documentation
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: API Reference - IfcOpenShell 0.7.0 documentation
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
Cost aside it’s quite powerful and comparable to the big names out there like 3DS or Maya. However, what I found difficult was the different way the UI is approached in blender. If you started off learning blender and want to start using other software, the learning curve can be quite steep because you have to relearn and get used to a whole other interface.
Of course, the premium software will have more tools at your disposal; for example, Hypershade is far more advanced than the material tab on blender.
I also found tablet support to be better on other software. I have a 24" XPPen Artist 24 Pro display drawing tablet for sculpting, modeling, texture painting, and compositing in blender program. it’s really comfortable for the tasks.
What really sets blender apart though is its open source platform, intuitive scripting language (python), streamlined interface,and zero-cost nature. Which is why I actually prefer blender over others.
BlenderBIM Add-on v0.0.221105 has been released with 775 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: https://blenderbim.org/
It has been 6 months since the last release, so fasten your seatbelts.
Support for Conda, PyPI, Docker, Apple M1, and Chocolatey
IfcOpenShell is now available in significantly more distribution channels. By far the most popular requests were the ability to install on Conda, PyPI, and support Apple M1 devices. Installing IfcOpenShell for Python can now be as simple as pip install ifcopenshell
. For Windows users, daily builds are available on the Chocolatey package manager. Apple M1 support was generously provided by donations from our userbase, and we currently have funding to provide just over a year of regular Apple M1 builds. If you want to support us please help donate here.
Load large federated models
You can now set up models to load 1GB of federated IFC data in as little as 10 seconds, and walk around your models in real time. This makes the BlenderBIM Add-on the fastest IFC authoring platform available in the industry.
This is now possible thanks to a series of upgrades in the partial IFC loading process: you can now merge objects from large models to keep object counts low. A new coordination mode disables loading types. Openings are now not loaded for speed. You can now set limits and offsets when loading large object counts. Model loading can also be done headlessly so you can automate it using a server.
New wall, slab, profile, and stair editing tools
Modeling tools received a significant upgrade. Parametric IFC walls now support intelligent connections at start, end, and along the wall axis path. This means that moving walls that are attached to other walls will allow walls to auto extend and trim to the new locations. It’s now also easy to edit the wall length, height, and slope angle using parameters. Walls can also extend up to simple flat roofs. Walls now support all layer usage parameters, including axis offset and direction.
The profile manager now lets you create end edit arbitrary custom profiles. These profiles can be reused across multiple elements, like columns, beams, and structural members. Profiled elements now support 3D butt and mitre joints, especially useful for steel detailing.
Slab profiles can now be edit parametrically with a new profile editor. This shows a 2D profile in space which supports snapping to other elements in the 3D scene. The 2D profile also supports true parametric arcs, inner profiles, and true parametric circles where you can set the radius. There is also a prototype integration with CAD Sketcher to allow for constraint based profile editing.
A new opening system lets you hide and show openings, or create custom profiled openings for door and windows. Doors, windows, and walls can be flipped independently, and host and child elements can either be moved independently or together using the new decomposition selection tool.
A new array feature lets you create N-dimensional arrayed copies of parent objects. This is the start for creating commonly repeated objects such as beams, structural bays, or column grids.
A new monolithic stair tool is available to replace the previous “dumb stair” tool. This generates a standard concrete stair and is the start of a series of new parametric object generators.
Altogether the new parametric modeling tools are also significantly more stable, handling many permutations of smart connections, changing types, profile parameters, and layer thicknesses.
Thumbnail support and type manager
The BIM Authoring Tool comes with a much improved UI: parameters can now be easily access either through buttons, sliders, or via hotkeys for fast editing. A thumbnail displays the active asset, and supports showing profile and wall layer cross sections to quickly identify different layer-based and profile-based types.
You can also launch a new type manager which will show all your IFC library assets. You can easily add new types based on templates, duplicate existing types, or delete types.
European and Australian standard steel profiles
Most proprietary software come with an asset library. There has been a renewed interest in the BOLTS project, a technical database of structural standards that is shared between OpenSCAD, FreeCAD, and now has new support for IFC-based software. To begin with, there is WIP support for hundreds of standard European and Australian standard steel profiles, and data is being collected for a number of architectural standard or typical nominal dimensions.
We believe this will be the largest and most comprehensive open source technical database available in the industry, representing a huge leap forward in standardisation and automation for costing, life cycle analysis, structural analysis, feasibility studies, AI datasets, and more.
Faster faster faster
Almost every release sees speed optimisations and this release is no different. Users on Blender 3.3 will see model loading to be 50% faster, with the improvements being greater for larger models.
There is also now a native mesh processing option, if models include heavy mesh data with large polycounts, this allows those meshes to be loaded very quickly.
IfcDiff is also now twice as fast in comparing models. More configuration options in IfcDiff also let you choose whether or not geometry or simple attributes are compared. Results are also more accurate.
For those watching the progress in the console during model loading, progress reporting is now more accurate and detailed so you can tell what’s happening.
Tooltips and online documentation
Native IFC authoring requires knowledge of the classifications, data types and relationships that IFC offers. A perhaps hidden new feature but with great significance is the ability to hover over almost any IFC related name and see a tooltip of the ISO-standardised definition. You can also right click to access the IFC documentation website. Documentation is provided for both IFC2X3 and IFC4. This makes the BlenderBIM Add-on the perfect tool for academia and those new to learning IFC.
Documentation is provided for IFC classes, predefined types, all attributes, property sets, quantity sets, properties, quantities, and user-defined custom property templates too.
New website design
The BlenderBIM Add-on website has now been redesigned to better reflect the full scope of capabilities, as well as have a new branding that connects with the upstream IfcOpenShell umbrella website (which will soon also have a redesign released).
The documentation also has a number of new guides written, including guides for dealing with large models, and handling georeferencing.
IDS support
Continuing on from the early prototypes of IDS support, there is now a new IfcTester library, CLI application and web app that allows you to view, edit, and audit models using the brand new IDS standard. This standard is fully validated against the IDS specification. Reports can be generated as CLI output, JSON, or HTML. You can also run audits using the BlenderBIM Add-on.
The IfcTester application is being increasingly battle tested in large commercial projects to make sure that it is appropriate for use.
New library of quantity take-off functions
There are now a series of 20 new quantity take of utility functions for use for developers in writing custom quantity take off rules. These are slowly being mapped to the buildingSMART standardised quantity take-off definitions to replace the older quantity system which was very basic.
A new release management strategy
As the number of contributors to IfcOpenShell and the BlenderBIM Add-on grows, we’ve now started a Kanban project based approach to collaborating between developers and communicating to users what’s on the roadmap. A “development theme” will be chosen to help decide what to focus on for each release, and instead of releasing “whenever Moult feels like it” we now have a 2-month release cycle.
Users and developers can now plan for the “next release” and the “release after next”. Tasks that are not complete will shift to the next release. This was tested for 2 weeks leading up to this release, where 4 developers completed 24 out of 37 tasks. Thanks to your donations, we have now enough funding to hire part time development, which has lead to a number of features in this latest release. With your continued funding, we can accelerate development even further!
So much more
There is now support for loading an updated IFC model incrementally. A critical bug was fixed for upgrading schemas. IFC2X3 document reference support added. Diffuse colours specified as ratios are now supported. The IFC validator has had significant improvements with in progress support for “where rules”, and a number of validation fixes were made in BlenderBIM Add-on generated content. You can now add booleans to geometry, including support for half space solid clipping. Fixed fatal crashes in CAD tool for filleting and extending, and a new 2D CAD offset tool has been implemented which gives more reliable results compared to the 3D offset tool. A new pach is available to fix bugs in Autodesk Revit when converting TINS from 12D to Revit. Rebar is now exported from native Blender beveled curves. Classifications can be added to cost items and materials. Resource level classifications are now supported. Spatial zones are now supported. You can now reference spatial structures, so things like multi-story columns or doors, stairs, dampers, and so on can reference a “to” and “from” space. The OBJ2IFC script now has a Meshlab implementation and supports different schema versions. OffsetObjectPlacement patching now supports 3D rotations, especially useful when fixing IFCs from Solidworks. MergeDuplicatesTypes patch now can work on any attribute. Support for nested IfcGroups. New IfcSelector module to graphically create selection sets. Cyclic task dependencies are now handled for CPM analysis. Basic IFC4X3 support is now enabled, although geometry is not supported, there is support for schema entities. Long dropdowns and enumerations can be filtered for improved UX. Pset templates now support enumeration properties where the user can select multiple possible values.
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-05-17"
):
407 Dion Moult
114 Thomas Krijnen
57 Vukas Pajic
38 Gorgious56
31 Carlos Villagrasa
24 Gorgious
19 Sigma Dimensions
13 Andrej730
10 Kristoffer Andersen
10 Ryan Schultz
10 Massimo Fabbro
6 krande
5 Martin15135215
5 fbpyr
4 Bruno Postle
3 luz paz
2 Boris Brangeon
2 Dirk Olbrich
2 Esteban Dugueperoux
2 dependabot[bot]
1 AToradaIBIM
1 Amoki
1 ArturTomczak
1 Bruno Perdigão
1 Christian Kimmig
1 Christian Martínez de la Rosa
1 Dmitry Sedov
1 GisSpace
1 befr
1 bimworld
1 garylzimmer
BlenderBIM Add-on v0.0.230107 has been released with 201 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: https://blenderbim.org/
Release base rabbit image AI-generated by Farfadet46.
Warning, this release is primarily aimed at developers, with not many user-facing changes but lots of software upgrades, experimental code, and documentation. As usual, the BlenderBIM Add-on is alpha software, but this release may be significantly more alpha than usual.
Experimental IfcSverchok release
Thanks to the incredible work by Martina Jakubowska in the Google Summer of Code programme 2022, we now have a prototype implementation of IfcSverchok. Buildings modeled using visual Sverchok nodes can now be converted parametrically into IFC models. Like the rest of the BlenderBIM Add-on, IfcSverchok is a native IFC visual node programming environment. 15 basic nodes have been implemented so far, ranging from creating entities, adding properties, converting Sverchok geometry, converting Blender geometry, and filtering by type.
In addition, there is now experimental Sverchok integration for parametric IFC element. Any IFC element can now be defined via a Sverchok graph and modified parametrically across IFC round trips.
New BCF library
The BCF library has been rewritten almost completely from scratch by Andrea Ghensi (sanzoghenzo). This new library has significantly improved performance and can be used to create much larger BCF topic collections. Unfortunately, these have not yet been implemented in end-user utilities like the BlenderBIM Add-on or IfcClash so users wishing to use those functions should use an older version as breakage will occur.
4D improvements
Major bugs with Asta PowerProject imports have been resolved. A huge amount of work by Yassine Oualid means you can also now easily select nested task outputs, display number of resources used by a task, display scheduled resource usage within the resource tree, and see total task assignments for elements. You can also now customise 4D animation colours, and add a visual task bar with customised colours.
Stair, steel and Australian furniture library
The existing stair generator can now be used to modify IFC stair flights, and also now supports individual stair treads (such as for steel or wood stairs) instead of monolithic concrete stairs. The results are parametric and can be regenerated after an IFC round-trip.
Cold rolled Australian Cees and Zeds have now been added to the steel library. In addition, 150 new furniture have been added based on Australian and metric Neufert dimensions, such as beds, tables, chairs, sofas, sanitary fixtures, and more.
For developers, a new ShapeBuilder class makes it easy to programmatically generate IFC representations made out of 2D profiles and 3D extrusions.
Extensive API documentation
Almost an entire book’s worth of documentation has been written for the hundreds of functions for the IfcOpenShell API. Documentation is incredibly detailed, featuring well commented code examples dealing with real life design and construction situations. For any developer new to Python, IfcOpenShell, or IFC, this is a critical resource to help you pick up the skills you need. Check out the IfcOpenShell API docs in particular.
IfcOpenShell for the web (WASM)
Thanks to work by core developer Thomas Krijnen, IfcOpenShell can now be combined with Pyodide to be used on the web. When you build IFC web applications with IfcOpenShell, you benefit from the decades of careful battle testing and extensive native IFC authoring API support provided by IfcOpenShell-Python. Proof of concepts have been released for native authoring of point-and-click IFC walls right in your browser. See the code.
So much more
Continuing on the quantity take off function lists from the last release, Massimo Fabbro has been hard at work mapping many quantity take off definitions to these functions. IfcOpenShell is now also available for Python 3.11. IFC validation now also supports express rule checking, which means that it is now even easier to guarantee high quality valid IFC models. Derived attributes are now supported in IfcOpenShell. Thanks to Cyril Waechter, IfcPatch now works with IFCZIP and IFCXML, various fixes for energy boundaries, and a stable AUR package is now available for Arch Linux.
The consolidated branding and fundraising drive between the IfcOpenShell and BlenderBIM Add-on websites have helped raise enough funds to allow for continuous funding of part time development for the entirety of 2023.
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-11-06"
):
66 Dion Moult
33 Martyna Jakubowska
23 Thomas Krijnen
19 CyrilWaechter
18 Sigma Dimensions
16 Massimo Fabbro
14 Andrej730
5 Ryan Schultz
2 Kristoffer Andersen
1 Andrea Ghensi
1 Erik Abrahamsson
1 Otso Alho
1 Vukas Pajic
1 fbpyr
BlenderBIM Add-on v0.0.230304 has been released with 413 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: https://blenderbim.org/
Improved drawing and modeling
Aligning parametric walls now takes into account axis offsets, and it’s easier to extend beams to walls, or walls to roofs. Insulation batting hatches are now generated and you can customise the width. Drawing text now has more customisation over their CSS styles.
The BIM tool is now generic to any parametric element, which means parametric vertical layers are not limited to walls, or parametric profiles are not limited to structural elements. This decoupling of geometry and IFC class is critical for flexible modeling.
Objects with same materials have their drawing hatches merged, sites now have a default thick line cut, and fill regions are now auto-dissolved, a significant step forward in readability and compliance of professional drafting standards. Drawings can now be duplicated. Drawings are now loaded on demand instead of all at once at project load. 2D annotations can now be superimposed on top of 3D body geometry in drawings, such as for window opening direction symbols.
Parametric doors and windows
You can now generate parametric doors and windows! Rather than relying on libraries created from others, this lets you add simple and common door and window types to your model.
Doors support for double and single doors and parameters for door panel and lining dimensions. Windows also support single panels, horizontal and vertical panels, and parameters for panel and lining dimensions. Openings are now shared across all windows. This means you can easily customize window openings in bulk for all window occurrences.
Generate roofs and rooms
You can now generate hipped roofs automatically from a roof footprint thanks to the integration the battle-tested bpypolyskel library.
In one click, also easily generate spaces from room-bounding objects like walls. You can also now add fixed space types and manage them in the type manager, such as parking spaces.
Bug fixes galore
There has been accelerating rate of bugreports due to the increased popularity of IfcOpenShell and the BlenderBIM Add-on. It is literally a mountain of bugs to keep up with. We’ve placed a huge emphasis on fixing and classifying bugs resulting in a net decrease in open bugs for the second time. Despite 160 or so new bugreports, the number of open bugs is down by 57 compared to the last release.
The impacts of these bugfixes are too numerous to list, but highlights include more intuitive classification assignment, orphaned openings can no longer be created, fixed viewport clipping bugs for drawings on sheets, a critical bug in drawings where certain objects would appear see through, a critical bug where viewport annotations didn’t display on MacOS, and many more.
BCF interfaces updated
The BCF interface has been completely updated to use the BCF library from the previous release. Similarly, the BCF export from IfcClash is now working with the latest BCF library.
IFC4X3 progress
Built-in documentation, property set templates, and entity type mappings have now been introduced for IFC4X3. These are critical fundamentals required for those who want to start authoring and editing IFC4X3 models.
4D/5D improvements
Cost schedules can now be exported to CSV, ODS, and XLSX. Tasks in work schedules can now be duplicated.
So much more
Viewing collision results from IfcClash now supports federated models. New shape utility library for programmatic quantity take off for developers. IFC validation of express rules for advanced users are now bundled in the interface. IfcTester can now output compliance reports in ODS format. IfcCSV now supports ODS and XLSX. IfcFM has been cleaned up a bit to help people adapt it to their needs easier. The profile manager now has cross section thumbnails. Material set and material set item properties can now be assigned and edited. Improved styling in documentation and new documentation for all IfcPatch recipes and IfcClash.
A huge thanks to the growing volume of new contributors who are joining the team and changing the industry. You can too!
Also a huge thanks to the growing volume of new donors who have helped is raise funds here: IfcOpenShell - Open Collective - thanks to you, we were able to hire a part time developer and delivering many of the features you have just read about would not have been possible to do in this timeframe without your help. Thank you!
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 "2023-01-07"
):
194 Dion Moult
80 Andrej730
53 Sigma Dimensions
48 Thomas Krijnen
10 Massimo Fabbro
7 Vukas Pajic
5 CyrilWaechter
5 Kristoffer Andersen
4 Ryan Schultz
3 Andrea Ghensi
1 Einar Raknes
1 Jesusbill
1 Li1506
1 Martyna Jakubowska
Donors since the last release:
PlaniBIM SA
Cyril Waechter BIM Insight
Daniel
Dion Moult
Aether Engineering s.a.s. (Aether Engineering)
Clemens Rieth
Matthew Fuller
Losepacific
Julio
Frode Lund Tharaldsen
Sven Amiet
Muhammad Ichsan
James Krueger
StefStap
Jonny Knopp
Johnson Bankole
Leon ten Brinke
bitenergie
Marin Ljuban
Madars Siksna
Carlis
Kristoffer Hunnestad Andersen
bimage
louistrue
Alexander Kleemann
Udo
Stephen Cremin
Carlos Dias
Incognito
Lukas Alberts
cvillagrasa
carlopav
casiovadal
bclmnt
Ari Pikkarainen
Benny
Fabian Emanuel Kitzberger
Dirk Olbrich
Miguel
Yijie Wu
Katleen
Leandro
BlenderBIM Add-on v0.0.230506 has been released with 534 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: https://blenderbim.org/
OK. Deep breath. Get ready. Go!
Splash image generated by @cvillagrasa using Midjourney CC BY-NC 4.0.
Drawings and sheets are now portable
The sheet, drawing, and schedule system has been made fully portable, storing relative paths in IfcDocumentReferences, and capturing all of the components needed to build sheets in IfcDocumentReferences. This means that it is finally practical to switch between multiple projects on the same computer, or package a project that someone else can open on their computer.
Note: drawing and IFC model from the Clothing Boutique project by Opening Design CC-BY-SA 4.0 produced with the BlenderBIM Add-on. A huge thank you to the Clothing Boutique project who helped battle test and report numerous bugs to help stabilise this release cycle.
All related drawing and sheet assets like titleblocks, view title templates, CSS stylesheets, symbols, markers, and patterns are all able to be stored alongside your IFC project as referenced URIs. Things like the titleblock dropdown now also shows your project specific titleblocks.
Renaming or renumbering drawings, sheets, and schedules is now much more practical and flexible.
Huge drawing system upgrades
Arbitrary metadata may now again be stored for any object in a drawing as a CSS class. Imperial dimension formatting improved. Spatial elements are now drawn on top so you can tag and colour code spaces without obscuring elements in the space. You can now bulk print or open drawings and change sheet title blocks after a sheet has been generated.
Two optional engines are now available for semantic projection fills. If you have elements in the background such as carpeted floor coverings that need hatch patterns or fills, you can now activate either a Shapely-based engine or an SVGFill-based engine which will properly semantically tag closed polygons in the background of your drawing.
Schedules from ODS now supports merged columns, row heights, cell text alignments, and multiline text wrapping. This means formatting of schedules in ODS can be preserved when rendering on sheets.
Section annotations in drawings now support truncated section lines, and disabled / custom section symbols at either end of the section.
The cut merging tool introduced in the previous release also got a bunch of much needed stability upgrades and now works on more complex projects at a fraction of the time.
Viewport drawing upgrades
There is a new cut decorator that clearly shows the cut line in drawings. Drawings also now activate target view specific representations (e.g. door swings in plan view). Parametric layered walls now have their layer slices shown in the viewport. Put together this means a significantly more user friendly drawing view that closely resembles the final generated vector drawing.
Viewports now also take into account include and exclude element filters for the drawings, as well as only showing element in view. This means that drawings now generate faster (easily twice as fast or more for larger projects) and your view isn’t cluttered with excluded elements. This makes is practical to work on phased projects (e.g. demolished versus new construction statuses).
You can also now customise decorator colours. Using a light theme? Go for it.
Critical bugfixes
Tons of bugfixes were made, but certain bugs were so critical or have a big impact on usability that they deserve a special mention. During this release cycle, we managed to hunt down and fix a ton of these critical bugs.
Critical bug fixes include fixing tiny polygon hatch merging on drawing plans. Fix crash when editing with decorators. Fix data corruption on undo where IFC primitive editing was stored. Fix disappearing openings when splitting walls. Fix issue where copying objects could unnecessarily copy themselves recursively. Fix installation error of IfcSverchok. Fix bug where 2D elements were sometimes not loaded when loading IFCs. Fix UX issue that commonly led to users creating objects with unintended contexts. Fix issue where certain materials weren’t appended when appending elements from a project library, or where types were recursively pulled in causing bloated type libraries. Fix crash in IFC array tool. Fix issue where editing layer thickness accidentally didn’t consider the total thickness of all layers. Quantity take-off calculation now uses project units.
A number of critical save-time synchronisation issues were resolved. These would cause unnecessarily long file saves or significantly unnecessary data changes. For example, type objects used to incorrectly track placement and were all synced at save time.
Fix “repeat last operator” for duplicating elements. Fix unlinking bug which would break other material users in the file.
IFC Git version control integration
Incredible work by Bruno Postle and Bruno Perdigao have led to an integration with the IFC Git project. This allows you to track changes on an IFC project, merge changes from multiple users, and jump to points in the project change history.
You can now manage your BIM data in a local Git repository without leaving the BlenderBIM Add-on. Instead of just saving a file, you can create revisions with descriptions. These revisions are browsable and retrievable, changes between two revisions can be visualised in 3D. Any revision can be forked, creating a branch for developing options or playing with designs. There is an experimental tool to merge branches using an IFC specific three-way merge for conflict resolution.
IFC validation improvements
Lots of IFC validation issues resolved, including incorrectly using 3D coordinates for 2D profiles, or a number of orphaned relationships. The IFC validation utility now also has a number of fixes to false positives. The pset and qto authoring UI has been modified to prevent the ability to create invalid sets without properties.
Invalid IFCs may lead to unpredictable behaviour in native IFC authoring tools, or worse, complete incompatibility in other IFC software.
More parametric tools
New parametric railing tool. Two types of railings are now supported, including a frameless glass ballustrade and a wall mounted handrail.
Generated spaces now use their object placement as a space recalculation point when regenerating spaces. Parametric sliding doors are now supported.
New UI for generating roofs. You can also set roof angles so gable roofs as well as hipped roofs are now supported.
Parametric dimension fields in the BIM Tool (such as extrusion depth, length, X angle) are now aware of project units - a simple but significant usability improvement especially for imperial users.
New join tool means you can intelligently join objects. Meshes are merged into a single mesh object, whereas solids are joined into multiple solid representation items.
Faux-mirroring is now implemented, so you can mirror columns, furniture, walls, etc based on any arbitrary axis. Faux mirroring is similar to normal mirroring, except that there is no lateral inversion. This means that mirroring preserves the geometry exactly.
Improved control over bulk assigning and unassigning aggregates in prepration for elemented wall modeling at later design stages. Voids and fills may also be added to aggregates, so that you can have a single opening penetrating multiple coverings, members, and other objects.
Upgrades to text annotations
Text annotations got a big upgrade with support for multiple text literals. This means that you can view multiline text in the viewport, as well as have annotation symbols with multiple text components (e.g. a space annotation with a number, name, and area) in drawings. Text now respects multiple text sizes and box alignment in the viewport. Text may also have a background fill for readability in drawings.
Improved selector syntax now allows you to escape complex names and regex. There is also now support for chained relationship selections and list index selection, so you can select the material of a 2nd layer of a layer set, for instance. This means you can easily write queries that filter project phases, or common properties like fire ratings across many object types.
Text annotations may also use evaluated Python commands for advanced users to annotate substrings, special numerical formatting or rounding, or more. There are also more built-in symbols so that you don’t need to create your own for simple tags.
New smart bulk annotation tool
There’s a new annotation tool with a focus on making annotation as easy as possible. Annotations may now be typed, so that styles (such as classes) from the type, or representations (such as preset text tags) may be set once at the type level, then bulk applied to all instances.
When you add stair arrow annotations, preselected stairs will have arrows automatically added along the stair flight run. You may also bulk select instances and tag them using your own custom annotation type.
New fall annotation tool, allowing you to annotate falls and slope angles / grades.
BGL to GPU migration
Blender is deprecating its BGL library that the BlenderBIM Add-on uses for drawing viewport decorations. Decorations include profile highlights, and live drawing annotations like text notes, dimensions, and so on. A considerable amount of work was done to migrate to the new GPU library, which means that users on the latest Blender versions can still enjoy all of the decoration features.
Unfortunately, work is not yet finished and some MacOS users may be missing decorations. This will be resolved in time for the next release.
New edit mode and non-delayed element deletion
There is a completely new edit mode toggling system. This means that if you have a mesh-based representation (such as faceted breps or tessellation), your edits are tracked whilst you’re in editing mode, and you are given the option to save or discard edits as you toggle edit mode. In the past, mesh edit modes were delayed and synchronised at file save, which led to synchronisation bugs. This new method helps fix a number of previously obscure bugs.
For non-mesh based representations, mesh editing is disabled, unless you have explicitly cast the geometry type to a mesh-compatible representation. This prevents people editing objects in an incompatible manner. This also allows us to enable representation-specific editing tools, such as profile editing for space boundary surfaces.
Similarly, element deletion now happens on demand, instead of delayed until synchronisation events. This also prevents a lot of obscure potential bugs. Element deletion is now also a lot faster, even thousands of times faster for dense mesh-like representations.
More ways to author space boundaries
Space boundaries are ways of representing boundaries between spaces for energy analysis. Previously, the features available to load, create, and edit boundaries were very clunky. Now, there is an easy way to create a new untyped space, bulk generate spaces from walls, and toggle boundaries on or off for selected spaces.
Space boundaries can now be easily selected, and automatically generated. Generation intelligently takes into account walls, openings, and fills like doors and windows, automatically creating inner boundaries for these objects correctly projected onto the plane of the boundary.
A new boundary profile editing tool makes it easier to edit inner and outer boundaries as profiles similar to how you’d edit slab profiles, and now supports filleted arcs and circles as well.
Improved resource management tools
Resources are used in the domain of scheduling and costing. There are now features to review and edit Resource productivity data on the fly, and add number of Resources used directly from resource tree. These two features now make it a lot faster to: parametrically calculate a Resource’s Required Work based on its productivity, and parametrically schedule the duration of a task based on the number of resources.
Cost management
You can now select unassigned cost schedule products - find out what’s left to schedule!
Conveniently show total elements/tasks/resources assigned to a cost item. Enable displaying nested elements for Cost Items - elements, resources, tasks. The UI for adding cost item values has been improved.
You can now clear all assignments assigned to a cost item. New ability to change cost item parent in a tree, and re-order cost items in a tree.
Gantt chart and baselines for construction scheduling
Create & view work schedule baselines. You can now compare Baselines vs Planned with Gantt Charts. You can now conveniently print Gantt Charts in different Sheet Formats. Added support for multiple languages for Gantt Chart Headers. Enable displaying task tooltip when hovering over tasks in the Gantt Chart. Add resource columns in Gantt Chart. Improvements on the Gantt Chart page style layout.
Improved Work Schedule UX. Implement human readable durations in task tree. Edit durations with human readable durations.
Select individual Task Inputs & Task Outputs directly from the task quantity assignments. Display nested task resources/task inputs of the active task. Buttons to select a Work Schedule’s assigned / unassigned products.
New viewport 4D/5D tools
Show list of tasks related to the current object selection. Highlight tasks related to the current object selection
Side-Panel Menu to retrieve cost items assigned to an object. Highlight cost items related to the current object selection
So much more
Utilities to get connected MEP elements in a distribution system is now supported for IFC4. Upgrades to the FixRevitTINs patch for fixing Revit-specific issues for loading TINs from Civil3D.
Titleblocks now support dynamic angles for north arrows. IFC Array now supports local or global coordinates, and getting coordinate offsets from the 3D cursor. New thick line section rendering for temporary sections. Site reference long/lats can now be edited. Loading IfcProxy now supported. Materials can now be duplicated. Quantity take off improvements include the ability to calculate weights based on material densities. Easily see related cost items and quantities of selected items.
A huge thanks to the growing volume of new contributors who are joining the team and changing the industry. You can too!
Also a huge thanks to the growing volume of new donors who have helped is raise funds here: IfcOpenShell - Open Collective - thanks to you, we were able to sponsor development. Many of the features you have just read about would not have been possible to do in this timeframe without your help. Thank you!
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 "2023-03-04"
):
184 Dion Moult
174 Andrej730
52 Sigma Dimensions
35 Thomas Krijnen
16 Massimo Fabbro
9 Bruno Perdigão
8 Bruno Postle
7 Carlos Villagrasa
5 Andres
5 Chun
5 Gorgious56
5 Kristoffer Andersen
5 Trashman247
4 Ryan Schultz
4 krande
3 Andrej
3 Vukas Pajic
2 CyrilWaechter
1 ArturTomczak
1 Nathan Hild
1 Shohei Kunimatsu
1 arun
1 ay-ex
1 dependabot[bot]
1 htlcnn
1 kzfile
Donors since the last release:
Mats Norén
PlaniBIM SA
Cyril Waechter BIM Insight
OpeningDesign
Daniel
Dion Moult
Sven Amiet
Guest
Aether Engineering s.a.s. (Aether Engineering)
carlopav
Matthew Fuller
Hans Hendriks
Losepacific
Bedrossian Ádám
Dumitru Minciu
Julio
Frode Lund Tharaldsen
Marin Ljuban
Felipe Hita Suárez
StefStap
Jonny Knopp
Johnson Bankole
Leon ten Brinke
bitenergie
Smiljan Tukic
rubicon
Sigve Pettersen
Marcin Boguslawski
Miguel
Madars Siksna
elo_elle
Kristoffer Hunnestad Andersen
Rafel Bayarre
Benny
Stephen Cremin
Carlos Dias
bimage
louistrue
Alexander Kleemann
Udo
Lukas Alberts
Incognito
cvillagrasa
casiovadal
bclmnt
Ari Pikkarainen
Fabian Emanuel Kitzberger
Dirk Olbrich
Roman
Gluboy
Cordero
Carlo
Tommi P.
Mehmet Cenk
Michael
BlenderBIM Add-on v0.0.230701 has been released with 418 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: https://blenderbim.org/
Unfortunately, many of the features planned for this release didn’t make it, and I personally had to take a step back from development for other life priorities. That said, I’m blown away by the progress made and this helps show that the project is maturing and does not rely on a single developer. This is possible thanks to the entire dedicated community and their amazing effort in coding, testing, reporting, and financial support.
OK. Deep breath. Get ready. Go!
Drawing improvements
A critical bug was fixed to allow drawings with different styles to be placed on the same sheet.
GPU migration is now finished, so MacOS users can now see drawing decorations again. Dimensions can have prefixes and suffixes.
Decorations are now on by default, smoother arc rendering, and minor colour polish. Fixed critical bugs related to level annotation calculation.
Huge optimisation for text annotations on larger projects with hundreds of text labels.
Custom scale support was apparently broken and has now been fixed.
There is a new revision cloud annotation. Note that these are not yet linked to revisions nor is there a revision management system yet.
Improved scheduling and arbitrary sheet references
Schedules now support print ranges, and more formatting such as bold, italic, font sizes, text colours, cell colours, and cell alignment.
You can now attach arbitrary referenced SVGs and include them on sheets. These are useful for legends, note blocks, stamps, and so on.
Raster underlay styles, External material styles, and glTF-compatible rendering shaders and textures
Drawing raster shading styles are now saved in IFC, so you can roundtrip fancy rendering styles. A number of bugs have been addressed related to underlays, so it should now be a lot more stable to use.
There is also now support for external shading styles. This means that IFC objects can have complex shader trees and textures in Blender, such as Cycles and Eevee materials. Switching to rendered mode will toggle external shading styles if they are compatible with Blender. You can also toggle whether to use IFC-only shading / rendering styles, or external styles.
Shader code has now been fixed to be language-independent, fixing a number of critical model loading bugs for non-English users.
There is also now a UI to generate IFC and glTF compatible shader graphs. This means that you can easily create different rendering styles for diffuse, glass, or glossy materials. Not just simple shaders, but also easily add diffuse, normal, metallic texture maps, and so on. All of these styling options cover the majority of simple PBR workflows for architectural visualisation and is fully supported in IFC (and glTF too, for that matter). Create beautiful models!
Incredible IFC Git development for collaborative native IFC authoring
A huge amount of work was done by Bruno Postle on IFC Git integration. IFC Git can now list, create and delete tags. You can also clone, fetch, and push repos, report merge conflicts, and auto-update information when selecting a revision. You can now view a visual diff and select new or changed objects. There is now support for multi-line commit and tag messages and to include commit summaries of merged branches.
The work on IFC Git represents a historic milestone in the ability to use native IFC collaboratively. Watch this incredible demo by Bruno Postle as 4 people around the world quickly start collaborating in a decentralised manner with purely free software on a BIM model - something no proprietary software is able to offer.
Parametric modeling upgrades
Parametric roofs now support asymmetrical gables, and ability to specify roof thicknesses.
Parametric railings, doors, windows, and so on now display with project length units for convenience. Same for length values in psets and qtos. This would make life much nicer for imperial users. A number of fixes made for parametric windows with multiple panels which had strange dimensions and non manifold geometry.
There is now IFC2X3 support for parametric doors, windows, and stairs.
IfcCSV upgrades
IfcCSV saves the filter query in addition to attributes. Exporting classes or reassigning classes also were polished with various bugs fixed.
IfcCSV also has had its function signatures made more developer-friendly. This includes new commonly requested documentation on how to use IfcCSV, as well as support for Pandas Dataframes.
Selection queries, used in filtering drawings and IfcCSV now support regex filters. This makes filtering for phases and other common psets significantly more convenient.
Experimental support for alternative IFC formats such as SQL and streaming
There is also now experimental support for IFC storage in SQLite and MySQL. There is an Ifc2Sql IfcPatch recipe to convert from IFC-SPF to SQL, with a number of toggles for different storage options such as entity reference list expansion, geometry blobs, full / partial or strict / lax schema, or dedicated property tables. This opens up IFC acccess to SQL-based developers or systems, as well as the ability to load significantly larger models with less memory at the expense of query speed and disk space. Instead of writing SQL queries, you may also use the ifcopenshell file and entity wrappers as an ORM. You can read the full details about this technology, its tradeoffs, and its significance on OSArch.
This has also helped identify a number of optimisation issues in the interface, which have been resolved, particularly around fetching properties and quantities.
(Note: the GIF shows an SQLite model where all data is fetched on the fly via SQL queries)
There is also now a highly experimental file stream option in ifcopenshell.open. This allows users to open (almost) arbitrarily huge IFC models (currently with geometry disabled) to do data processing on systems with limited memory. Currently, this is only read-only. You can also exclude classes from the stream for even more memory savings.
Even more bugfixes and UX polish
A number of bugs fixed related to 4D and 5D scheduling. The UI for cost schedules has continued to be polished. In particular, support for reviewing and assigning currencies. And the ability to choose an export location for cost schedules.
A small but significant change lets you edit parametric object profiles with the tab key, making it more seamless to users familiar with how you can toggle edit mode for mesh objects in Blender.
A significant optimisation was built for deleting very dense mesh objects. So objects that would previously freeze or crash Blender would now finish relatively quickly.
Some under the hood changes were made to further decouple Blender collections from the IFC spatial decomposition tree. This is a really fundamental change that removes a lot of legacy code, and should also lead to more stability on medium scale projects and larger and potentially fixed a lot of bugs people weren’t even aware of. A few other potential sync bugs with styles were also fixed.
IfcOpenShell has also continued a lot of development in the background, fixing build issues, geometry bugs, the ability to fetch representation items, and potentially significant optimisations in drawing generation. However, many of these are not yet available to users but will be in the next release.
A number of crashes were fixed specifically for MacOS M1 devices. IfcClash is now bundled for MacOS M1, but it may still have some usability issues for now. A critical segfault preventing IfcClash usage on Linux has been fixed.
Work has also been done to fix issues for the upcoming Blender 3.6 release. Go ahead and upgrade!
Google Summer of Code 2023 Brickschema development project!
We’d also like to welcome Riley Wong! Riley has begun work on his Google Summer of Code 2023 project to upgrade, improve, and build an awesome interface for Brickschema. Brickschema is an open data schema that focuses on describing the topology of building services and systems, typically used in smart building operations. There is an existing very basic implementation which allows simple loading, viewing, and association of Brick TTLs with IFC. Riley’s project will focus on updating Brickschema to the latest version, building undo / redo support, save project support, and a number of UI improvements to make it a practical tool for those building Brick models.
So far, Riley has upgraded Brickschema and is pending a merge for undo / redo and save project support. More will be reported in the next release!
So much more
There is now a file association on Linux, so you can auto-launch Blender when you have .ifc files in your file manager.
IfcTester is now shipped on PyPI.
For those using IfcOpenShell and the BlenderBIM Add-on in academia, there is now a citation file for all offered utilities.
Some critical bugs fixed related to material layers with no thickness that led to unloadable models. Improved type duplication and selection. Length values are now calculated and formatted the same way in the viewport and in rendered drawings.
Openings can be reassigned, and parametric layers can reassign to another layered class or type.
There is a new spatial and structural tool in your workspace, as a sign of how to start accommodating more usecases than the BIM tool can support. The structural tool is currently empty, but the spatial tool now includes relevant functions for creating spaces, regenerating spaces, and managing space boundaries. Space generation also now considers columns. The idea is to support various workflows in different tools, each which have optimised contextual options and hotkeys per workflow.
IFCs can now be linked to the Blend file via a relative path. This helps improve project portability.
There is a new building storey manager specifically to improve the UX around managing building storeys and level elevations.
IFC and CityJSON conversion has been upgraded to now support v1.1 CityObject types.
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 "2023-05-06"
):
139 Andrej730
68 Dion Moult
46 Thomas Krijnen
39 Sigma Dimensions
30 Bruno Postle
18 D4ve-R
13 Totally a booplicate
11 Gorgious
9 Massimo Fabbro
8 Balázs Dukai
8 Gorgious56
8 Martin15135215
5 Ahmad Saleem Z
3 Kristoffer Andersen
3 Ryan Schultz
2 Trashman247
2 Vasile-Corjan
1 Bruno Perdigão
1 Burak Yildiz
1 Chetan
1 Nelson Henrique
1 arun
1 johanrd
Donors since the last release:
Cyril Waechter BIM Insight
PlaniBIM SA
Daniel
Dion Moult
Matthew Fuller
Losepacific
Aether Engineering s.a.s. (Aether Engineering)
Sven Amiet
Johnson Bankole
Leon ten Brinke
StefStap
bitenergie
carlopav
Dumitru Minciu
Frode Lund Tharaldsen
Julio
Andrew Bailey
Ari Pikkarainen
Arun
Bedrossian Ádám
Fabian Emanuel Kitzberger
Guest
Jonny Knopp
Marin Ljuban
Sebastian Duque
bclmnt
casiovadal
Alexander Kleemann
Benny
Carlos Dias
Cordero Architecture
Dirk Olbrich
Incognito
Kristoffer Hunnestad Andersen
Madars Siksna
Marcin Boguslawski
Miguel
Rafel Bayarre
Royner
Sebastian Monroe
Stephen Cremin
Tim McGinley
Udo
bimage
cvillagrasa
louistrue
Edgar Huebert
TROYYY
BlenderBIM Add-on v0.0.230902 has been released with 695 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: https://blenderbim.org/
In contrast to the previous slightly smaller release, this is another mammoth release with upgrades across many aspects of the ecosystem. A huge thank you to all developers, testers, users, and financial contributors: you are making this happen! You are changing the industry!
OK. Deep breath. Get ready. Go!
Note: test steel drawing done by Maarten Vroegindeweij.
Note: screenshots by Opening Design architectural studio, projects including Highland Haven and Livingston restaurant licensed under CC-BY-SA 4.0.
Revamped and more user-friendly interface
The user interface has undergone a significant change to make things easier and more intuitive for new users. A new BIM workspace layout is provided by default which provides a three column layout (outliner, 3D view, and properties) that is optimal for viewing the large hierarchies of BIM models and long properties, and hides lesser used features like the timeline.
The remnants of the old “import / export” nomenclature have been removed and we have a new File > Open, New, Save, and Save As menu to clearly indicate that we work with IFC natively, no longer the .blend format. This also means that common hotkeys have been reimplemented, including Ctrl-N for new file and Ctrl-S for save. They now intelligently give you options for new IFC projects with project presets for metric and imperial units, as well as save either a vanilla Blender model, an IFC project, or both depending on what you’ve got saved previously. Finally, the default cube / light / camera is automatically removed when starting new projects.
There is now a new set of properties tabs within the scene panel, clearly dividing functionality into IFC overview, Object Properties, Geometry and materials, drawings and documents, Systems and services, Structural analysis, Costing and scheduling, Facility management, Quality and coordination, and finally, vanilla Blender tools. Panels which were previously spread / hidden around multiple Blender locations (e.g. object tab, mesh tab, N sidebar, etc) are now consolidated, renamed, and grouped into logical sections that are recognisable to AEC professionals. Users will now find it easier to discover BIM functionality and clearly differentiate between vanilla Blender vs BIM functions. You can also now use Ctrl-Tab to toggle between tabs. The work is not yet complete, with work to do to redesign the material and drawing camera UI, but the fundamentals are there.
New friendly icons have also been added to aid new users to quickly discover authoring tools and for existing users to quickly switch to common tools like a Wall Tool, Slab Tool, Door Tool, etc.
The old annotation panel has been removed in favour of the new workspace annotation tool. The annotation tool now has its own annotation type manager and functions similar to the BIM tool, with a number of bugs like type reassignment fixed. In addition, there are new annotation types for symbols and multipoint symbols (useful for set out points, control points, and more).
To help in bugreporting and for daily build users, the commit and version is shown in the status bar.
Drawing and modeling improvements
There are three big changes in drawings. First, coplanar edges for meshes and tessellations are now dissolved by default. This makes using meshes as a geometry type much more practical in drawing generation.
Secondly, projection linework can now be indepently styled from cut linework and cut / projection fills. This allows you to style a lot of 2D linework where it was’t previously possible.
Thirdly, there is now support for reflected ceiling plans! There is still a lot of testing to be done, but this is one of the major things holding back usage in basic drawing sets.
The HLR prefiltering option teased about in the last release is now enabled. This may not be such a huge blanket speed upgrade, but depending on your drawing it may result in faster drawing generation. There has also been some optimisation applied when you have a lot of 2D elements on the screen and enable shapely surfaces.
There is also now basic support for perspective cameras. In general, the computation of shading and cut polygons is now more robust. Activating drawings no longer affect non-IFC objects if you are using vanilla Blender objects to enhance your models.
Dimensions can now have background fills for readability. Numerical decimal places can now be set to 0. RL and X Y Z dimensions in the BIM Tools are now length unit aware.
Generating spaces / rooms is now significantly more robust due a new computation method and can now support things like virtual space boundary elements.
When generating 2D body or annotation representations, you can now choose to generate the geometry from a detected outline or bounding box. This makes creating 2D plan view diagrams much easier and faster drawing generation.
A subtle but very important change is that meshes now preserve their quads and ngons. Previously, meshes were triangulated upon reloading but this is no longer the case. The shading style is now also stored as part of the drawing style.
As a huge quality of life upgrade, annotations are now created at the 3D cursor. Plan, section level, and radius annotations now support prefixes and suffixes and can be rotated. Fixed bug where section arrows would point the wrong way. Text annotations can now be duplicated, and now appear on the top drawing layer by default.
Sheets are now sorted alphabetically and there is a new hierarchical drawings panel which groups drawings into plans, sections, elevations, etc sorted alphabetically. This makes it easy to quickly jump to relevant drawings in new projects. Filtering now can filter both drawing numbers / titles and preserves the hierarchy.
MEP Services and distribution systems modeling
In this release we started laying the groundwork to make it possible to work natively with MEP elements (ducts, pipes, cables, etc).
We’ve added a couple of templates to create MEP segments or fittings from the type manager. They work very similarly to other profile based elements like beams. MEP elements created from templates will have ports by default and ports are automatically adjusted as you change segments lengths or move them.
Mainly, there are 4 tools currently available for MEP. The Add Fitting (also available from BIM / Duct / Pipe tool from hotkey) adds fitting based on current elements selection. Currently available fittings are obstructions and transitions.
Obstruction will be added if you have just 1 element selected, it be attached to the side closest to the 3D cursor. Transition will be added if you have 2 elements selected and they are parallel to each other. Bends will come next shortly right after this release, stay tuned for the updates.
When you it will try to find and use compatible fitting type - if it couldn’t it then will create new but the next time it will reuse already created type. It will make sure we’ll have types more clean and organized.
You can also Regenerate Distribution Elements (currently available from F3 menu and quick favorites). This adjusts connected elements for the active object. If you have moved a segment, fitting, or other connected equipment, it will auto adjust the chain of distribution segments with a “minimum impact” strategy (e.g. segments will extend insted of moving).
You can also manually Add Obstruction and Add Transition (currently available from F3 menu and quick favorites) - allows you to create obstructions and transitions with custom parameters when Add Fitting use just default values.
The UI has also been improved so it will be easier to nagivate between connected elements and their ports. More UI is coming - we plan to add viewport decorators that will allow you to see the connections between the elements, flow directions and other important information right in viewport without looking for it in menus.
More detailed and informative IfcTester reports
IfcTester has been upgraded to the latest IDS schema and had a few tweaks to fix failing edge cases. Facet filtering is now more optimised for faster auditing of larger models. A critical bug where inherited properties weren’t validated correctly was fixed.
IfcTester also now comes with a significantly upgraded report. This includes a summary progress bar at the very top, and progress bars for every specification. Progress is now reported in a much more granular fashion, including passing specifications, passing requirements, passing elements, and individual pass / fail checks. Reports also now include applicability, descriptions and instructions, as well as a formatted table to describe failed elements, with GlobalId and Tags highlighted to make it easy to select.
IfcTester can now export reports to BCF, including viewports of problematic elements. The PyPI distribution now includes the XSD.
Detailed documentation for programmers parsing IFC geometry
Extensive documentation has been written for how to use geometry trees. Geometry trees are optimised ways of spatially querying IFC geometry (e.g. what objects are at this coordinate, or intersect with this ray).
There is also documentation teaching how to create basic geometry, explaining concepts in detail from placement matrixes, contexts, extrusions, parametric layers, parametric profiles, mesh geometry, and more. This comes with simple API functions to do things like “wall from 2 points”.
There are also new utility functions to quickly generate rotation matrixes in numpy.
Standard US steel profile library
Thousands of standardised steel profiles are now available in a US profile library. This is in addition to existing EU and AU steel libraries.
New search panels and spreadsheet reporting
Inspired by IDS, there is a new, simpler, and more powerful selector syntax which can be used to construct filters, searches, and smart tags. The search panel has been completely redesigned to use this new system and supports filtering by class, attribute, property, material, classification, location, type, global ID, or other custom query. This is available with a graphical query builder where you can group queries and save / load searches.
These saved searches can also have a colourscheme applied to them. An auto generated colour legend may be then customised and multiple properties colour coded simultaneously. These colour schemes can also be saved.
You can also quickly select similar items by shared properties or attributes using a new “Select Similar” panel.
The same search filtering system can be now used with IfcCSV and is also used in all filtering, include, and exclude systems such as in drawing filters or IfcPatch extract element filters.
The element query syntax also now supports counting, fetching style data, and specific spatial structure elements (e.g. going straight to the storey and bypassing intermediate spaces).
This makes IfcCSV much more flexible. In addition, IfcCSV now supports custom table headers, multi-column sorting, grouping by value, group operations (such as count, sum, average, concatenate, etc), custom values for null and boolean fields, and a summary row for total counts / averages / etc. You can also specify custom formatting functions (e.g. force uppercase, lowercase, imperial formatting, etc). Columns can now be easily reordered. IfcCSV can also now export to three formats: CSV, XLSX, and ODS in the BlenderBIM Add-on interface. There is also now Pandas support when used programmatically.
Detailed documentation about the new selector syntax is also now available.
Fundamental features built for using Brickschema
Thanks to work by Riley Wong, our latest Google Summer of Code student, the Brickschema module has seen a large upgrade! Brickschema is a semantic structure and ontology designed to represent the relationships between building services.
The Brick module now lets you save / save as changes to a selected file. There is now a panel to manage namespaces. Improved utilities to add Brick entities, update their properties, and edit relationships. There is now a Brick undo/redo system.
Created a Brick IfcClassification system. For basic IFC types, the mapping to Brick types can be inferred automatically, but others may need to be classified before mapping correctly.
Most uniquely, updated the ability to assign IfcReferences and convert IFC to Brick. IFC files will be saved with references to Brick URIs and Brick files will be saved with references to IFC identifications.
Critical bugfixes
A critical undo sync bug was addressed when operators were invoked. The ID tracking system was also redesigned, which should fix a number of highly subtle undo bugs. An oversight meant that a number of operators were simply excluded from the undo system, which is now resolved. Finally, the undo system now understands “undo until point in history” which makes that function now possible, and additionally fixes a number of undo bugs that occurred when toggling edit mode. These types of bugs lead to corrupted model sessions that are incredibly frustrating for users. Also fixed a bug where Blender objects couldn’t be deleted with the “X” key.
Construction sequencing and planning ugprades
There is a new status panel to manage, show, hide, etc simple statuses, such as new, existing, demolished, and more. To overcome shortcomings in IFC, there is now an EPset_Status provided too and you can copy enumerated properties.
You can now save and load 4D animation colourschemes. Cost schedule UI cleaned up and its now easier to edit sequence relationships. You can now contrain construction resource work or number of resources used.
It’s now easier to edit productivity data. Yo ucan show derived schedule work for a parent resource, and the resource tree structure now looks nicer.
So much more
It’s hard to capture absolutely everything which has changed, but here are a few more stragglers.
- More natural wall insertion when adding walls.
- BCF projects may be closed / unloaded.
- IfcClash can now store graphical clash snapshots again.
- Fix critical crash in IfcDiff if comparing non-geometric models.
- The type manager now shows updated profiles after editing them.
- Fix cross-platform external styles.
- IfcOpenShell installation into AWS Lambda and Google Colab is now documented.
- IfcSverchok has been repackaged to work with the latest Sverchok.
- Inverted normals on generated frameless panel balustrades are fixed. You can now press tab to edit more things like roofs and railing paths, and F2 to rename grid axes. Roof and railing type names are no longer hardcoded.
- IFC4X3 now uses the most “official” IFC4X3 version (IFC4X3 Add1) transparently instead of an outdated version.
- Improved shape testing / debugging which now considers 2D geometry to prevent false positives.
- Fix critical bug where the MergeProject IfcPatch recipe created duplicate contexts.
- OffsetObjectPlacements can now toggle whether rotation is applied before or after translation.
- Deleting single objects in an array or removing an array now gives the users options on how to handle the loss of parametric data. Array children can also be locked or follow their parent.
- Point representations and non-grouped annotations are now loaded, so you can load survey points (COGO points) from civil software such as 12D and Civil3D. There are also now symbols for survey points, traverse points, control points, and spot elevations.
- Types can be renamed from the type manager.
- You can now use queries to load in library assets.
- Individual projects can now have their own pset templates distributed with them.
- UV texture support is added for tesselated face set geometry.
- Some work has been done to implement scale dependent map conversions in IFC4X3.
- The ExtractElements recipe is now more robust when appending invalid type occurrences.
- Linked IFCs can now have their selectability toggled.
- There are now IFC operators for changing object origins.
- You can now see how many times a profile is used and purged unused profiles in the profile manager.
- Quantities can now be set on type elements.
- Converting objects to tessellations now auto purges parametric materials for convenience.
- IfcClash now works again on Windows.
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 "2023-07-01"
):
256 Dion Moult
155 Andrej730
60 Sigma Dimensions (Yass)
58 rileywong311
34 Gorgious56
24 Thomas Krijnen
18 Dirk Olbrich
16 Carlos Dias
13 Trashman247
12 Bruno Perdigão
10 dushyant basson
7 ay-ex
6 Bruno Postle
5 Kristoffer Andersen
5 Massimo Fabbro
5 Ryan Schultz
3 Chetan
2 Christoph Mellueh
1 Jesusbill
1 OrionSehn
1 Wei Yang
1 arun
1 luzpaz
1 smr02
Donors since the last release:
Cyril Waechter BIM Insight
BIMvoice
PlaniBIM SA
Dion Moult
Daniel
Brendon Reid
Alex
Sven Amiet
Salman
Randolph
Matthew Fuller
carlopav
Jonny Knopp
Julio
Frode Lund Tharaldsen
StefStap
Losepacific
Haritonov Alexander
Dumitru Minciu
Bedrossian Ádám
Aether Engineering s.a.s. (Aether Engineering)
bimage
daniele rossi
bitenergie
Yoshiaki Kusumi
Omar Zerhouni
Marin Ljuban
Leon ten Brinke
Johnson Bankole
Henning Munzel
Arun
Andrea Rosada
louistrue
cvillagrasa
Udo
Stephen Cremin
Miguel
Madars Siksna
Incognito
Carlos Dias
Benny
Alexander Kleemann
Guest
casiovadal
bclmnt
Tim McGinley
Royner
Rafel Bayarre
Marcin Boguslawski
Kristoffer Hunnestad Andersen
Fabian Emanuel Kitzberger
Esteban Valdebenito
Dirk Olbrich
Cordero Architecture
Ari Pikkarainen
Andrew Bailey
Christoph Mellüh
Chidi
Bruno Perdigão
BlenderBIM Add-on v0.0.231104 has been released with 405 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: https://blenderbim.org/
Unfortunately in this release the total number of bugs have been climbing and not everything we wished to achieve got done. Despite this, we hope you enjoy the hard work done by the entire community! A huge thank you to all developers, testers, users, and financial contributors: you are making this happen! You are changing the industry!
OK. Deep breath. Get ready. Go!
Credits to Carlos Villagrasa for the release image
Blender 4.0 support
Although not yet released, in the next week or so Blender 4.0 will be released. A number of compatibility issues have been addressed. Note that there is still an issue upstream in Blender where copying node trees from one shader to another is no longer working. This has been reported to Blender but until it’s resolved the feature for external material style shaders will not work. If this is important, you can just use Blender 3.6.
Other than that, feel free to upgrade to Blender 4.0!
Progress on MEP modeling
Added support for creating MEP bends for circular and rectangular profiles either using “Add Fitting” in one of BIM Tools or using “Add Bend” explicitly. It’s still getting polished but it already should work in the most cases, including support for different bend directions and radius.
MEP tools are now getting more accessible - they are available in the BIM Tool menu. We’ve also added a new one that connects elements by their closest available ports - for some cases now there is no need to show ports and connect them explicitly.
There is also now basic support for MEP elements decorations. It shows line decorations for currently selected elements or currently active system. You can also see the flow direction visually and adjust it without jumping to ports, just by having two elements selected.
IfcFM is now ready for use!
A common task on larger projects is to deliver asset registers and digital operations and maintenance manuals using standards like COBie. Previously, we offered a tool known as IfcCOBie with features to do this, but it was unfortunately an incomplete implementation and being one of the earliest offerings, had many bugs and mistakes which we’ve now addressed. You can access IfcFM via command line interface, library, or in the Facility Management tab in Blender.
IfcFM is now completely rewritten to offer a generic way to create tabular asset data with strict adherence to standards like COBie 2.4, COBie 3.0, AOH-BSEM, and novel vanilla pure IFC approach. To read more, check out the documentation. In collaboration with Emma Hooper from BuildDigital, one of the leading experts in COBie delivery, we have been carefully addressing many of the ambiguous or incomplete nooks and crannies in these FM specifications to ensure that we offer the most valid, strict compliance for users.
Like IfcCSV, IfcFM supports ODS, XLSX, CSV, and Pandas Dataframes. There is a generic code structure such that you can also easily write your own conversion if required for your project. It also supports federating multiple spreadsheets (such as from multi-discipline models) into a single spreadsheet, as well as bulk processing multiple models.
This now means that IfcCOBie is (finally) deprecated and older libraries like xlsxwriter and deprecated as well in favour of newer ones like OpenPyxl.
Continued progress on UI improvements
The previous release had a huge UI redesign, but not everything made it in time. We managed to make a bit more progress this cycle.
The active drawing settings UI have now been migrated from the camera tab into the Drawings and Documents tab. The settings to change drawing size have also been redesigned and consolidated into a single area to easily edit drawing width and height, as well as raster DPIs (rather than messing around with absolute pixel values). The drawing system is now more forgiving of manual deletion of properties and is more flexible with respect to manual editing of layouts and sheets in external software.
There is also a new placement panel in the Geometry and Materials tab. This consolidates coordinate, rotation, and derived coordinate data which was previously spread around. The material and profiles panel are also moved into the Geometry and Materials tab.
The duplicate systems panel has also been merged. There is also a new zones panel separate from distribution systems.
Actors, users, people, and organizations are now grouped into a new Stakeholders section.
Work in progress redesign of material and style management
The prior material and style system was mixed into various locations in the Blender interface - blurring the lines between the rules and capabilities of Blender materials and IFC materials / styles. This led to a huge amount of confusion and both real and UX bugs.
A start has been made on a completely new material and style system with some basic support for adding editing shading and rendering styles. You can also specify names when adding materials, and associate / unassociate styles to materials. When this is complete, it will completely override the vanilla Blender materials tab and offer a much more truthful representation of material and style assignments.
There is also a new representation items panel, which does not do much currently apart from indicate geometry types, but will later be used to assign styles, support shape aspects, material constituent links to shape aspects, and presentation layer assignments.
It’s not yet recommended to use these new panels for authoring.
New bSDD integration for classifications
The buildingSMART data dictionary is a cloud service that acts as a centralised cloud database of classifications, materials, and properties. There is now an initial implementation which integrates with the bSDD, so instead of loading from offline classification libraries, you can now select a bSDD service and choose from an online classification.
Classification in the bSDD can also include relevant properties that need to be set whilst assigning the classification reference. This is also implemented. This work was presented in the buildingSMART meetup in Norway.
In addition, the popular Uniclass classification library has now been updated to the latest July 2023 edition with a generic script available to generate any required Uniclass version. It should be noted that the Uniclass classification system available on the bSDD is currently outdated.
File association on Windows
Just like on Linux, double clicking files in Windows Explorer will now directly launch the BlenderBIM Add-on as a viewer. To enable this, open the add-on preferences window and follow the instructions.
More IfcPatch recipes!
IfcPatch got a number of new recipes and improvements to existing recipes. The ResetAbsolutePlacements recipe can now only affect placementes, geometry, or both. There is now a recipe to fix a Revit bug where they hardcode the Uniformat classification system. Another recipe fixes another Revit bug where classifications are placed on the occurrence instead of types. There’s also a new PurgeData recipe to purge IFC metadata and relationships.
Behind the scenes
A lot of work has been happening on the underlying IfcOpenShell library, with compiler warnings being addressed, and cmake build clean ups. Similarly the PyPI distribution has improved metadata to prevent installation on unsupported platforms or Python versions. As part of the new Cesium ecosystem grant, IfcConvert now has support for Earth-Centered Earth-Fixed glTF. There is also now support for IFC4X3 ADD2, which is one more step towards the final ISO version of IFC4X3.
More documentation
As with all releases, documentation has been increasingly polished, with a new introduction section teaching the basics about IFC and BIM, updates to IfcCSV and the selector syntax page. There are also new sections for IfcFM (and IfcCOBie removed), the BIMServer Plugin, BIMTester, bSDD library, IfcMax, and BCF. API documention is now written for the shape calculation utility module and the placement module. All relevant images in the beginners tutorial have also been recreated with the new interface.
So much more
It’s hard to capture absolutely everything which has changed, but here are a few more stragglers.
- Array handling was improved and it got a bit more natural. Array duplication automatically produces a new array, arrays also can be duplicated partially (only selected layers). You can also remove layers of array just by selecting and removing it’s elements. All array constraints are now loaded when you open .ifc in BlenderBIM automatically.
- Critical bug fixed where some drawing element filters for individual GlobalIds didn’t have any effect.
- We’ve defined a way to mark in BlenderBIM manual openings - you can pin down booleans in Booleans section so they won’t get lost if profile/material based object gets regenerated.
- Lots of representation issues were fixed that you may or may not have noticed before. There is now a prioritised list of geometric contexts that determines load order.
- Similarly native element loading has been completely rewritten which now handles mapped items a lot more robustly.
- It’s now possible to add openings to non-profile based meshes, with new support for IfcVoidingFeature based openings
- Fixed the ability to duplicate grid axes.
- The facet selector is now more stable when you use specific characters, and is now used in the advanced mode model loading.
- New function improvements including better imperial formatting, fixed number rounding function, and new substring function.
- Text annotations now use formatting functions instead of arbitrary code execution.
- New annotations for dynamic XYZ or easting, northing, and elevation values.
- A number of fixes for casting to tessellation, splitting elements by plane, and resizing to storey, which are all common cleanup operations when preparing for 4D animations.
- Fixed critial bug with inability to create slabs in IFC2X3.
- Various UX improvements to the spatial manager.
- Fix inability to add inherited psets, random truncation of property set template names, and live-editing of property set templates to prevent the need to explicitly save.
- IfcDiff can now visualise across linked IFCs and will forgive invalid geometry.
- Various fixes to Microsoft Project XML calendar imports.
- A number of date calculation bugs have been fixed when cascading schedules and calculating critical paths.
- Resource costs are now inherited from parents, and an improved template for resource CSV imports.
- IfcTester reporting is now more detailed, describing data type errors and percentage passes per requirement. A crash was fixed in the IfcTester UI.
- IfcTester property audits are now twice as fast. Great news for huge model audits!
- Native meshes are now automatically enabled when dense meshes are enabled for faster loading out of the box.
- New debug mode to override display type.
- New IFC tool to separate meshes into multiple objects (to replace the built-in Blender separate operator)
- Fixed bug where flipping walls connected to roofs and slabs would fail.
- Fixed crash when opening SVG drawings on some folders on Windows.
- IFC2X3 fallback georeferencing psets are now available out of the box. The geolocation module and utilities now also support the IFC2X3 fallback method.
- You can now flip beam origins.
- Selecting similar predefined types now takes inheritance into account.
- The shape utility now supports calculating projected surface area, with fixes for overlapping projections.
- You can now select objects coloured by a colourscheme.
- Fix multiple bugs and regressions related to IfcMaterialLists.
- Improved UI for covering tool and new feature to generate floor coverings and regenerate it.
- Fixed bug where native meshes had normal smoothing.
- The get pset utility function now has a verbose mode to get IDs and classes for complex processing.
- New preference to customise the app used to open sheet layouts.
- Edited mapped profiles now works.
- Fix critical bug where editing shared properties didn’t independently impact that single pset.
- IfcCSV now supports list concatenation.
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 "2023-09-02"
):
150 Dion Moult
146 Andrej730
28 Sigma Dimensions (Yass)
18 Massimo Fabbro
16 Ryan Schultz
15 Thomas Krijnen
7 Dirk Olbrich
4 Vukas Pajic
3 Bruno Perdigão
3 Bruno Postle
3 Carlos Dias
3 Gorgious56
2 c4rlosdias
1 A. R. S
1 Andrej
1 Claudio Benghi
1 Hilko
1 ceegartner
1 isma3lMB
1 taylor
Donors since the last release:
BIMvoice
Sogelink
OSArch - A GIT/IFC Interface in BlenderBIM.
Cyril Waechter BIM Insight
PlaniBIM SA
Randolph
Dr. Richard Hollmann
Daniel
Dion Moult
Brendon Reid
StefStap
Incognito
Guest
Haritonov Alexander
Jonny Knopp
carlopav
Jim
Matthew Fuller
Sven Amiet
Dumitru Minciu
Frode Lund Tharaldsen
Julio
Losepacific
Louis Trümpler
Arun
Bedrossian Ádám
Henning Munzel
Omar Zerhouni
bimage
ppaawweeuu
Lars
Abdelmalek
Benjamin Smith
Duarte Farrajota Ramos
Johnson Bankole
Konrad
Kristoffer Hunnestad Andersen
Leon ten Brinke
Marin Ljuban
Udo
bitenergie
Alexander Kleemann
Benny
Chidi
Cordero Architecture
Miguel
Stephen Cremin
Tim McGinley
cvillagrasa
Ari Pikkarainen
Bruno Perdigão
Carlos Dias
Christoph Mellüh
Dirk Olbrich
Fabian Emanuel Kitzberger
Madars Siksna
Marcin Boguslawski
Rafel Bayarre
Royner
bclmnt
casiovadal
Aleksandra
Antoine
Felipe Raimann
Michael Ehemann
Valter Robson
bimo
daniele rossi
青龙弦
Marco Andrade
BlenderBIM Add-on v0.0.240402 has been released with 830 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: https://blenderbim.org/
Because the previous two release dates were missed, this is a massive Flemish-Giant-rabbit-sized release.
OK. Deep breath. Get ready. Go!
Note: project screenshots below are from the OpeningDesign Highland Haven project licensed under CC BY-SA 4.0. Check out OpeningDesign today! They do all their architectural work open source!
Bulk link massive models and clipping planes
Previously, linking in reference models was a manual, tedious process. You first needed to load in the IFC in its own Blender session, save a Blend file, then link that Blend file in. Linking also preserved geometry but lost metadata since that IFC was not referenced in the active session. Having many IFC models open also ran into memory limits. This has now been resolved. By headlessly processing IFCs as chunked geometry in a subprocess with metadata stored in an indexed SQLite database, you can now link in massive IFCs in bulk (not one by one).
In an example stress test, it takes me 26 seconds to load in 16 (preprocessed) IFC models totalling 2.3GB running at 15FPS using 69% of my 32GB ram used and I can instantly click on objects and get basic data about them. Without chunking, there would have been 346,600 objects (excluding objects without geometry). Note that this is a completely loaded model, no live streaming is required. This is the fastest open source solution available right now.
For model navigation, the much-hidden fly and walk modes in Blender are now given prominent and easy shortcuts in the new Explore tool. FPS performance has also been improved by enabling a dynamic viewport culling mode which auto toggles box visibility of objects as you fly around the model. After processing, the results are cached so the next time it is opened will be much faster. You can also quickly set a new orbit center in case you get lost or are unfamiliar with how to rotate in 3D.
This means that for huge companies working on megaprojects, the BlenderBIM Add-on is now becoming a viable coordination viewer to replace proprietary tools. The IFC to SQLite conversion is also available as an IfcPatch recipe, which you can link into BI / dashboarding / insight tools. This SQLite schema is optimised for accessing metadata simply, not for retaining the full semantics for IFC, so it is perfect for simple analytics.
You can also now easily create clipping planes which works even on massive models. This viewport-only clipping is fantastic for model coordination tasks and are easy to flip, delete, and won’t affect material shaders. There is an experimental capping feature for those who might want to use this to create sectional renders.
It’s also possible to visually append elements into your current project from linked models.
A word of warning that the new model linking feature currently only supports manual input of defining the false origin (if any), which means that those unfamiliar with georeferencing and coordinates may get unexpected results and cannot rely on autodetected origins.
Complete rewrite of clash detection algorithms
IfcClash previously used the hppfcl library to perform collisions. This worked, but was not tailored to the AEC industry and incurred a speed penalty to passing geometry to and fro this library. The IfcOpenShell geometry tree now supports significantly faster clash detection features built-in.
Three clash detection modes are now supported: intersection (where elements protrude into or pierce one another), collision (where there is any sort of touching surface between elements), or clearance (where objects may not touch but will come within a distance threshold of one another). Critically, intersection test results now support much more meaningful protrusion distances, allowing you to filter and sort high and low priority clashes. Clearance clash checks is a completely new capability that was not possible before. Clash results are more meaningful, highlighting exact coordinates of clash locations and protrusion distance measurements, and clash types (e.g. protruding vs collision vs piercing vs clearance).
Clashes are also significantly faster. Equivalent clash tests can now be in the range of 100X to 1,000X faster than before. Work is half complete in supporting performing clashes across many gigabytes of IFC models (addressing memory concerns) but this is not yet available to users. For example, an internal collision test of a 200MB IFC model with 18.5k objects might take only 0.45 seconds for the actual collision process itself.
There is also a much improved clash interface, highlighting clash groups and merging the clash results and clash sets all in a single panel. Applying clash filters also now uses the new search / filter groups UI.
For developers wanting to make use of this, the Geometry tree documentation has been updated.
Blender 4.1 support and distribution packaging
There is now support for Blender 4.1, and this also means support for Python 3.11. Dependencies have been cleaned up, meaning significantly lighter installs. Previously, users would download 116MB to 163MB zipped (and much bigger when extracted!), but filesizes are now about 60% of what they were, down to 67MB to 100MB (depending on operating system).
A straggling issue related to Blender 4.0 support was fixed: external shaders will now work again in Blender 4.1. Funnily enough, if you really want to, you can at least install the BlenderBIM Add-on on Blender <3.3 now, but we don’t recommend it.
There is also support to install packages from pip in the debug panel for those using Blender as a development environment in companies or experimenting with features.
Packaging has been updated with support for Python 3.7 and 3.8 dropped. PyPI dependencies now have shapely, dateutils, and more as optional dependencies depending on the functionality you need. The bSDD library now has PyPI metadata so you can install it with pip thanks to jgunstone!
Work has begun on supporting the new Blender extensions system. It’ll be a while until we fully support it, but this system will be coming in future Blender versions to allow users to keep add-ons updated from “app stores” and update directly within the Blender interface.
Structural simulation major updates
Jesusbill has done huge updates on IFC2CA with thousands of lines of changes and it looks totally awesome and deserves its own section and picture but I’m not a structural engineer so I have no idea how to describe it Definitely check out the commit here!
More documentation for users and developers
Documentation has seen its usual set of updates, including updated screenshots for creating BIM models, fixes to misleading text, incorrect code samples (especially a significant number of IfcPatch recipes), supported systems, and so on. It’s also received a style update that matches the styling of the main IfcOpenShell and BlenderBIM Add-on websites. You can now also copy code from the docs or jump straight to editing the docs page that you’re on.
In particular, docs have been added about Geometry serialisation and processing geometry with multiple representations. This allows people to use Python bindings to script the conversions that IfcConvert is capable of, giving you more flexibility in specifying element and context filters or chaining events that might be tricky using shell commands. Similarly documentation about creating geometry from OpenCASCADE has been written.
The shape builder documentation has been updated significantly with more hints, improved text and code samples to help people writing code to generate IFC geometry.
Dirk Olbrich has also made significant contributes in cleaning up the documentation structure for developers to improve maintainability.
Translation and i18n support
The infrastructure is now in place to support translations of the UI to multiple languages. There is also now another add-on which helps translators manage translation strings. Note that we don’t currently have any actually translated languages, but it’s good to know that we’ve got a method to tackle it in the future. Read more about the translation process in the documentation.
IfcTester upgraded to support IDS v0.9.7
IDS v0.9.7, the latest in the IDS specification, was released about a month ago and we now support it. A number of critical bugs was also fixed including invalid handling of prohibited facets and inability to export test reports to ODS. You can also now enable generation of ODS reports from the interface. IDS checks on properties and quantities are also now much faster.
You can now select failed entities in the IfcTester UI. IfcTester now can describe prohibited requirements. IfcTester now has a column showing element type. Reports now show the filename of the audited model. A bug was fixed that prevented some facets to be used as an applicability, and facet ordering is now canonicalised for convenience so the user doesn’t need to define facets in a particular order.
Drawing generation upgrades
When 2D elements like door swings were coplanar on slab surfaces, this would previously lead to Z-fighting. This meant that sometimes these annotations would not show up. This critical issue has now been addressed with a Z-offset for these types of situations.
Some situations where cut objects with holes (e.g. hollow sectional profiles) might not have their holes displayed are now fixed.
You can now manage and generate drawings from detached windows. Blender lets you create and split new windows, so this is useful especially for users with multi-monitor setups. Activating drawings now also works when you have objects isolated. Text symbols and multi symbol objects can be rotated in the viewport too. Multisymbol annotations are also now decorated to make it easier to see.
A small but significant usability improvement is that you can now select elements in any order when assigning an annotation to a product for smart annotations instead of the eyedropper. Also built-in text annotation assets can now be used in any view, not just plan view. Angles now display using the degrees symbol, a small but significant change in documentation quality. Drawing include / exclude filters now have a new friendly UI which also lets you use saved searches.
Generating drawings is now a bit more stable. Users would sometimes hit frustrating bugs where drawings would simply fail to generate or activate, but a number of these with various reasons have been solved. There are still more to solve, but progress is being made.
Fixed bug where sometimes elements out of view would still display on drawings. Elements which have no target view applicable to the drawing are also hidden. Annotation of hidden elements are also now hidden.
XLSX schedules are now supported. URLs in SVG schedules are now clickable. Spreadsheet settings can now be saved alongside the spreadsheet, and the schedule SVG auto updated when you re-export the schedule.
There is also now experimental generation of DXFs. Note that these are simple DXFs which do not yet include annotations, fills, scaled drawing views and sheets, layers, and so on, but are sufficient for accurate measurement and referencing in other CAD tools.
New landscape asset library
Trees! Bushes! Shrubs! Palms! Lollipops! We’ve got them! And if we don’t got them, we’ve got a tree generator where you can input critical tree dimensions and generate a tree shape for it! The library comes with some generic tree shapes and sizes, as well as some species contributed by SavyGust27.
It’s also now easier to find built-in asset libraries. Libraries are now separate from project startup templates, and stored in different locations. Users can choose from a dropdown of built-in libraries as well as browse to external sources if needed.
There is a bare bones entourage asset library too.
Style and shape aspect management
Portions of your object’s geometric representation (called representation items) can have styles (e.g. colours) and be named (e.g. this geometry represents the glazing / frame of a window). In the past, the management of geometry styling and geometry naming (shape aspects) were hidden from users, happening invisibly in the background as you edited your geometry. The new style and representation item panel now has new tools to assign / create styles and shape aspects. This is incredibly powerful and lays the foundation for a new modeling tool in the future where you can manage representation items individually (e.g. individual extrusions within a larger shape).
The style manager now supports editing refraction styles, lighting styles, and externally defined surface styles. Minor improvements to style UI. UI is slowly being migrated from the shader graph editor into the properties style panel. This includes linking to external Blender styles.
This also means you can now change per-item styles and change shape metadata of non-meshlike geometry that was not previously possible. You can also remove individual representation items if you dare. The UI is missing a lot of usability improvements to make it more visual / intuitive to navigate these items, but at least something is there now.
For developers, this also means that the APIs related to styles and materials now supports this more granular type of operation.
Completely new OpenCDE API server and bSDD upgrades
OpenCDE is a specification for both servers and clients to send data about BCF, documents, and more for CDEs. We previously had no server implementation (except for a minimal test case) but Martin Wiss has contributed a fully fleged OpenCDE server. It implements the Foundation API, BCF API, Documents API in Python, the FastAPI framework and the Neo4j graph database. This project originated as the Kontroll BCF API server (see screenshot below) - and it’ll be really exciting to see what integrations will be possible in the future.
Note that this is not yet integrated into the Blender interface or other tools, but it’s the first step in a future where you can self host your own CDE either online or on a local network, and share BCF issues, manage authentication, link documents from online sources, and more.
bSDD loading now lets you filter active vs preview domains. It also now lets you fill in values for non-predefined pset and qto values. Classification references now show a button to open the related bSDD URI. The bSDD service has now been updated to point to the new bSDD API.
Classification and classification references can now be added manually instead of from a library or from the bSDD. Fixed a bug where removing a classification reference might remove the wrong one.
Continued MEP work and modeling improvements
There is a new cable carrier and cable tool, grouped into a new MEP tool submenu.
Minor bugs related to drawing system annotations and finding compatible distribution fittings fixed. Also fixed some incorrect coordinates when adding ports or placing ports on bends. Fixed UI bug where ports showed incorrect data after pressing undo. Deleting objects now also removes control relationships. You can now also regenerate and connect non-profile based distribution elements. The duplicate systems UI have now been merged. Fixed a bug adding a bend between colocated segments.
Fix regression where you couldn’t duplicate space boundaries. Outer boundaries now overlap inner boundaries. A new approach has been taken towards auto generating boundaries for an entire space and all of its related building elements. This should be more robust and result in better 1st level boundaries. Boundaries that have already been loaded are no longer loaded twice. You can also toggle all boundaries or only boundaries for a single space.
Related to modeling boundaries, a number of fixes were made to improve robustness of automatic space generation.
You can now insert doors and windows in horizontally layered elements like slabs or roofs. This means you can easily model skylights, trapdoors, and access panels. You can now generate ceilings from walls using the new covering tool. You can now toggle openings when having an opening selected for convenience. You can also apply openings in bulk. Fixed bug where cloning openings created invalid IFCs. Roof slopes can now be specified as a percentage instead of an angle.
Nested objects are now shown in the collection tree when loading models. Nesting is also considered for when displaying indirect spatial containment. There is a new UI to manage nest hosts and components, similar to the aggregates panel. For other software that don’t support nesting, there is a new convert nest to aggregate recipe to fix common issues where nested elements won’t load in Revit.
Incremental IFC4X3 support
There is now basic support for migrating from IFC4 to IFC4X3. Because we don’t yet support migrating everything, the schema migrator script now starts reporting errors when we haven’t yet supported a schema migration yet. There is now a “Upgrade to IFC4X3” button when loading models, similar to how you can “Upgrade to IFC4” as well. Although downgrades are less supported, more support has been added recently.
Sequencing utilities and APIs have been updated to fix minor issues here and there but more importantly support IFC4X3. Purging unused types has been updated to work with IFC4X3. IFC4X3 models that use nesting with alignments and referents now load.
Note that there is actually a huge amount of work being done to support esoteric geometry in IFC4X3 in the background in IfcOpenShell v0.8.0 thanks to Rick Brice and Thomas Krijnen. For those interested, see an example here.
So much more
It’s hard to capture absolutely everything which has changed, but here are a few more stragglers.
- Bulk select multiple arrays from multiple parts. Bulk refresh linked aggregates.
- Stairs can now have parametric nosings and angled treads. Fixed a critical bug where normals of the stair were incorrect. Stairs will also now auto calculate a pitch parameter.
- Purge data recipe now also considers shape aspect names and presentation layers, and works on IFC2X3.
- Clipping planes now have a standardised structure in the API for programmers.
- Improve calculation of roof quantities.
- New tessellate elements patch recipe to ensure critical elements can still be loaded by software missing support for particular IFC geometry. It also now supports the ability to force using faceted breps instead of polygonal face sets.
- Improve georeference guessing by considering placements too, and fix critical regression in previous release where offset geolocation completely broke in some cases. New Set World Coordinate System patch for software that use this attribute. This can fix models that use a non-zero WCS.
- Fixed critical bug where userdefined objects couldn’t have their types classes reassigned.
- Fix critical bug where loading materials with unsupported reflectance methods caused loading to fail.
- The placement panel now shows non-offset placements if there is a coordinate offset active in the session.
- Select IFC class now considers the classes of all selected objects, not just the active one to make bulk selection easier. Shift clicking now also considered predefined type.
- IfcFM now autodetects available FM recipes.
- Fix UI bug where groups might not load.
- Power users can now disable the BIM toolbar or workspace if an IFC isn’t loaded by default.
- Big optimisation to editing object placements of objects with lots of child elements.
- Fixed critical bug where pset applicability didn’t consider inheritance, so now more psets should be available to assign to elements. Similarly, some psets that were applicable to predefined types are now available.
- Fixed critical regression where duplicate and linked duplicate hotkeys were broken in vanilla Blender.
- Owner history entities are now appropriately purged in all known operations.
- Reassigning occurrences or types now also reassigns the correlating occurrence or type.
- Various under the hood work in preparation to support Python 3.12. Python 3.11 is now added to the build matrix.
- When visualising diffs, it can now partially load diffed elements. This means you only need one model loaded to do a diff instead of two.
- A critical bug was fixed where IfcDiff would report incorrect results when types didn’t actually change. IfcDiff also now uses the new facet based filtering system.
- You can now regenerate automatic occurrence names.
- You can now add a reference image that auto includes IFC textures. The image can be referenced using a relative path.
- Fixed bugs related to loading UVs for projects not using meters, and add prototype support to save UV to a style.
- Support added for loading blob textures and pixel textures. Fixed bug where textures should apply to non faceset geometry. New UI to change the texture coordinate mapping method.
- Fixed two minor bugs in CityJSON2IFC that might cause some geometry to fail to convert.
- The FixRevitTINs patch that resolves many issues related to TINs in Revit can now differentiate between solid TINs and surface TINs. Normals can now be normalised for surface TINs.
- You can now delete rooted elements in IfcOpenShell missing a GlobalId.
- New citation file format files available for academics wanting to cite more specific utilities of IfcOpenShell.
- Fixed critical bug where editing profile set geometry didn’t allow for optional axis definitions in some IFC models. Fix bug where switching geometry to a text literal failed.
- Fix bug where some vanilla panels would sneak into the interface or wouldn’t get unregistered properly.
- Patch recipes can now be performed in-place on the file, and are sorted alphabetically for usability. The patch input is now optional.
- Fix displaying derived task durations and more lenient loading of CSV work schedules. Unit basis is now considered when calculating resource costs. Cost value names are now shown. Fix issue with calculating cost values with a parent cost. Record formula and resource name for cost values when calculating resource cost. A bunch of conversion based units (e.g. imperial) now show symbols. Fix bug with importing counted elements in cost schedules. A critical bug was fixed where removing nested cost items resulted in a broken model.
- Purging unused types now works on window and door styles and IfcTypeProducts.
- The tabbed properties UI now works on new external windows or temporarily fullscreened windows (e.g. ctrl-space hotkey). There’s also a new UI for IFC object and edit modes.
- The pset template module can now author quantity templates, not just properties.
- The LCA module has been removed.
- The search query module now supports filtering by group, and querying values that contain a substring.
- Inserting objects onto a space now has different modes to choose how the RL (i.e. Z value) is determined.
- The selector now supports filtering for objects contained in a location, or filtering for spatial elements aggregated in other locations.
- There is now an advanced feature to bulk purge orphans. The more experimental operators have been relocated to the debug panel to be used by advanced users.
- Fixed bug where doors and windows couldn’t be part of assemblies.
- Reverting and reloading IFCs have been consolidated.
- Fixed critical bugs where loading cost items with no value from CSV could lead to a crash.
- A number of validation bugs and UX issues which could lead to invalid data were fixed under the hood. These rarely affect users until its too late, and so it’s our mission to ensure that everything we do in IFC is valid to ISO standards. Validation tool also now reports if no errors were found.
- Objects that are copy pasted are now always unlinked. This prevents issues where people copy and paste across Blender sessions and get invalid IFC data.
- A critical bug was fixed that allowed people to duplicate the IfcProject (yikes!) or be stuck in a loop where they couldn’t unlink an invalid element.
- There is now an indicator if your model contains unsaved data. Save early, save often!
- Fixed a bug where trying to load a filtered IFC2X3 model didn’t work.
- The merge by type mode when loading models now doesn’t break if your objects don’t have names.
- Loading also now skips excessivly voided objects for performance. If you have 1,000 booleans on a single object, that object needs to rethink its life goals.
- A crash was fixed that could occur when removing booleans.
- An important UX improvement was made to indicate when users tried to assign IFC elements when in edit mode.
- A critical bug was fixed in the ExtractElements IfcPatch recipe that led to a lot of irrelevant elements being extracted if they shared a material.
- The shader based section cutaway tool has been updated to work with Blender 4.0 and above.
- Fixed a critical bug where sometimes an updated object placement could corrupt other objects.
- A huge bugfix in IfcConvert now excludes bounding boxes by default which tended to get everybody pretty confused when they kept on seeing boxes instead of their model’s elements.
- Little usability improvements such as to support default Blender hotkeys for jumping to filepath locations. The two methods of generating spaces are also shown in the UI.
- An important bug was fixed when editing psets to ensure that null properties are purged. A critical bug was also fixed where you couldn’t remove psets from materials or profiles.
- Critical crashes were fixed when reassigning classes in certain situations.
- A common point of confusion about the mandatory nature of owner histories in IFC2X3 has been addressed in the API.
- When editing a profile-based shape’s axis (like a beam or member), its local Z rotation is no longer reset. You can also now join together multiple extruded objects for projects not using SI units.
- Unit conversions for plane angle units (basically degrees and radians) are now available as a utility for developers.
- Inherited quantity sets are now shown separately to property sets.
- You can now assign XYZ coordinates from a spreadsheet in bulk with IfcCSV.
- Selecting similar types is now much faster.
- Opening IFC files can now be multithreaded.
- IfcCSV had various bugs fixed related to importing data with invalid data types, summaries now have formatting.
- A few bugs were fixed in the saved search / filter system when loading and saving searches.
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 "2023-11-04"
):
362 Andrej730
185 Dion Moult
38 Thomas Krijnen
34 krande
22 Dirk Olbrich
20 Ryan Schultz
19 Martin15135215
16 Bruno Perdigão
14 Bruno Postle
14 dushyant basson
12 Sigma Dimensions (Yass)
11 Massimo Fabbro
9 jgunstone
9 Christoph Mellueh
8 Benoit DAMAY
8 CyrilWaechter
7 Gorgious56
4 c4rlosdias
4 Igor.Sokolov
3 Andrej
3 Eduardo Schilling
3 Vukas Pajic
3 wangsenhui
2 FabioPiccinini
2 Geert Hesselink
2 Jordan McManus
2 M!l!nd
2 marwiss
1 Adrian Insaurralde Avalos
1 Ian
1 Ioannis P. Christovasilis
1 MicheleBenedetti
1 VDobranov
1 ay-ex
1 dependabot[bot]
1 fescale
1 mohamadalbaaj
1 patrick.joerg
1 sennhvi
1 tim
Donors since the last release:
BIMvoice
Cyril Waechter BIM Insight
PlaniBIM SA
Tomasz
E4tech Software SA
Randolph
carlopav
Dion Moult
Hannes Wörn
Matthew Fuller
Sailor
Lukas Alberts
Martin Wiss
StefStap
Sven Amiet
Bryan
Haritonov Alexander
Jonny Knopp
Losepacific
cvillagrasa
Dumitru Minciu
Frode Lund Tharaldsen
Louis Trümpler
Guest
Rodas
Angelo
Udo
Abdelmalek
Arun
Bedrossian Ádám
Daniel
Henning Munzel
JONATHON BROUGHTON
Leon ten Brinke
Omar Zerhouni
OpeningDesign
Roland
bitenergie
tlang
Dmitriy Koptev
Duarte Farrajota Ramos
Marin Ljuban
bimage
ppaawweeuu
Johnson Bankole
Julio
Rafel Bayarre
bimtechnic
Hjalti
Incognito
Agents of Architecture
Alexander Kleemann
Antoine
Ari Pikkarainen
Benny
Christoph Mellüh
Cordero Architecture
Dirk Olbrich
Fabian Emanuel Kitzberger
Madars Siksna
Royner
Stephen Cremin
bclmnt
casiovadal
daniele rossi
Benjamin Smith
Bruno Perdigão
Carlos Dias
Felipe Raimann
Klaus
M. B.
Marcin Boguslawski
Marco T
Miguel
Studio3201
Tim McGinley
Walter
Dawid Fedko
Krande
Marco Andrade
Marcos
Smiljan Tukic
Chidi
Edy
Gaurav Rampal
Sassi Hetman
Taylor Horwood
ANGEL MAGANA
Matthias H.
Valter Robson
building2
BlenderBIM Add-on v0.0.240602 has been released with 561 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: https://blenderbim.org/
This is a release with lots of small changes that add up.
OK. Deep breath. Get ready. Go!
The documentation shown below is from the OpeningDesign Highland Haven project licensed under CC BY-SA 4.0. Check out OpeningDesign today! They do all their architectural work open source!
Drawing improvements
It’s now much faster to print multiple drawings, as drawing synchronisation is now done only once. When drawings fail to create, there is now a drawing debug operator to help users and developers discover what the problem is.
Default settings are now available in case you delete them from a drawing’s pset. Drawing decorators, such as smart text annotations, are now correctly refreshed after any edit in the UI. Smart text also responds correctly to actual line breaks now.
The underlay cache is now working as intended instead of being ignored.
There were many unnecessary operations happening during drawing loads, saves, or property edits. These were mostly wasteful and have been removed.
Any missing sheets will now be regenerated when needed, just like missing drawings.
It is now almost 3x faster to save models when syncing collections. Activating and switching drawing is now about twice as fast.
Continued work on style and material consolidation
The styles UI now works in a more similar way to the materials and profiles UI. All of the panels which used to exist in the Blender Material’s tab have now been migrated to the IFC Geometry and Materials tab.
It’s now nicer to expand and contract materials in bulk in the material manager without losing your position.
Material total now counts a particular class, not all material classes. You can now add a description and category when creating a new material. You can now add category-specific material psets (such as for concrete or steel). You can now add manual classification references for materials. There is now support for copying material sets and lists, and reuses presentation styles.
Quantity take-off completely redesigned with IfcOpenShell-based calculations
The quantity take-off procedure has been redesigned. Previously, there were multiple quantity take-off utilities that were spread around the interface and all used different quantification methods. These have now been consolidated into the Ifc5D tool and can be run agnostic of Blender. This is critical for those who run automated server model processing.
When doing QTO, it is now possible to choose between different calculation engines. Each calculation engine offers different capabilities with pros and cons with respect to speed, accuracy, and capability. Users can also use custom queries to filter the type of object, and map quantity requirements to calculator functions. This also means that automated QTO can be done for quantities that are not part of the Qto base quantities standard, such as in IFC2X3, or if you have custom QTO requirements. Powerusers can code their own calculation engine.
The old guess quantity feature has been deprecated.
Quantification panel interfaces have been redesigned and are now all in the Costing and Scheduling tab. It should now be easier to use. All of the remaining panels in the N toolbox have already been relocated into their relevant areas in the IFC tabs. There should now be almost no custom panel interface outside this area.
The Blender calculation engine’s flooring height and ceiling height are now more accurate.
Packaging improvements
PyPI now consistently releases between Python 3.9 and 3.12. We now also ship the correct Python version for MaxOS.
The bSDD library, IfcPatch, IfcCSV, and IfcClash is now distributed on PyPI. IfcOpenShell and IfcTester’s PyPI dependencies have been fixed.
Packaging has been cleaned up somewhat for the BlenderBIM Add-on, with version locks removed for a lot of dependencies and versions bumped and fetched using pip. We also now ship a Python 3.12 variant of the BlenderBIM Add-on.
Improved error reporting
All IFC operations now have improved error reporting. When an error occurs, the system will let you know and show that your file is potentially in an unstable state. You can continue to work with your file, but it is generally not recommended. It also stores the last 10 actions you performed, as well as a journal of detailed logs that occured during those actions. It will direct you to an online troubleshooting page which includes how to ask for help, how to debug it further, and how to copy paste the debug logs when filing a bug report. This will make sure that developers will get all the information they need (ideally, sometimes they still need your model) to fix the issue.
If an error occurs during installation, it’s smart enough to show your Python version, Blender version, and platform. It’ll figure out the correct installation link for you to reinstall (some users get confused between the many versions we have available).
IfcOpenShell API design upgrades
This is mostly for developers, but it is significant enough to highlight in these release notes.
The API previously functioned one elements one at a time. The API now supports batch commands, so this means that there will be an overall small speed up everywhere. For those who are writing scripts that manipulate IFCs, this can be the difference between a script taking hours and a script taking seconds.
The API now has a much cleaner set of static functions you can call directly. For those using the api.run
command, this is still fully compatible, and there have been some small optimisations done. However, it is now recommended to use the static functions where possible. For example, instead of ifcopenshell.api.run("root.create_entity", model, ifc_class="IfcWall")
, you can call ifcopenshell.api.root.create_entity(model, ifc_class="IfcWall")
. This also means that the developer experience for those using IfcOpenShell in interactive environments such as the Blender Python Console, Jupyter Notebooks, IPython, or those with Intellisense or similar LSP support in their code editor will be much nicer.
The API documentation also got flattened and easier to browse, with a lot more introductory docs written and improved cross referencing of modules, functions, and methods with improved visual styling.
The module initialisation conventions have also been made more consistent, with all modules requiring explicit importing and dependencies across modules removed, such as the util module requiring the api. Modules which require optional dependencies also now give clear error messages if they are unavailable.
The element utility has had a large number of small optimisations done. These will all add up, especially when running scripts. There are also a large number of new utility functions, such as getting the groups of an element, or traversing void and fill relationships, and parents up the spatial heirarchy.
Now that we are dropping support for older Python versions, a huge amount of type hinting has been added throughout the codebase.
IFC4 and IFC2X3 test suites have been consolidated, so there are significantly more tests and this helps catch and fix all sorts of invalid “default” behaviour that the API might do.
Documentation has continued to be improved throughout - too much to enumerate but expect new code examples, function docstrings, and explanation everywhere. This includes examples of how to use filters for IfcConvert and how to use IfcTester.
Custom properties
This sounds like a strange one, but we now support adding arbitrary custom properties and quantities without the need to first create a property set template. This is not good practice (e.g. data types are autodetected) but still convenient when you want to quickly throw in some data or for educational purposes. We still highly recommend everybody to use templates.
Google Summer of Code 2024
This will be the 4th year that IfcOpenShell / the BlenderBIM Add-on will be participating in the GSoC programme! This year, we have three students with winning proposals. Please welcome Kshitij Roodkee, who will be working on an IfcTester web interface to author IDSes with Vukas. Please also welcome Chirag Singh, who will be working on integrating IFC data with Radiance light simulation. Please also welcome Ziad Ibrahim, who will be working on building a web-based UI that can be run alongside the Blender interface for things like scheduling, gantt charts, and BCF issue management.
Coding has just begun, so expect interesting things happening in the coming updates!
iNEST innovation grant
Development isn’t just coding, of course! One significant event is that the BlenderBim Add-on and IfcOpenShell will be part of a research program funded by Italian consortium iNEST (Interconnected Nord-Est Innovation Ecosystem) featuring the participation of Italian companies Cadline Software Srl, 888 Software Products Srl, 3 Face Engineering Srl, Donadello & Partners Stp Srl.
This will likely help with project funding and may result in some interesting future features.
We’re hiring again!
Thanks to all our financial donors the time is right to hire another (part-time) developer to join the party! If you know C++ and Python and are passionate about open source software, please see the job advertisement and get in touch!
Ifc5D improvements
Many thanks to those testing and using cost related features! This really helps us fix issues. Here’s a bunch of improvements:
- The ordering of cost items (via the nesting relationship) is now maintained.
- We now distinguish between a quantity of zero vs a null quantity (which implies that the cost value is the total cost)
- There are now restrictions to prevent mixing quantity types per cost item.
- Improved UX when assigning cost items to product types.
- Improve UI to indicate that exporting cost schedules expects a directory
- Fix bug when removing cost schedule columns
- Disable adding cost schedule columns without a name
- Different cost schedules can have different custom columns
- Fix bug exporting a schedule of rates when a cost item has no quantities but controls objects with quantities.
IFC2X3 improvements
- Assigning nested objects now works in IFC2X3
- Fix bug in IFC2X3 where sheet has no description
- Fix invalid shapes in IFC2X3 where profiles have a non-optional position and need 2D coordinates
- Auto create a default user and organisation if not specified in IFC2X3
- Fix bug where some IFC2X3 files would fail to link
- Fix bug when trying to trace outlines for a new representation in IFC2X3
- Fix bug where removing document information didn’t work on IFC2X3
- Fix bug where appending material assets didn’t work in IFC2X3
- Fix bug to remove inventories of people in IFC2X3
- Removing, copying, materials now handles IFC2X3 properties
- Removing library references now supports IFC2X3
So much more
It’s hard to capture absolutely everything which has changed, but here are a few more stragglers.
- Bug fixed when linking a model with no chunks
- Blender UI panels are now consistently located in tabs depending on your workspace settings
- There is now a default shading style if yours is missing
- Fixed bug when adding a ceiling from a wall elevation
- Linked models now include material data and CAD layers
- Doc links have been updated to the latest documentation websites
- Fix bug where random objects would get drawing psets unnecessarily
- Fix possible infinite recursion bug when generating drawings
- Fix bug where there were extra equal signs when loading saved queries
- Linked models with no materials now default to the Blender default material
- The “IFC4X3” shorthand now references the “IFC4X3 Add2” standard, the final standard
- Don’t show scary error messages if trying to search with no query
- New UI List in Sandbox panel to access, flip, remove, add, edit clipping planes
- The CCI classification is now available as a preset
- New help button next to search queries to help users find documentation
- Add convenience link to launch type manager when no types exist.
- Show invisible newlines and allow newline editing in attributes.
- Fix fundamental bug where
get_pset
would return nothing or inherited props with a False value - Document how MacOS Steam users should still use Mac Intel
- Fix bug where verbose mode broke when getting complex properties
- Calculating schedule dates now handles time lags defined as a ratio
- Fix IfcTester BCF exports
- Clarify in the UI whether you are seeing type or occurrence properties
- Indicate whether the predefined type is inherited
- Disable editing predefined types on occurrences which inherit a predefined type
- Fix bug where saved drawing filters didn’t load in the UI
- Fix bug where creating new document references were invalid IFC
- Fix bug where deleting grid axes weren’t handled properly
- IfcTester can now export “Excel-safe” ODSes due to poor support for ODS in Excel
- Improved error reporting when loading IfcSverchok
- IfcSverchok builds are updated
- Clipping planes can now be stored to a JSON file
- You can now merge projects with different units
- Add support for updating relative coordinates for adhering elements in IFC4X3
- Fix bug so that spaces created with the spatial tool now have a coincident origin and zero elevation
- Prompt for a name when creating an aggregate
- More informative messages after running RegenerateGlobalIds
- Fix bug if the user explicitly removes a Blender material linked to an IFC material or style
- Consolidate debug buttons “convert to blender file” and “purge ifc links”
- Fix bug trying to launch type manager in an empty project
- Reload the current shading style after editing it
- Fix bug when linking in a material which didn’t have an external location pointing to a .blend
- Show preview of external shading style material when selecting from a .blend
- Prevent switching representations in edit mode
- Fix bug where saved filters with “not” operators wouldn’t load
- Show success messages when saving / loading spreadsheets
- New IfcTester report which just shows a summary spreadsheet view of requirements
- The API now supports wildcard listeners
- The API can now serialise API settings for detailed debug logs (mostly)
- IfcFM has vanilla IFC names changed to reflect IFC naming jargon and fixed colours
- Fix bug where autodetection of a false origin might fail
- Removing products now also removes port connections
- Fix bug where editing pset template enums left behind orphaned entities
- Restrict annotation psets to their predefined type to prevent inapplicable psets
- Drawing cache is now copied if the file is somehow locked or has a permission error
- Users are now prevented from creating incompatible context-representation combinations
- You can now create a new representation from external objects
- Profiles is now an available keyword in the selector syntax
- Fix bug when all spatial elements are deleted and the spatial manager is open
- Accommodate invalid IFCs coming from Cadwork
- Fix bug in BCF module due to xsdata dependency
- Fix ridiculous bug where setting boolean attributes to false using the spreadsheet import set it to true instead
- Users can now configure the font used to render viewport text
- Schedules can now have custom CSS and configure their own font and font scaling parameters
- Null properties in psets are now purged instead of left as null to prevent cruft build-up. Empty enums can now also be purged
- When handling invalid duplicate psets, we now merge values instead of arbitrarily taking the first/last one
- Optimisation to remove deep, especially when dealing with attempting to remove histories with lots of inverses
- Show error if a user tries to apply an opening to a type
- Fix bug where IfcTester fails to verify negative numbers
- Fix small openings being generated for parametric doors / windows
- Basic support added for including linked models when generating drawings
- Fix bug when loading profiles with a non-mesh selected
- Fix bug where changing class using a spreadsheet import might fail
- Remove the incredibly annoying “do you want to save” popup when editing geometry
- You can now drag and drop to load and link IFCs
- Resource quantity types are now limited based on the type of resource.
- IFC4X3 pset templates have been regenerated since the release
- Fix bug where two materials sharing a style would break the Blender ↔ IFC link
- Fix bug where you couldn’t change the aggregate of a locked spatial element
- Users can now choose between a whole or a part when changing the aggregate parent
- Support adding IfcQuantityCount quantities in IFC4X3
- Fix bug where “not equals” filters didn’t work properly for locations or groups
- Fix UI bug when editing multiple profile items in a material set
- You can now format custom thousands and decimal separators in IfcCSV.
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 "2024-04-02"
):
304 Andrej730
179 Dion Moult
21 Ryan Schultz
8 Massimo Fabbro
7 Bruno Perdigão
6 Bruno Postle
6 Thomas Krijnen
5 Gorgious56
5 ppaawweeuu
3 Gorgious
2 Vukas Pajic
1 Alper Kantarci
1 Andrej
1 Benoit DAMAY
1 Dirk Olbrich
1 E Shattow
1 Hilko
1 Kaare Hansen
1 Kristof Semjen
1 Kurt Battisti
1 Manu Varkey
1 Sigma Dimensions (Yass)
1 dependabot[bot]
1 jaymeandretta
1 sebphi
1 stefkeB
Donors since the last release:
BIMvoice
Rhomberg Sersa Rail Group
Tomasz
Sailor
Randolph
PlaniBIM SA
Lawrence Giroux
Cyril Waechter BIM Insight
Incognito
carlopav
Matthew Fuller
Dion Moult
Udo
StefStap
Sven Amiet
OpeningDesign
cvillagrasa
Losepacific
Jonny Knopp
Haritonov Alexander
tlang
Marcos
Louis Trümpler
Guest
Frode Lund Tharaldsen
Dumitru Minciu
ppaawweeuu
dominik
bitenergie
bimage
Smiljan Tukic
Omar Zerhouni
Leon ten Brinke
Kimmo Hentinen
Kevin Schnippkoweit
Ivo
Henning Munzel
Giorgio Nocentini
Duarte Farrajota Ramos
Dmitriy Koptev
Benjamin Smith
Bedrossian Ádám
Arun
Abdelmalek HARRAG
Rodas
Madars Siksna
Krande
Arjan
Angelo
14.4 Hjalti
casiovadal
bclmnt
Vinícius De Souza Lima
Tim McGinley
Stephen Cremin
Royner
Rafel Bayarre
N1k0
Miguel
Marcin Boguslawski
Gaurav Rampal
Fabian Emanuel Kitzberger
Dirk Olbrich
Dayo Ayadi
Dawid Fedko
Cordero Architecture
Christoph Mellüh
Choong1219
Bruno Perdigão
Benny
Barneyyy
Ari Pikkarainen
Alexander Kleemann
Agents of Architecture
Marco Andrade
daniele rossi
WILTON
RITA FERREIRA
Carlos Dias
Bonsai v0.8.0 has been released with 1,357 (!!!) new features and fixes. It’s our built environment, help support Bonsai: 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: https://bonsaibim.org/
This release simultaneously contains a ridiculous amount of sweeping under-the-hood changes as well as UX work.
Due to the sheer volume of new stuff and changes, please treat this release as more experimental than usual Help in testing and reporting bugs will be really appreciated!
OK. Deep breath. Get ready. Go!
Hello Bonsai - rebrand from the BlenderBIM Add-on
Same software, same community, new name! The BlenderBIM Add-on is now known as Bonsai!
What initially started as a discussion with the Blender foundation about their updated branding guidelines has resulted in a completely new, distinct brand. Bonsai is a comprehensive interface to the IfcOpenShell suite, our name reflects the precision, detail, craft, cultivation, and community behind our shared vision. The name was decided by the community in 8 pages of forum discussion. Also rabbits next to little trees are so cute
Support for IFC4X3 geometry
Alignments (linear elements, linear positioning elements, and referents) are now supported! As IFC4X3 is now an official ISO standard, many users in the infrastructure space are asking “What can view my infrastructure geometry?” - some viewers won’t show 2D or 3D curves, let alone infrastructure curves. This also includes more complex 3D forms like sectioned horizontal solids. There was a huge amount of work to achieve this over many months, and the best thing is that it’s invisible to users - just load your models!
Upgrade to IfcOpenShell v0.8.0
IfcOpenShell has had an incredibly huge refactor in the meantime. This significant change means that API signatures have changed. Users will immediately notice that Bonsai, and the rest of the IfcOpenShell ecosystem, now share a release cycle and version scheme. That’s right! We’re now version 0.8.0!
Previously, Bonsai had its own version number based on the date. Stable and unstable releases were not distinguished. IfcOpenShell had its own version number too, but used a commit hash to distinguish builds - version comparisons couldn’t be made, and it was unclear if the API was compatible or not, even within the IfcOpenShell ecosystem. The rest of the ecosystem (IfcClash, IfcCSV, etc) had no versions at all. Documentation was unversioned and published sporadically. These were all released at different cycles on different channels. What a mess!
Now, everything has exactly the same version number (now 0.8.0) and has the same release cycle (every ~2 months) and is distributed at the same time across all channels. All in-between versions (unstable alpha builds) are now distinguished using semver compatible versions. Channels are now also consolidated, with everything on PyPI (added IfcDiff, Ifc4D, Ifc5D, IfcCityJSON, IfcFM), and the infamous IfcOpenBot build now redistributed in the main Github releases channel. All libraries expose a VERSION variable you can use to compare.
The biggest user impact in IfcOpenShell is that it now supports multiple geometry kernels. Historically, only OpenCASCADE was supported. Now, you can also use CGAL, or a hybrid of both (some shapes with CGAL and some shapes with OpenCASCADE). This also means in the future that more kernels, smaller kernels, or tailored kernels can be used. This addresses a huge shortcoming in OpenCASCADE where dealing with mesh-like geometry was slow. This means that in the future, loading models can be easily twice as fast. However right now work is still being done on stability and feature parity, so unfortunately this release comes with a speed slowdown regression. If loading huge models quickly is important, you may wish to use an older release until this is addressed. Users can test an experimental CGAL or hybrid kernel in the advanced mode to see what the current state is (expect some stability issues).
This also means that in the future, it’s a step towards being able to bundle smaller versions of IfcOpenShell-WASM for the web.
In the IfcOpenShell-Python API, it’s been completely refactored to use the new static functions from the previous release. This means a general incremental speedup across everywhere, and a few minor bugs fixed along the process. Documentation now also only uses the static functions. UI tests also are now easier and more fun to write, and can test what the user sees and clicks - great stuff for preventing regressions in the future.
New wall polyline tool and measure tool!
To draw a wall, first enable snapping, Shift-RMB to set the 3D cursor, then Shift-A to add a new wall, then R to rotate, then Shift-RMB to the distance of the end point of the wall, then Shift-E to extend the wall to that distance.
How about this? To draw a wall, Shift-A to add a wall, click the first point, click the second point, then Enter or RMB to finish. Nice!
Drawing walls should feel intuitive. This new approach by Bruno Perdigao is exactly what users expect when drawing walls, with built in snap, clever ways of projecting or aligning wall start and end points, quickly typing in the length of the wall as you draw it, knowing at what height your wall is going to appear at as you draw it, undoing (backspace) segments in the wall tool as you draw it, auto closing loops (press C), and drawing multiple wall segments at once which are auto joined together.
Work has also started in icons and a more usable horizontal toolbar.
There is also a new measurement tool. You’ll notice this follows a similar approach to the new wall tool.
Georeferencing: better false origin handling and coordinate operation support
Handling coordinate systems and large coordinates has seen a complete overhaul. IFC defines all geometry in terms of a local engineering coordinate system, and additionally may define a coordinate system, with an optional transformation to convert between local and map coordinates. Previously, all models were loaded such that the Blender origin coincided with the IFC local engineering origin. If you had two models that were geolocated in different parts of the world (or different parts of the same site), Bonsai would still load their local origins on top of one another. In general, all IFC viewers have this (incorrect) behaviour except for specialist software dedicated to showing this properly like IfcGref or ArcGIS.
Bonsai now supports federating models together true to their map coordinates, not just local coordinates. You can take many models across a city or site with different origins, project norths, or even project and map units, and they’ll all come in correctly (for both opening, linking, and (yes!) merging). Even obscure combinations of both map conversions and rotated custom world coordinate systems are handled. To my knowledge this is the most advanced and correct implementation out there. The only thing not yet supported is reprojection across different coordinate systems.
In addition, where coordinates are very large, or where there are conflicting, irreconcilable coordinate ranges within the same model, Bonsai’s ability to pick a meaningful, session-specific false origin is now faster, more accurate, more customisable (including a new disabled mode), and handles really strange coordinate combinations which we see out there in the wild. Users can also interrogate elements with problematic coordinates and fix them, or set a temporary, session-specific project north. There is a new, simple to use, SetFalseOrigin patch recipe that lets you pick a point and set the map coordinates at that point with that point being a new local origin. In the past, editing these “incorrectly georeferenced” models would be hit-and-miss. Now, it’s actually possible to do regular geometric editing in this situation.
What makes this extra special is that this also works in IFC2X3 using the fallback georeferencing property sets! We also support all the new coordinate operations in IFC4X3. Editing a WCS is now possible in the Blender interface. Editing angles for true north and grid north now auto calculates abscissas, ordinates, (or vice versa) for ease of use.
Understanding exactly how georeferencing works in general, let alone how it is expressed in IFC is not an easy task. You can now turn on a visualisation which shows clearly where is the project north, where is the map north, where is true north, if you have any session-specific overrides, what is defined locally and what is defined as a transformation, etc. There is also a simpler coordinate conversion calculator, and all coordinates always show with units to prevent ambiguity. We hope for this to be a reference implementation for the industry.
BCF version 3 support
In addition to a ton of BCF bugs being fixed by bernd, thanks to Andrej730 the Bonsai interface now has support for loading and creating BCF XML version 3 files (previously, only BCF v2.1). Hooray!
New web interface for scheduling, gantt charts, and more
Despite Blender’s phenomenal extensibility, there are some areas where Blender’s interface falls short. It’s great at 3D, but not so great at spreadsheets, page layouting, gantt charts, long-form textareas, and highly customised interface widgets. In contrast, the web is really good at this type of flexible interface, and vice versa, doesn’t do so well at graphics. What if we could have the best of both worlds?
Ziad set out to do exactly that. Bonsai’s code is largely decoupled from Blender. This means we can reuse the exact same code across any interface or app (like FreeCAD!). Ziad has now built a new websocket based web interface that you can launch alongside your Blender session. For this first release, you’ll notice that spreadsheet and scheduling now defaults to displaying tabular data directly on the web instead of having to save to a file and reopen it in another spreadsheet software. This is a live connection, so you can click rows in the spreadsheet and auto zoom to the object in 3D in Blender.
Another module with support is the gantt chart module. Previously, gantt charts were statically exported. Now, you can have a live gantt chart showing your construction schedules, and edit your dates from the web interface and see the gantt chart update live!
Yass managed to sneak in an implementation of a costing module too!
You can also now browse drawings from the web. Quickly and visually switch between drawings and sheets on the web and see previews of them instead of having to launch them separately.
You can also connect multiple Blender sessions together and see their data together in a shared web interface.
This is just the beginning! For those who want to learn how to build your own web interface, the tutorial demo module has been extended.
Experimental light simulation integration with Radiance
Although Blender offers very powerful artistic rendering capabilities out of the box, lesser known is how to perform light simulation in Blender itself. There are already add-ons for this (such as Vi-suite) which can do such things, but these lack a close integration with IFC. IFC can store lighting styles and light distribution data for light sources, and reference external style definitions. It would be great to combine the best of the scientific and artistic worlds and perform photometrically accurate luminance renderings (within a tolerance certainty) that are also beautiful, textured, and evocative.
Chirag has made an excellent start to this - we now ship with PyRadiance and can produce renders directly from the IFC with Radiance. Users can pick simple physical material definitions from SpectralDB and define a camera and sun location (based off IFC true north and georeferencing data). The module handles the conversion from IFC to OBJ to RTM formats under the hood, and users can configure basic rendering settings and material mappings.
New solar analysis tool
Blender has an excellent Sun Position add-on which is able to calculate azimuths, altitudes, solar positions, and analemmas. However effectively using this add-on for architectural, solar, and shadow study usecases required a bit of Blender knowledge. There is now a completely new Solar Analysis panel which extends the Sun Position add-on with better visualisation of the sun position, easier setting lat/longs (reads from IfcSite), easier setting of UTC offset (auto-calculates timezone), and auto sets true north (from IFC true north).
It also supports a one-click view setup for creating shadow renders, with configurable shadow intensity, which are often a requirement for architectural submissions.
There is also a “View From Sun” mode, which places a camera from the sun’s position, allowing you to quickly scroll through key dates to check minimum solar access requirements across larger projects such as multiple apartment towers.
Blender 4.2 extension support
This release marks our debut on Blender’s new Extensions Website. Blender has standardised how to distribute extensions (add-ons and themes) on the web, where they can be searched, installed, and updated directly from Blender itself. We’re super proud to be listed on the main Blender extensions website. This means users can install us easily, and in a single click inside Blender, update to the latest version. Yes! This also means those using latest unstable releases can update every single day with a single click!
This also means that the workarounds previously required for updating or uninstalling are now fixed!
Unfortunately, this does mean that we are dropping support for Blender versions 4.1 and older, as well as Python 3.10 and older, due to a lack of resources.
Consolidated material and style handling
There’s been ongoing work to restructure the way materials and styles are handled. This work continues in this release, with more stability and more obscure cases handled. The biggest change was that in the past, a Blender material could either represent an IFC material, an IFC style, or (!!!) both at the same time. This unnecessary complexity led to no shortage of bugs and limitations. Now, Blender materials accurately only refer to IFC styles. Physical materials are managed separately. This is mostly code simplification, bug fixing, and a minor speedup during loading and saving, but means that in the next release we can do more cool things.
Also pretty neat, you can now press a button to assign a style to the selected objects.
Flexible collections and new spatial manager
In previous versions, the way of managing the spatial tree was done in the outliner. This had a number of limitations. For larger projects, you’d end up with very, very long lists of objects and it wasn’t possible to get an understanding of what objects you actually had, or even how many storeys or spaces you had. Instead you had to collapse and expand collections and manually filter and count to get an understanding of larger spatial trees. Another problem is that it took away the flexibility of Blender’s collection system: you couldn’t have objects assigned to multiple collections, and you couldn’t ad-hoc create or reoganise custom collections for temporary grouping and visibility like regular Blender. This led to lots of bugs unless you knew the exact rules of what could be nested in what. It also blurred the lines between spaces / objects groups, versus aggregate / subelement groups. In IFC4X3, other relationships like covers or nesting is increasingly common, which would lead to very deep, nested spatial trees. This deep nesting and collection-based way of managing the tree also meant load, save, and drawing generation times were unnecessarily long, and had a risk of creating “sync” bugs.
A huge change has been made to how the spatial tree is managed to address all of this. There is a new spatial decomposition panel with friendly icons, showing only the spatial structure. A split panel below shows elements contained within the active space, grouped into types with counts per class and type. At a glance, you can now see more meaningful results like “I have X storeys”, and “X walls on level 2”. There are also dedicated buttons for isolating spaces and toggling visibility, and quickly selecting elements within a space (recursively and non-recursively). Previously, you’d have to scroll constantly, and use up to 3 possible visiblity controls to achieve the same thing.
You can now also create new spaces from the spatial panel. These also filter only to valid subspaces. For example, it doesn’t allow you to create a bridge inside a room, but it does allow you to place a road on a site. It also has separate dedicated search filters for spaces and elements. These search filters search not only for names, but also long names. Previously, especially for rooms which only have room numbers or buildings with short codes, it was difficult to quickly search for room names or building descriptions, but now you can do it.
This also leads to faster drawings, load, save, and less bugs.
Users can now also set a “Default Container”. Previously, new objects were created in whatever collection was active in Blender and contained in whatever IFC element that correlated to. Unless you are a Blender whiz, it isn’t clear where your objects are being added to, or if it’s valid or not. Now, your nominated “Default Container” is where all new objects end up in, and impacts things like where new walls are drawn to.
This big change means that managing spaces must now be done in this new panel. Reorganising and using multiple non-IFC collections in the outliner is now completely decoupled and freeform for your own organisation and won’t change (or break) your IFC structure. For those who wish to create their own session-specific workflows, this is a big win.
IfcTester supports v1.0! IfcPatch is now friendlier and batch process models
IfcTester now supports IDS v1.0! IfcTester now supports the new requirement in IDS for lowercase booleans or 0/1, has more detailed failure messages for predefined types, and handles restrictions on data types. JSON reports are also more comprehensive for those integrating into their own systems. Auditing nested relationships in IFC2X3 is also now supported.
IfcTester can also select multiple IFCs and multiple IDSes and run them all in one go - a game changer for large projects thanks to Beedy! Reporting is now redesigned, and shows more information like whether the IFC schema version is accepted in the IDS, as well as passing elements, not just failures. When an IDS specification applies to an occurrence, the results automatically groups occurrences by type (if they exist) and clusters occurrences so that you can get a feel of common problems by type rather than a huge list of occurrences.
IfcPatch recipes are now easier to use. There are new dropdown menus to select configuration options, file browsing to open up files, and sensitive coordinates preserves precision. You can now merge projects in bulk rather than one by one.
Improved colour legends
When auditing models, we often want to visually check whether properties are correct. The Colour By Property panel now lets you quickly pick a property from the active object and apply a colour legend to it. Two new colourschemes are now available for categorial / qualitative data analysis, and a new view preset to quickly toggle flat colouring to make colours pop and easy to spot. Nice!
For quantitative analysis, there are now 4 new colour legends (2 for min to max ranges, and 2 diverging palettes highlighting the average), with an automatic (or custom) min and max. Ever wanted to quickly colour code your model to show carbon intensities for different materials? You can now do so! Or quickly spot anomalous volumes or lengths during quantity take-off by setting maximum or minimum thresholds.
New Bisect mode and Freestyle mode for drawings
A drawing is composed of a possible raster render as a background, followed by projection / background linework, the linework is then potentially filled or coloured in, then there is the actual cut objects, and finally the annotations.
Previously, the hidden line rendering for background / projection linework as well as the cut linework was calculated by OpenCASCADE. OpenCASCADE is quite slow to perform this, and doesn’t work very well on organic forms (for heritage or landscape architecture). The new, default, Bisect cut mode uses Blender’s built-in Bisect tool to perform the cut - and is generally faster and more robust against strange and non-manifold geometry.
There is also an option to use Blender’s Freestyle renderer to perform the background / projection linework. This is significantly faster on complex scenes, being easily twice as fast to 10x faster. As a trade-off, it is also less accurate, but it may be sufficient for your situation.
It also doesn’t allow for vector background fills yet. On the flip side, it does mean we now support producing vector linework for perspective renders.
Thanks to Manu Varkey, theoryshaw, and Carlopav for test models shown above!
Sponsored development by Beedy and Bruno!
Thanks to all our financial donors we’ve been able to sponsor work by Beedy and Bruno Perdigao! It’s incredible how many people chipping in from $5 a month can allow us to accelerate development.
We have about $2300 per month in funding. Will you help us reach $2500? Check out IfcOpenShell - Open Collective if you haven’t already
So much more
It’s hard to capture absolutely everything which has changed, but here are a few more stragglers.
- The spatial containment panel won’t show for spatial containers
- Only allow aggregates to elements which don’t have geometry
- Improve type hinting generally everywhere, and better autocompletion in API methods
- Ensure you can only add certain quantities for different resources
- Fix bug removing resources in IFC2X3
- Fix bug where cubic meter quantities had the wrong unit
- Fix bug where orphaned aggregates were never shown when loading a model
- New get_contained utility function
- Blender panels now only exists in the dropdown switch, and other Blender tabs hidden by default to prevent confusion and lost users
- Centered tab bar
- You can now search / filter styles when selecting
- Old complex selector syntax deprecated, and drawing styles now use the new selector syntax
- General cleanup to prevent orphaned elements when removing scheduling related entities
- Coordination mode / merge advanced modes deprecated in favour of new link IFC feature
- Support invalid spatial trees from 12D
- IFC object / edit modes, IFC meshes, are now hidden if there is no IFC model
- Linking IFCs now also includes spatial elements
- JSON schema definitions purged. We now only use dynamic schema data from IfcOpenShell.
- Generally better error reporting and handling across many invalid interactions, especially for using Blend files, or discarding errors
- The codebase uses schema identifiers, so schema geeks can technically test minor IFC version variations
- Fix critical bug where Qtos always used IFC4 Qtos. Remember: IFC2X3 does not have standard Qtos!
- You can reuse a cache or force a new load when (re)linking in IFCs
- Fix bug where 2D angles weren’t correctly parsed in OffsetObjectPlacements recipe
- Fix bug where merge duplicate types would trigger listeners in an active Blender session
- TesselateElement ifcpatch recipe now supports product types
- Minor fix in IfcFM to derive occurrences from types (and make it easier to override)
- Various bugs fixed in IfcOpenShell Qto calculation engine in Ifc5D.
- Various bugs fixed in upgrading models to IFC4X3
- Multiliteral text annotations can now be reordered
- More accurate quantity take off for beams and flow segments (pipes, ducts, cable trays) in Ifc5D
- Migrating calendar dates from IFC2X3 to IFC4 is now supported
- Remove unload project button - superseded by Convert To Blender File operator
- Move new project wizard into its own panel and actually title it “New Project Wizard” for clarity. Improve UX around opening, creating, and saving.
- You can now open recently opened IFC models. The tooltip shows the IFC version. Yay!
- Fix bug where MergeProject didn’t clean up duplicate CRS and coordinate operations
- Fix bug where migrating length units didn’t change properties (critical for IFC2X3 georeferencing).
- Fix missing door flip button
- UI asterisk indicates if the placement is not yet synced
- When removing the active representation, it now switches to another available representation
- Be able to search (select objects in scene) from the Spreadsheet Import/Export UI, as well.
- Support renaming materials, styles, and profiles by double clicking them
- Materials UI now indicates active class
- Significantly faster quantity take-off due to optimised shape utilities
- Add to debug UI an operator to toggle detailed ifcopenshell logs
- Unit panel now shows length, area, and volume unit for convenience
- Allow warning and background decorator colours to be configurable
- BIMTester interface deprecated and removed
- New operator to restart Blender quickly
- Support assigning bSDD classifications in IFC4X3 too, various bugfixes in bSDD and UI improvements
- For those who don’t care about native IFC and just want a simple geometry importer, a File > Import > IFC (Geometry Only) has been added. A small thing, but a huge QoL improvement for those looking for it!
- Members (e.g. stringers) can now have a stair modifier applied as they may be used to support stairs
- Deprecate old dumb stair tool and pie menu
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 "2024-06-02"
):
493 Andrej730
358 Dion Moult
157 Ziad-I
115 Thomas Krijnen
104 Bruno Perdigão
23 Blender Defender
21 Ryan Schultz
16 Chirag Singh
14 ay-ex
8 tim
6 John Yani
6 Kristoffer Andersen
6 Richard Brice
4 Bernd Hahnebach
3 Bruno Postle
3 Vanuan
3 Yassine Oualid
2 VDobranov
1 ArturTomczak
1 Augustin Trancart
1 D4ve-R
1 DimitriosThe
1 Gorgious56
1 Jean-Marc Couffin
1 Johannes Schorr
1 Jonathan Gan
1 Junzhe Ren
1 Kurt Battisti
1 Manu Varkey
1 Tim
1 mat
1 petrisch
1 shungeer
Donors since the last release:
BIMvoice
Incognito
Lawrence Giroux
PlaniBIM SA
Randolph
Sailor
Tomasz
Aether Engineering s.a.s. (Aether Engineering)
Cyril Waechter BIM Insight
E4tech Software SA
carlopav
Matthew Fuller
OpeningDesign
Alex
Dion Moult
Yoann OBRY
Guest
StefStap
Sven Amiet
Haritonov Alexander
Losepacific
Isaac Rowe
Arjan
Dumitru Minciu
Hannes
Marcos
Rodas
tlang
cvillagrasa
Jonny Knopp
Abdelmalek HARRAG
Arun
Bedrossian Ádám
bimage
bitenergie
Dmitriy Koptev
Duarte Farrajota Ramos
Frode Lund Tharaldsen
Henning Munzel
Leon ten Brinke
Louis Trümpler
Mattijs
N1k0
Omar Zerhouni
ppaawweeuu
Udo
Hjalti
Alexander
Jeremy
Agents of Architecture
Ari Pikkarainen
bclmnt
Benny
Bruno Perdigão
casiovadal
Choong1219
Christoph Mellüh
Cordero Architecture
Dawid Fedko
Dirk Olbrich
Fabian Emanuel Kitzberger
Gaurav Rampal
Krande
Madars Siksna
Marcin Boguslawski
Miguel
Rafel Bayarre
Royner
Tim McGinley
Vinícius De Souza Lima
Alexander Kleemann
Aslejo
Benjamin Smith
Dayo Ayadi
k zhong
Stephen Cremin
WILTON
Marco Andrade
Christian
Denis Pommier
GPM UNIVERSAL MX
Jan Mayer
Valter Robson
Kevin Lee