BlenderBIM - OpenBIM authoring with Blender

Wow, what a Changelog.

There is this new wall draw method with ‘empty’, ‘plane’ and ‘grease pencil’. But what is that ‘wall tool’ in the left panel for? When i use it with <shift+a> i only get the error below.
Edit: In the latest dev version (210630) its called ‘BIM Tool’ now and has a new green cube icon. I guess it has nothing to do with ‘wall drawing’ anymore directly. I just thought there maybe would be one more method to draw walls.

Python: Traceback (most recent call last):
  File "/home/user/.config/blender/2.93/scripts/addons/blenderbim/bim/module/model/wall.py", line 47, in execute
    bpy.ops.bim.add_type_instance(ifc_class="IfcWallType", relating_type=int(props.relating_type))
ValueError: invalid literal for int() with base 10: ''

location: <unknown location>:-1

Sorry for the late reply. Yeah, basically it’s a generic BIM tool which adapts depending on what type you’ve selected. If you’ve got wall types selected, it’ll add walls and expose wall related operations. If you’ve got slab types, it’ll add slabs and so on.

The error you’re seeing (which is totally not user friendly, due to the WIP nature) is because you’re trying to add a wall without having any wall types. You’ll need a wall type, and ideally that wall type needs a material layer set defined. This video which is outdated explains some of it: https://www.youtube.com/watch?v=qR-Y3d7Mpac

From my experience I actually rarely use the grease pencil and instead use the regular shift a which snaps it to the active spatial container and perpendicular to nearby walls on the same storey. It’s super fast.

BlenderBIM Add-on v0.0.210731 has been released with 134 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/

Since the last mammoth release, we’ve pivoted from developing many new features towards stablising the necessary workflows for native authoring.

Between the last release and now, two presentations were delivered to two international events: BILT 2021 and CAAD Futures 2021. Creating presentations takes time, and a good week was spent to craft an action-packed, information-loaded one hour introduction video presentation to Native IFC. We hope you will enjoy it as much as we enjoyed creating it, and share it for those who know BIM, but not OpenBIM, or those who know IFC, but not Native IFC. You can watch the video here:

New undo and redo support!

Building the ability to track partial changes in IFC, undo, and redo, is no mean feat. Undo might sound like something we take for granted in our applications, but for Native IFC authoring, it’s a new world and nothing comes out of the box. After a week and a half of four developers hacking together to solve this, we’ve finally cracked it. So, feel free to press Ctrl-Z.

Improved stability on native authoring

The last release introduced the new wall and slab authoring tool. Now, we’ve got a new column, beam, member, and opening authoring tool. These tools are slowly building up in complexity and turning into the toolbox that you expect from any modern BIM application. We’ve got new parametric profiles, parametric insertion points, and improved project library support. Accompanying this is improved hotkeys and numerous bugfixes and stability improvements on parametric synchronisation. We’re not there yet, where we can confidently model parametric objects from scratch in Native IFC, but this set of new tools and fixes gets us closer bit by bit.

Work schedules now cascade

Work schedules are now actually practical for basic scheduling. Dates now auto cascade and recalculate as changes are made throughout tasks in your work schedule. There are now customisable data columns in your task tree and you can sort by any field. Construction animations now support more animation types, including demolition and logistical tasks.

So much more

I’d like a moment of reflection to two years ago where the IfcOpenShell repository had about 50 contributors and the BlenderBIM Add-on did not exist. Today, we have over a hundred contributors and the ecosystem of tools is growing faster than ever before. With all free software, it is powered by you, the community, and you have made what is possible today.

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

All changes

New features:

  • Importing types from a project library now also bring in materials
  • You can now search for properties without first specifying a pset name. Thanks stefkeB!
  • Extruded slabs now support voided profiles
  • Dumb slabs now auto generate footprint representations
  • Footprint and side areas are now auto generated for wall quantities
  • Dumb slabs now auto generate quantity information when edited
  • The authoring UI now filters by available types only so authoring is more streamlined
  • New dumb column tool which creates parametric solid columns from profile sets
  • Free float is not calculated in work schedules. Thanks SigmaDimensions!
  • Profile set usage attributes can now be edited, including cardinal point and reference extent. Thanks Jesusbill!
  • Support added for importing elements with no representations
  • You can now animate demolition, logistic, and renovation tasks in work schedules
  • You can now bulk copy task attributes to other tasks in the task tree
  • Add support for product inputs for tasks, which can describe logistic movements around a site
  • Generated construction animations now support product consumptions, movement to/from, and multiple processes per product
  • New feature to bulk copy elements to multiple spatial containers
  • New IfcPatch recipe to extract only spaces. Thanks CyrilWaechter!
  • Uncached schedule recalculation is now twice as fast. Nice.
  • Modifications to scheduled dates now cascade through the task tree.
  • Scheduled dates now cascade when dependencies, lag times, and calendars are modified.
  • New feature to see derived global and local elevations of objects
  • Appending from project libraries now supports material properties and styles
  • Improve usability in browsing project library when there is only a single type
  • You can now filter structural loads based on name and inverse references. Thanks Jesusbill!
  • You can now add / remove / edit boundary conditions of structural models. Thanks Jesusbill!
  • Column profiles now auto update when you change material profiles
  • Column profiles now auto update when you switch type
  • MS Project XML conversion now supports blank IFCs or non-existant work plans
  • Work task tree columns are now fully customisable by the user
  • The wall tool is now a more generic, accessible BIM Tool to create any object. Thanks s-leger!
  • Task now auto generate identification numbers
  • Task trees can now be sorted by any column, independent of WBS.
  • Changing cardinal points for material profiles now auto updates shapes like columns and beams
  • Incorrect body contexts coming from Revit are now accommodated even though it’s wrong
  • New developer guide documentation, describing IfcOpenShell and module architecture
  • New documentation for the undo system, since it’s a bit tricky
  • New add application usecase. Thanks johltn!
  • IfcOpenShell now supports transaction based operations with undo and redo.
  • New BlenderBIM Add-on UI undo support for … well, almost everything. Yeah, ctrl-z is a feature.
  • New print IFC debug feature
  • IfcSverchok by_type node is now schema independent
  • Blender materials now explicitly link to surface styles upon import, so managing materials and styles are less confusing
  • New installation documentation for IfcSverchok
  • Mixed geolocation workarounds from proprietary software are now supported
  • New documentation on georeferencing, since it is poorly understood and the variety of proprietary workarounds creates problems for the industry
  • New Windows installation instructions for BlenderBIM Add-on developers
  • Editing object placements can now either cascade or not
  • Changing Blender material names now auto updates both IFC material and surface style names
  • You can now remove styles
  • You can now edit style attributes
  • Styles can now be linked to materials, not representation items
  • New loading bar when importing an IFC.
  • Workspace BIM Tool now adapts based on the active element type
  • Walls can now be extended to any arbitrary cursor location
  • 3D wireframes and curves are now imported
  • Importing 2D elements of anything is now supported
  • New IfcPatch recipe to downgrade indexed poly curves, such as to allow these IFC4 objects to show up in viewers like Revizto / XBim Xplorer / etc
  • New readme on how to use the new BCF 3.0 API. Thanks TestPrab!
  • Copying a spatial element now auto creates a new collection for you
  • The align tool now works on any generic product, not just walls
  • The create file usecase is now fully documented
  • New prototype IfcSverchok API node.
  • New system to auto extract docs and type hints from the API
  • Parametric beams are now also supported via the BIM Tool
  • Parametric members are now also supported via the BIM Tool
  • You can now select all elements of the same IFC class via the IFC Class panel
  • New IFC Debug feature to print resolved object placements
  • New script to generate a demo project library
  • Profiles of more specialised subtypes (like hollow sections) are now supported
  • New feature where you can select related objects from an active type object
  • Property and quantity sets are now shown in alphabetical order
  • New system module to graphically view your IFC MEP systems
  • New FM utility module to easily select maintainable assets using different presets
  • New incomplete IfcFM library to extract and format FM handover related data to replace IfcCOBie
  • New feature to add wall openings at your cursor location
  • New feature to add slab openings at your cursor location
  • Openings are now placed in their own collection to prevent assignment to the spatial hierarchy
  • New workspace hotkey to toggle opening visibility
  • Openings are now auto dissolved when authoring for easier mesh editing
  • Hotkey UI now looks much nicer. Thanks theoryshaw!
  • New IfcPatch recipe to fix duplicate and invalid GlobalIds, typically coming from other BIM apps.
  • New IfcPatch recipe to fix duplicate Revit type objects.
  • Editing voids or dumb walls now auto enable dynamic voids.
  • New experimental serialiser based drawing generation code exists, but disabled by default.
  • Parametric profiles now auto sync depth prior to changes.
  • Parametric profiles now auto recalculate cardinal points when editing in mesh mode
  • Material based surface styles are now supported as a default during import
  • New debug utility to purge all Blender IFC links
  • Creating a new project twice no longer mixes collections
  • Materials (and a potential surface style) are now assigned in Blender if you assign an IFC Object Material
  • Object style colours are now auto synchronised upon export
  • The active object is now still active after assigning a container. Thanks Gorgious56!
  • Material names are now auto synced with style names.
  • Linking a non-existant or non-IFC file is now prohibited. Thanks Gorgious56!
  • Panels which only support IFC4 are now auto hidden in IFC2X3. Thanks Gorgious56!

New fixes:

  • Fix bug where adding types without a material was broken
  • Fix error message when getting psets
  • Fix bug where all meshes were cast to solid by accident. Thanks s-leger!
  • Fix bug where 2D or 1D objects generated an invalid box representation
  • Fix bug where the P6 import module was not shipped
  • Fix bug where you couldn’t delete a quantity from a quantity set
  • Fix bug where unlinking copied Blender objects didn’t work
  • Fix bug where derived grid north was unreadable in the geolocation panel
  • Fix bug where custom pset template properties wouldn’t show up
  • Fix bug in P6 import to exclude Level of Effort activities
  • Fix bug where extrusion detection on voided profiles glitched out
  • Fix confusing transparency attribute in add style API usecase
  • Fix bug where validation errors could be created in IFC2X3 due to missing owners and mandatory attributes
  • Fix bug where absolute coordinates weren’t correctly detected from coordinate lists
  • Fix bug in IfcSverchok where refresh buttons didn’t work
  • Fix bug where bsDD API token refreshing didn’t work. Thanks TestPrab!
  • Fix bug where reloading an IFC file didn’t properly refresh the ID Map without a restart
  • Fix bug where colouring by attributes didn’t work reliably when you pressed undo
  • Fix bug where styles weren’t always present when updating representations
  • Fix bug where all instances change meshes when changing type
  • Fix bug where editing a single material didn’t work
  • Fix bug where reused placements from copied objects led to incorrect locations
  • Fix bug where psets didn’t show up for non element types (e.g. IfcDoorStyle) in IFC2X3
  • Fix bug where editing multiple objects didn’t synchronise changes when exporting
  • Fix bug where covetool didn’t detect skylights properly
  • Fix bug where searching for GlobalId didn’t work if you also used the debug panel
  • Fix bug where date conversions fail if IFC2X3 dates have fractions
  • Fix bug where deprecated functions were used in drawing generation, causing drawings to fail
  • Fix bug where BIMTester attribute and psets checks didn’t work. Thanks Nitschi and dedicos!
  • Fix bug where material profile data was not purged correctly.
  • Fix bug where module data was not fully purged when a new scene started.
  • Fix bug where import filters didn’t properly exclude types and empty objects
  • Fix bug where removing the last object in a container would create an error
  • Fix bug where userdefined object types weren’t set correctly. Thanks myoualid!
  • Fix bug where the pie menu shortcut had a missing module. Thanks myoualid!
  • Fix bug where you had to restart Blender to see changes to custom psets.
  • Fix bug where import process log couldn’t write to a non writable directory. Thanks brunopostle!
  • Fix potential bugs where context could be incorrect during operations. Thanks Gorgious56!
  • Fix bug where doing IfcDiffs didn’t work. Thanks htlcnn!
10 Likes

there is a method for extract(with python) a table with node coordinate and element table with node couple, for FEM program?

Sorry, not yet. We are still building the capabilities of creating the structural analytical model. With this model, it is possible to use the currently unpackaged ifc2ca script to bring it into Code_Aster for certain types of structural analysis. I’m not a structural engineer so I don’t know if it is FEM or another type. Feel free to reach out on https://community.osarch.org and ping the user named “Jesusbill” for help - he is the structural engineer looking at the portion of this code.

BlenderBIM Add-on v0.0.210829 has been released with 153 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 the 2nd birthday of the BlenderBIM Add-on. In many ways, it is also the first birthday, as the entire add-on was rebuilt at the beginning of this year. Despite this restart, the redesign as allowed us to exceed far past was the initial architecture allowed us to do. The work to date has built up a strong foundation for editing across all disciplines, and scale up to bigger models. All the features described below are pushing the boundaries of what is possible with OpenBIM and we are proud to be exploring this territory.

A glimpse of the main tools of architectural native authoring

The main building blocks and project library support are now available for basic architectural authoring. The tools which we expect to see: walls, slabs, columns, beams, doors, window, and furnitures and asset libraries are ready for iterative testing and improvement. Best of all, you can now insert the BlenderBIM Bunny in your projects!

You can download the libraries from here: https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.6.0/src/blenderbim/libraries

IfcClash is back for free clash detection

Clash detection is a vital tool in the BIM ecosystem and unfortunately the IfcClash tool was out of action for quite a few months due to technical distribution problems. These have now been resolved and we’re happy to announce that we now once again have a free and open source clash detection tool. The accuracy of clashes have improved significantly, and IfcClash now works on MacOS, as well as as a standlone app, a library for your own tool, and of course, within the BlenderBIM Add-on itself.

Drastically improved parametric costing and resource management

The interfaces for costing, scheduling, and resource management were reworked, and now more start to integrate with one another. For example, tasks now follow the ICOM model, allowing construction processes to have inputs (e.g. formwork), outputs (e.g. walls and slabs), mechanisms / resources (equipment, labour, materials), and controls (overarching constraints). Costs can now parametrically connect not just to geometric model quantities but to task durations and resource usages as well. Cost rates and schedule of rates are now supported with import and export support, task durations may now be calculated from resource utilisation, productivity rates may auto calculate resource hours, and costs may derive from resource rates. A new formula based UI is also released, to make it easier to type in cost breakdowns and equations.

2021-08-29-152240_525x442_scrot

Free model checking using the new IDS (Information Delivery Specification) standard

Sponsored by the Google Summer of Code programme, one of our two students: Artur Tomczak finalised his work on the upcoming IDS standard. IDS is a free, XML-based industry standard way to do model checking. Model checking is a standard process of large-scale BIM projects, and existing tools are black boxes and are highly reliant on proprietary tools, or non-OpenBIM based processes. The IDS standard by buildingSMART will resolve this, and everybody will have access to free model checkers with fully replicated results. A huge kudos to Thomas Krijnen who helped mentor the project.

IfcOpenShell users now have access to a new IDS library, and anybody can create their own specification using the new IDS webpage. Read more details about the project by Artur here: http://blog.ifcopenshell.org/2021/08/idspy-toolkit-as-result-of-google.html

BCF API v3 support and new test OpenCDE server

Sponsored by the Google Summer of Code programme, another one of our two students: Prabhat Singh finalised his work on the upcoming BCF v3 API and OpenCDE server. BCF is a well established system for exchanging model issues, and is a common offering by web-based CDEs. Most BCFs are currently exchanged using BCF files, but a new OpenCDE specification allows CDE providers to provide a BCF API so that anybody can manage model issues from any CDE provider from their own client.

His API code is now shipped with the BlenderBIM Add-on. In addition, various fixes were made to the existing BCF functionality, and a new OpenCDE test server is now available for anybody wanting to develop OpenCDE apps without the cost of proprietary CDE accounts. Read more details about the project by Prabhat here: https://github.com/TestPrab/GSOC_2021

bcf-diagram

Initial sustainability integration with OpenLCA

OpenLCA is a well established open source LCA analysis system. We’re excited to announce that we now have preliminary integration with OpenLCA. You can connect to an existing OpenLCA IPC server from the BlenderBIM Add-on and run calculations. Although the feature is still incredibly basic, it opens up exciting possibilities in more sustainable design.

So much more

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

All changes

New features:

  • New bunny rabbit furniture asset :slight_smile: It’s the BlenderBIM Bunny!
  • You can now insert doors, and we distribute a sample demo and site library
  • You can now calculate costs from direct resources and indirect task-based resources
  • You can now edit resource base quantity
  • BCF is now available on PyPI! Thanks krande!
  • Choose from project units instead of hardcoded ones for georeferencing map units. Thanks Gorgious56!
  • Resource base costs are now supported with all the features coming from the cost module.
  • You can now edit nested arithmetic cost values by using spreadsheet-like formulas
  • Many more operators now apply to all selected objects insted of one-by-one. Thanks Gorgious56!
  • Cost values are now serialised and shown as formulas
  • You can now count elements, tasks, and resources parametrically for cost items
  • Only equipment and labour resources can now have time-based usages
  • You can now store productivity rates and calculate resource work parametrically based on productivity
  • You can now manage psets on resources
  • You can now parametrically derive task durations from resource utilisation
  • Improve groups and systems interface to be accessible from individual objects. Thanks Gorgious56!
  • IDS code for GSOC is now finalised with IDS schema 0.4.1 implemented. Thanks ArturTomczak!
  • Detect units from project libraries, and convert nested double aggregates
  • Implement new ICOM-based UI for managing process inputs, outputs, and resources
  • Non-rooted subcontract resources are now allowed.
  • Block the user from creating sub resources under a subcontract resource.
  • Simple prototype integration to run an OpenLCA analysis from Blender
  • Project libraries are now sorted alphabetically for convenience
  • Hide types collection when importing assets.
  • Improved file selection filters to filter by the right file type. Thanks Gorgious56!
  • Various code cleanup, optimisations, tooltips, and descriptions. Thanks Gorgious56!
  • Minor iterator optimisation to prevent inverse check for associated materials
  • Rudimentary handling of purging voids and fills
  • Windows now move with openings and walls when toggled.
  • Filtered imports is now much faster and works with omitted aggregates
  • IfcZip and IfcXML can now be set manually, and prevent double loading when importing, which can save ~20 seconds for large file imports.
  • Improve usability by distinguishing disable versus remove icons. Thanks Gorgious56!
  • Work schedule psets are now supported, so you can set work day/week/month durations
  • OpenCDE API now validates data against the schema. Thanks TestPrab!
  • Complete IfcSIUnitName exponents are now available. Thanks CyrilWaechter!
  • Keep active object as active when creating ifc file. Thanks Gorgious56!
  • Keep active object when removing from containers. Thanks Gorgious56!
  • Add tooltip to CopyToContainer Operator. Thanks Gorgious56!
  • IfcCobie : Prevent executing operator if no ifc file. Thanks Gorgious56!
  • BlenderBim : Improve BCF project UX. Thanks Gorgious56!
  • New site project library for stuff like site sheds and cranes
  • Improve UX of task tree by shifting buttons and changing column widths
  • Cost subtotals that are calculated from per X units are now supported
  • Cleanup : Use clear instead of while…remove loop for optimised list refreshing. Thanks Gorgious56!
  • Extract Docs is bundled with IfcPatch module. Thanks Gorgious56!
  • You can now assign rates from a schedule of rates to a cost plan
  • You can now browse a schedule of rates alongside a cost schedule
  • UoM and unit rates are now shown for schedule of rates in costing
  • You can now insert windows in walls.
  • You can now assign / unassign cost items in a schedule of rates to type products
  • You can now add and edit context dependent units including dimensional exponents
  • Import of CSV-based schedule of rates is now possible
  • Half complete “add window” tool prototype
  • Implement metric constraints in the ifcopenshell.api. Thanks bosonprojets!
  • Improve ifc patch arguments User Experience. Thanks Gorgious56!
  • Improved accuracy of boolean modifiers for dynamic voids
  • Demo library now includes a window type. Neat.
  • Walls and slabs (or any vertical or horziontal layer) now auto recalculate origins after editing
  • Adding openings now intelligently detect the shape of the element you are voiding.
  • A Blender material is now always applied even if indirectly applied through a set or usage.
  • New feature to select the type’s Blender object of the active object.
  • New convenience button to add an empty for a type with no representation
  • You can now create shapes of profiles when debugging. Thanks aothms!
  • Bug where auto spatial containment assignment failed when you were not in a container.
  • You can now edit psets of profiles
  • New profile browser with basic profile edit and remove feature.
  • You can now import profile definitions from a library
  • Added some named dimensions for units. Thanks Jesusbill!
  • Implement cost identification numbers and big cleanup to cost schedule UI
  • New utility to get the exponential dimensions of named unit types
  • Implement ability to add SI units
  • New feature to toggle default project unit assignment
  • You can now edit the unit basis of a cost value for a schedule of rates
  • You can now assign resource-based parametric quantities to cost items
  • Implement task-based parametric cost item quantities
  • Changing task scheduled dates now auto updates its related quantity take off data
  • You can now remove cost quantities in bulk.
  • Parametric quantity breakdowns for cost items are now shown
  • Assigning a product to a cost item now also assigns a quantity in one step
  • New interface to view physical products assigned to a cost item
  • Distribution IFC-extended pset definitions for parametric costing and modeling
  • Implement resource quantity sets for parametric quantification
  • Implement task quantity sets for parametric quantification
  • Parametric types can how define a default layer set direction.
  • You can now parametrically create profile / layer based objects of any type, no longer limited to walls, slabs, etc.
  • You can now add and edit monetary units, and basic editing of other unit types.
  • Updating model quantities now auto refreshes parametric quantities in cost schedules
  • Copying an object / class now also copies pset and qtos
  • BlenderBIM and ifcopenshell.api features to enable adding and editing resource time information
  • You can now import a cost schedule from an IFC project library
  • You can now create curve shapes from the debug panel too
  • You can now customise cost category columns in the cost schedule tree
  • Ifc5d can now parse cost category breakdowns in CSV form
  • You can now import cost schedules as CSVs into IFC in Blender
  • New Ifc5D utility for converting and generating analysis of IFC cost data
  • Feature to enable assigning Construction Resources to Tasks
  • You can now import materials from a project library
  • A whole bunch of drawing improvements, though not yet exposed to the user. Watch this space! Thanks aothms!
  • Deleting a material set from a type now also purges usages from type instances
  • New feature to copy the material of the active object to selected objects.
  • Switching BCF viewpoints is now sigificantly faster on large projects.
  • BCF cameras now support global absolute coordinates with a Blender offset
  • Clearer licensing across codebase.
  • New feature to extend columns, beams, and members to a target
  • Units for cost items are now autodetected
  • New utility to derive the unit of a property or quantity.
  • You can now delete unit assignments
  • New unit utility to auto detect SI unit dimensional exponents
  • You can now view all assigned project units
  • You can now toggle whether decomposed elements are parented in blender when editing, so voids/fills etc move with you.
  • Walls are now dynamically voided when joining, so you can join/unjoin voided walls
  • Add new inverse_relationship in selector for bounded by relationships.
  • New BCF-API client and OpenCDE Foundation-API client system. Thanks TestPrab!
  • Add sample docstring and type hints for IfcPatch recipe.
  • IfcClash is now able to be built as an isolated Python binary. Hooray!
  • Using global keyword is not mandatory but may help debugging
  • Add documentation for how to use IfcClash.
  • New hppfcl IfcClash packaged for the BlenderBIM Add-on. New MacOS support.
  • Improve Debug Panel UI. Thanks Gorgious56!
  • Improve UI for multi input string fields. Thanks Gorgious56!
  • New ifcopenshell.geom.tree based broadphase collision for IfcClash instead of aabbtree.
  • Add descriptions to IFC Search function. Thanks chunchk!
  • WIP experimental hpp-fcl and aabbtree-based IfcClash

New fixes:

  • Fix bug where style attributes couldn’t be edited.
  • Fix example and document quirk to prevent memory related bug.
  • Fix warnings when no people or organisations existed.
  • Fix bug where removing material from IfcMaterialList removes all occurences of the material. Thanks Gorgious56!
  • Fix bug where the pset templates with multiple applicable entities only checked the first entity
  • Fix errors if no ifc file. Thanks Gorgious56!
  • Fix errors in console due to accessing empty enum. Thanks Gorgious56!
  • Fix error when trying to select type if type is not set. Thanks Gorgious56!
  • Fix error when adding opening with None object. Thanks Gorgious56!
  • Fix error when filling opening with None object. Thanks Gorgious56!
  • IFC Cobie : Fix Elements not being assigned in selector. Thanks Gorgious56!
  • Fix bug where changing slab layer thicknesses didn’t work if it didn’t have a solidify modifier already.
  • Fix bug where walls now grow or shrink from their origin point.
  • Fix bug where you could accidentally have a layer set with zero thickness which caused object creation to fail.
  • Fix bug where removing objects fails. Now using a breadth-first search and maintain insertion order on remove_deep(). Thanks aothms!
  • Fix bug in work schedule cascading where some cascades wouldn’t work and non-working dates would lead to an infinite recursion
  • Fix bug where editing a schedule finish date by itself wouldn’t work
  • Fix bug where you couldn’t delete non active task columns
  • IfcClash now has logging and fix bug where exclude clash filters on large files was very slow
  • Fix bug where IFC project libraries could not be imported as a file.
  • Fix bug where you couldn’t load the add-on in background mode. Thanks s-leger!
  • Fix bug to prevent users from appending a project library asset twice
  • Fix bug where you couldn’t use userdefined types for type elements
  • Fix bug where wall origin recalculations will shift openings
  • Fix bug where FM types for COBie were not selected properly
  • Fix bug where undoing broke the IFC link for child objects
  • Fix builds to use name “blenderbim” instead of “blender28-bim” which now confuses people since 2.9 is out.
  • Fix bug where materials weren’t created when importing assets from a library
  • Fix error due to trying to patch non-existent file
  • Fix IfcPatch pyinstaller script to make it easier to distribute ifcpatch.
8 Likes

BlenderBIM Add-on v0.0.211031 has been released with 187 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/

Let’s get into the details.

Upgrade to IfcOpenShell v0.7.0, for a 35% - 2,000% (yes!) speed boost and new developer toys

The biggest aspect of this release, which is why we delayed it for a month, was an upgrade to v0.7.0 of IfcOpenShell. This represents a significant impact for developers, thanks to the tireless efforts by aothms. We will now benefit from geometry caching (in future releases), a new drawing generator (WIP), a huge speed boost ranging from 35% to 20 times faster depending on what you’re doing, visualise bounding boxes and fill areas, SVG analysis, and version tags. Users can start to play with the ongoing drawing features in upcoming daily builds, and generally see things faster everywhere.

New testable code architecture

On the Python side, code has been rearchitected to allow for a more robust test framework and UI rendering. For developers, this represents a maturation of the codebase and developer community, including code standards for licensing, QA, style (black), linting, and TDD. Over 800 tests were written for this release with the new architecture, spanning from unit tests to full integration tests. For users, this is largely responsible for the staggering 68 bugs zapped during this release, so users will likely notice less regressions, and that the BlenderBIM Add-on will start feeling more and more like a native authoring tool.

image

Partial project loading support

You no longer need to load an entire project. By enabling advanced mode when importing, you can filter what you want to import, allowing you to load huuuge models much faster and only related to what you’re planning to edit or review. Choose from filtering by location or by type, as well as new collection hierarchies.

Parametric geometry is now default

One of the biggest user impacts when editing is now that parametric geometry is default. You can now push and pull things as a mesh, but under the hood the parametric geometry will be preserved when possible. This leads to much more natural modeling and less paying attention to geometry modes and updating representations. This feature is also a leap of faith in standardised parametric IFC geometry, so keep an eye out for issues!

image

Improved construction scheduling

Construction scheduling continues to improve with bugs fixed around date calculations, rendering animations, real time date visualisation, Primavera P6 XER and resource import support, a new Ifc4D command line tool, improved formwork calculations, and more.

So much more

Other notable improvements include more point cloud support, user UI presets, real time type filter, bulk property and attribute editing, a few MEP system visualisation tools, and upgrades to the ownership and context editing modules. A huge thanks to the growing volume of new contributors who are joining the team and changing the industry. You can too!

All changes

New features:

  • We now support importing 3D annotations, not just 2D ones. Neat.
  • Invalid annotation contexts coming from Revit are now accepted
  • IfcOpenShell validation now handles logical data types. Thanks rbertucat!
  • New feature to draw system arrows showing flow direction and port connections.
  • New MEP utility to select and print debug information about connected system elements
  • Importing resources for XER and XML files from P6 is now supported. Thanks HassanEmam!
  • Optimistically track all object edits whenever you toggle edit mode, not just meshes. Let’s see how this goes.
  • Optimise owner check depending on your implementation and no longer create default users on IFC4. Can result in 50% faster script running on long scripted operations like imports.
  • You can now manually type in start/end dates for construction sequence visualisation instead of clicking the date picker hundreds of times.
  • New UI “persona” presets in preferences. Thanks vulevukusej!
  • Moving grid axes are now synchronised automatically
  • Resize object to storey now works for a variable number of storeys
  • Adding annotation now auto enables viewport decoration drawing.
  • First pass at connecting to new ifcopenshell.draw for drawing generation.
  • New hacktastic IFC patch to fix ArchiCAD spaces being loaded into Revit.
  • You can now split objects using a drawn edge, especially useful when creating slab pour breaks and fixing lazily modeled walls and columns. Thanks Gorgious56!
  • Ifc4D XER import now supports calendars. Thanks HassanEmam!
  • New feature to calculate side formwork, such as for columns.
  • Formwork area calculation now unions objects before remeshing to account for overlapping geometry
  • Types in type dropdowns are now sorted alphabetically for convenience.
  • Spatial elements in the import filter will now be sorted by elevation for convenience.
  • Users copying and pasting via ctrl-c/v will now also copy IFC objects.
  • Using duplicate move linked in a BIM project now also triggers IFC copying
  • BlenderBIM: import IFC PointCloud Representation support. Thanks LaurensJN!
  • Support for importing Primavera XER files for construction scheduling. Thanks HassanEmam!
  • Added IfcTypeFilter feature into BlenderBIM Search module. Thanks chunchk!
  • New feature to show inherited element type psets.
  • Get psets utility now supports getting material and profile psets
  • Get psets utility can now filter only psets or qtos
  • Element get_psets utility now returns the pset ID for convenience.
  • New feature to copy properties from one object to all selected objects
  • Reintroduced feature to copy attributes to selected objects.
  • You can now toggle module visibility to customise your UI. Thanks vulevukusej!
  • Copying parametric geometry from any source now attempts to preserve parametric geometry when possible.
  • Assigning a parametric layer type (for walls for now) now attempts to switch from non parametric to parametric geometry.
  • New feature to conveniently add a default material in a blank project when none exists.
  • The type of mapped representations is now shown in the interface, with an asterisk denoting it is mapped.
  • When updating representations, the existing representation type is prioritised unless you tell it otherwise.
  • Assigning a parametric profile type now auto switches from non parametric geometry to parametric geometry
  • Only show type selection buttons when a type is available.
  • New feature to calculate the radius of a polygonal circle
  • Upgrade to IfcOpenShell v0.7.0. Thanks aothms!
  • New Ifc4D command line interface. Thanks HassanEmam!
  • Adding type empties now adds it to the scene collection for convenience in case your types collection is hidden (which is most of the time)
  • New feature to add psets to all selected objects. Thanks vulevukusej!
  • Documented UX guidelines. Thanks Gorgious56!
  • Documented MacOS build instructions. Thanks m-clare!
  • When assigning types, your preference of dynamic voids are now preserved.
  • IfcOpenShell now supports geometry caching. Thanks aothms!
  • New feature to resize / squash / stretch objects to their storey height. Useful for remodeling IFCs for construction simulations.
  • New utility function to get storey elevations with elevation attribute fallback for more compliant sorting of building storey elevations.
  • Unlinking an object now also unlinks materials and styles too for convenience.
  • New feature to unlink Blender materials and IFC materials
  • Spatial containers are now shown sorted by Z index order for convenience.
  • Building storeys now show a derived storey height so you don’t need to do math
  • You can now copy a representation from one object to another
  • FMHEM classes now updated to latest draft
  • You can now toggle whether element filtering also affects spatial containers
  • Implemented point cloud export function. Thanks LaurensJN!
  • Use context filters during import when possible to optimise import times
  • New support for conversion based units with offsets, like fahrenheit.
  • Support auto detection of unit type when adding imperial units
  • Utility to print out all maintainable assets for FM paper documentation
  • New recipe (and essay) to fix ArchiCAD IFC4 door swings showing up in Revit
  • IfcCSV now supports setting properties to null values. Neat.
  • IfcCSV now supports editing properties that were previously null.
  • Add tooltips to the authoring panel. Thanks maxfb87!
  • You can now clear the active user for ownership history.
  • New usecase for adding conversion based units
  • You can now import and export and clear all IfcCSV attributes. Thanks vulevukusej!
  • Prioritise editing rendering surface styles over shading surface styles
  • New unassign aggregate feature.
  • Spatial containment now distinguishes between direct and indirect containment
  • Removing or changing spatial containers now supports updating more types of collection organisations
  • Maintain active object throughout complex IFC operations for a better user experience
  • Place structural items in collections for new project. Thanks Jesusbill!
  • Fix for structural surface items. Thanks Jesusbill!
  • Allow user to toggle duplicates when getting inverses in IfcOpenShell core.
  • You can now add and remove users for ownership history
  • Optimise create owner history to not rely on a person and organisation lookup, speeding up long procedures
  • Application data in IFC now reflects the latest IFC version tag
  • Removing contexts now also reassign to parent or remove references to the context.
  • You can now edit attributes of contexts and subcontexts.
  • Organisations now support null attributes.
  • Add support for null attributes for people, roles, and addresses.
  • Prevent using pset operators when no template available. Thanks Gorgious56!
  • Remove need for IfcConvert since we can drawing is now part of v0.7.0.
  • Improve UX by blocking the user from creating sub resources under a subcontract resource.
  • Add support for IfcBoundingBox visualisation.
  • New IfcOpenShell context ID filter.
  • Add support for IfcAnnotationFillArea.
  • New support for specifying collection modes.
  • Spatial elements now support 2D representations.
  • Generated construction visibility now works in renders, not just viewport view.
  • Improve UX where active object was swapped when adding voids. Thanks Gorgious56!
  • New feature to see the current frame’s real life date as text during a generated animation
  • Editing psets can now accept user specified data types and auto-detect non-string data types
  • Be more accommodating when fetching properties to allow for users writing incomplete scripts.
  • Resource work duration can now be calculated based on counting produced products.
  • Resource work durations can now be calculated either daily or hourly
  • Optimise update owner history to speed up complex operations
  • Add support for specifying placement matrixes in project units or SI units.
  • New utility to get spatial and object decompositions from any IFC element
  • Create shape debugger now includes time information.
  • Deprecate auto detection of vendor workarounds as no longer necessary.
  • You can now filter imported objects by IFC class when loading a project
  • You can now unload a partially loaded project
  • You can now partially load an IFC filtered by spatial containers.
  • You can now load a project from the project panel.
  • IfcOpenShell SHA is now shown for versioning
  • Deleting openings or voided elements now also remove openings.
  • Non dynamically voided objects now auto update when their opening is removed
  • Assigning an opening now ensures it displays as a wire
  • BIMTester now runs within the BlenderBIM Add-on, implement attribute checking in IDS.
  • Remove create project library ability, as you should create a project first
  • Manual import offsets now apply on object placements for efficiency.
  • Immediately redraw the Library panel on load for improved UX. Thanks Gorgious56!
  • Notify if file already contains library element. Thanks Gorgious56!
  • Improve mesh IFC Representation User Experience. Thanks Gorgious56!

New fixes:

  • Objects now sync spatial hierarchy more robustly on export, and clean the collection tree in case the user messed it up.
  • Fix bug where during import sometimes aggregation collections don’t match object names
  • Fix bug where imported grids were not linked and didn’t auto track edits
  • Fix bug where auto geolocation offset didn’t occur if placements were relative
  • Fix bug where copying a type also copied its type relations which is invalid.
  • Fixing bugs for Scheduling Module IFC4D, where P6XML Parser failing on calendar type. Thanks HassanEmam!
  • Fix regression bug where you couldn’t add a grid.
  • Fix bug where imported types with representations but no instances were not fully linked.
  • Fix bug where switching to an object with modifiers applied would double the effect of modifiers.
  • Fix bug where large resizing of walls could result in broken geometry.
  • Fix bug where copying elements didn’t ensure that material usages were unique
  • Fix terrible bug #1819 where duplicating mapped elements didn’t actually copy the geometry mapping.
  • Fix bug where you could reassign class to another product type and create invalid relationships
  • Fix bug where BCF header file info was not loaded. See #1816.
  • Fix geometry bug for some types of IfcIndexedPolyCurve. Thanks aothms!
  • Fix bug with invalid initialization of local variable “data” in bcf. Thanks Nitschi!
  • Fix bug where auto assignment in the collection hierarchy failed if you had filtered out aggregates and you were assigning a subelement of an aggregate
  • Fix bug where you couldn’t bulk copy non-geometric elements to other spatial containers
  • Fix bug where when deleting representations it could sometimes overreach and delete geometric, style, or layer data of other elements.
  • Fix bug where copying objects may sometimes result in incorrect location in the Blender collection tree
  • Fix bug where copying objects did not necessarily retain the existing context assignment
  • Fix minor bug where Python warnings showed up when delete operations were called
  • Fix bug where importing multiple assets sharing an already imported material fails.
  • Fix bug where the derived placements interface didn’t take into account rotations
  • Fix deep magick bug where copying elements without having one of them active didn’t actually copy them in IFC too
  • Fix bug where you couldn’t filter imported subelements without also selecting their parents
  • Fix bug where copying elements shared a placement. This fix speeds up copying parent elements in the decomposition significantly, like when copying a storey.
  • Fix bug where copying a container also copied its contents
  • Fix bug where duplicating a collection messes up the collection tree.
  • Unassigning the last unit now cleans up empty unit assignments
  • Changing aggregation now ensures spatial containment is mutually exclusive to prevent invalid IFC data
  • Assigning aggregations now protects against various invalid aggregation combinations
  • When assigning containers, ensure aggregates and containers are mutually exclusive
  • Fix bug where assigning a spatial container didn’t work with non local placements
  • Changing spatial container now guards against invalid containment operations
  • Unlinking elements is now a bit more stable.
  • Upon element removal, empty aggregates prioritise null if possible. Fixes a variety of invalid IFC bugs.
  • Fix bug where removing addresses and roles could leave other elements in invalid states
  • Fix bug. Removing an organisation now properly handles references appropriately.
  • Fix bug where removing a person no longer has the potential to leave files in an invalid state.
  • Fix bug where 2D contexts were not created with the right dimensionality.
  • Fix bug where you could accidentally add a context other than what you selected in the UI
  • Fix possible invalid scenarios when adding fillings. Thanks Gorgious56!
  • Fix error when displaying a selected but inactive object’s properties with the pin feature. Thanks Gorgious56!
  • Fix error when filling has no IFC type. Thanks Gorgious56!
  • Fix bug where you could add a filling twice or to multiple openings.
  • Fix bug where you could add an opening twice to the same element.
  • Fix bug where copying an opening didn’t copy relevant boolean modifiers too.
  • Fix bug where copying a filled opening would create an invalid relationship
  • Fix bug where structural member data was not updated correctly.
  • Fix bug where demolition animations were not generated properly.
  • Fix bug where nested task resource-based durations failed to calculate
  • Fix task duration calculation bug where hourly work greater or equal to 24 hours were incorrectly parsed
  • Parametric object gizmo scale now follows scene unit, and fix miles and thou-inch units. Thanks Gorgious56!
  • Fix bug where assigning a new container would shift object placements incorrectly due to SI unit conversion
  • Fix bug when shifting object placements and their children.
  • Fix bug where IFC patch didn’t work on case insensitive file extensions
  • Fix bug where filtering did not work for indirectly spatially contained elements
  • Fix bug where aggregates break with filtered elements during import.
  • Fix bug where editing styles didn’t work if factors were stored instead of RGB colours
  • Fix bug where openings were not unlinked or renamed if they were removed from a non-dynamic object
  • Fix bug where removing an opening might remove an element twice
  • Fix bug where project libraries were not legal.
  • Add transaction support for adding elements. This fixes a variety of undo bugs.
  • Fix bug where project library browser could self reference.
  • Fix bug where element replacement would sometimes fail leading to various problems.
  • Fix typo in material style assignment code. Thanks Gorgious56!
  • Fix bug when copying objects, don’t copy their decomposition to prevent invalid IFCs.
8 Likes

Hi, I’m trying to import an IFC-file made in Solidworks to Blenderbim but I get the following error:

TypeError: bpy_struct: item.attr = val: enum “SQUARE_METER” not found in (‘NANO/SQUARE_METRE’, ‘MICRO/SQUARE_METRE’, ‘MILLI/SQUARE_METRE’, ‘DECI/SQUARE_METRE’, ‘CENTI/SQUARE_METRE’, ‘SQUARE_METRE’, ‘KILO/SQUARE_METRE’, ‘square inch’, ‘square foot’, ‘square yard’, ‘square mile’)

I was wondering if it has something to do with how the word “meter” is pronounced differently in American and Australian english?

Hello all, Im trying to import an ifc file from revit and it keeps importing without beam and ceilings. I tried ticking property sets checkbox and they import with half assed boolean operation however maintains some model parts.
please any advise? im probably doing something wrong

Hello, I am so extremely happy this exists and I am trying to see just how much of my workflow I can move to open source tools now! One issue I’m currently running into is that I can’t seem to import any schedule files into my project. I’m on version 3.0.0 of Blender and 0.0.211031 of BlenderBIM.
Here’s my error logs

bpy.ops.import_p6xer.bim(filepath="C:\\xxx.xer")
Python: Traceback (most recent call last):
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\bim\module\sequence\operator.py", line 1117, in execute
    p6xer2ifc.execute()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifc4d\p6xer2ifc.py", line 94, in execute
    ifcCreator.create_ifc()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifc4d\common.py", line 36, in create_ifc
    work_schedule = self.create_work_schedule()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifc4d\common.py", line 45, in create_work_schedule
    return ifcopenshell.api.run(
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\api\__init__.py", line 46, in run
    result = usecase_class(ifc_file, **settings).execute()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\api\sequence\add_work_schedule.py", line 26, in execute
    work_schedule.CreationDate = ifcopenshell.util.date.datetime2ifc(datetime.now(), "IfcDateTime")
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 121, in __setattr__
    self[index] = value
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 160, in __setitem__
    raise ValueError(
ValueError: Expected EntityInstance for attribute IfcWorkSchedule.CreationDate, got '2021-12-27T23:39:30.815986'

location: <unknown location>:-1
bpy.ops.import_msp.bim(filepath="C:\\xxx.xml")
Python: Traceback (most recent call last):
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\bim\module\sequence\operator.py", line 1117, in execute
    p6xer2ifc.execute()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifc4d\p6xer2ifc.py", line 94, in execute
    ifcCreator.create_ifc()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifc4d\common.py", line 35, in create_ifc
    self.work_plan = ifcopenshell.api.run("sequence.add_work_plan", self.file)
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\api\__init__.py", line 46, in run
    result = usecase_class(ifc_file, **settings).execute()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\api\sequence\add_work_plan.py", line 21, in execute
    work_plan.CreationDate = ifcopenshell.util.date.datetime2ifc(datetime.now(), "IfcDateTime")
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 121, in __setattr__
    self[index] = value
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 160, in __setitem__
    raise ValueError(
ValueError: Expected EntityInstance for attribute IfcWorkPlan.CreationDate, got '2021-12-27T23:33:39.032755'

location: <unknown location>:-1
bpy.ops.import_p6.bim(filepath="C:\\xxx.xml")
Python: Traceback (most recent call last):
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\bim\module\sequence\operator.py", line 1139, in execute
    msp2ifc.execute()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifc4d\msp2ifc.py", line 52, in execute
    self.parse_xml()
  File "C:\Users\xxx\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\blenderbim\libs\site\packages\ifc4d\msp2ifc.py", line 70, in parse_xml
    self.project["Name"] = project.find("pr:Name", self.ns).text
AttributeError: 'NoneType' object has no attribute 'text'

location: <unknown location>:-1

Is BlenderBIM tripping over those decimal seconds in the IfcWorkPlan.CreationDate?

Sorry on holiday right now but at a glance I suspect you are trying to import scheduling data into an IFC2X3 project. However, currently we only really support IFC4 (since IFC2X3 4D+5D is really undeveloped). You can also auto migrate IFC2X3 projects automatically to IFC4 using the IfcPatch tool (included in the scene properties as a GUI) using the Migrate recipe, specifying ["IFC4"] as the arguments.

1 Like

@3DWizzard and @Roggii cheers, can you please help submit a bugreport to Github? https://github.com/IfcOpenShell/IfcOpenShell and I’ll see what I can do.

Hey Guys!

I was wondering, wouldn’t it be more efficient to do a FreeCADBIM instead of a BlenderBIM?
This because FreeCAD already has dedicated documentation capabilities.

I ask this because I’m wondering if it’s possible to rally-up devs and coders to make a sort of open-source free alternative to “CYPE architecture” which is a free IFC builder/modeler with a Revit/ArchiCAD like interface and workflow. but it’s useless because you have to be connected to the internet to use this tool (they have an entire ecosystem around this, awesome but again useless because you have to be online for this)

I know it’s a very very big ask. But I also think that with the community we have available now we should make a start towards developing an Open-Source BIM modeler in the form of an IFC modeler/builder. I am just a BIM Designer/CAD drafter myself so I’m not a coder. So although I don’t exactly know how much work it is, I do recognize that it’s a very very huge ask.

My general idea would be:
Move BlenderBIM development towards FreeCAD to create a dedicated IFC Modeler/Builder Documentation app, in combination with your Blender IFC importer.
From there on dedicated libraries (Doors, windows, curtain walls etc.) could be further developed

Of course, it would be nice to have everything within Blender, but for now, I think that it’s more efficient to use Blender as the Rendering solution for IFC files.

Here’s a link to another forum topic I just started:

I’m very curious to see your opinion on this Dion, and again thanx for the awesome Blender Add-On

1 Like

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

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

  1. Two geometric paradigms are better than one.

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

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

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

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

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

  1. We actually work together a lot with FreeCAD already

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

  1. We use a different paradigm for drawings

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

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

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

6 Likes

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

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

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

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

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

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

Again thanx for the detailed replay.

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

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

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

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

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

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