Layered walls in BlenderBIM
Hello all!
Today - I'm a very new user - I tried the BlenderBIM add-on for Blender. It's awesome! I'm using multiple BIM programs to explore their integration with IFC.
Right now I am exploring the possibilities of BlenderBIM. Seeing what is already implemented and what is not. One thing I was wondering if it exists, is the possibility to have a wall structure of multiple layers (say - 100mm concrete; 100mm insulation and 150mm concrete again). I made a test model in Revit, exported it to IFC and compared this to the same model imported to Blender and then exported to IFC again. When I compare both IFC files in Solibri, it seems that the material 'list' of walls is missing in the blender IFC model (see images).
I was trying to find it in the documentation, but I am not 100% sure where to look. You all would be of great help!
Best,
Laurens
Comments
+1
There is multiple ways to store materials in IFC. See wiki : IFC materials



eg. here is a 3 layer wall of plaster/insulation/concrete (also initially exported from Revit initially) :
Issue is that they currently do not have consequence on geometry representation neither in 3D view or in plan view.
IfcMaterialList is the worst way to store material as there is no relation with geometry. It has been deprecated in IFC4.
IfcConstituent is hard to deserialise as you get only fraction representing each material.
Currently the easiest to deserialise is IfcMaterialLayer(Set) and elements composed of multiple elements.
Material info are also supposed to be stored but Revit currently don't. See issue #153. From ArchiCAD you currently get something like this :
Still a lot of work to do in this area.
NB : colors you see in last example from ArchiCAD is related to styles. Not materials unfortunately…
Warning : I might be wrong or not precise enough in my answer on some point. I hope Dion or anyone which have another part of knowledge on this topic will correct me where necessary.
Materials in IFC need some love. Everybody agrees it has issues, but solutions haven't been made yet. I'm working through a proposal, but it'll take time for this to filter down to users.
Materials aside, the implementation for layers "works" in that it is technically possible in the BlenderBIM Add-on. However, I think it is highly immature and needs an overhaul in the material system. Currently the method to determine whether you're assigning a layerset vs a single material is done in the object properties tab. It is on the to-do list to spend a release with a focus on materials.
Thanks both of you for the answers! I did some additional research and found that there are many others with the same problems.. I guess what this person https://www.linkedin.com/pulse/spouwmuren-bim-teun-de-vries/ has some explanation on how to go around as well. It is in Dutch but google translate works fine :) Making building element parts might be the way to go - for now. Of course it has its own advantages and disadvantages.
Could this issue be resolved with Sverchok?
Would there be a way to do something similar to the blenderbim dumbwall but with layers?
A heads up that as of this commit (https://github.com/IfcOpenShell/IfcOpenShell/commit/30afd6c95b214956e687a4872fe0d5c5e821b181) some progress is being made to have much better material support:
Wow. Do you plan on implementing auto booleans/intersections based on material properties as Archicad does? I didn't even dream this to be possible.
BlenderBIM has nothing to do with geometry, it's all about ifc classification. You are free to use any geometry and modifiers set to do so.
I don't entirely agree with you, it already provides much wider spectrum of functions than just ifc classification, one of them being also the creation of basic geometry (dumbwall etc.). Of course the general idea that a user can model the geometry in any way he likes is right, however I also believe that we should provide a "standard" way of doing things, so that especially new users and generally people not so interested in trying a million different ways to do the same thing can start using the tool quickly.
As others mentioned, there are more ways to approach this, some using geometry (i.e. modelling the layers separately) others using for example properties - you can read about all that in the linkedin post above.
Currently it is already possible to take the modelling way and yes you could use SV for that. There are however issues
I'm trying different approaches as well, but also kind of waiting what becomes of the new material feature and how the "native ifc" support develops.
Yes, this would be awesome, however, just simply reflecting the layers visually in section/plan would be a huge improvement, short of booleans/intersections.
It is exciting to see the 'Priority' attribute there!
Can the current IFC schema codify this 'priority' attribute?
If not, it would be nice to work with Freecad to develop a standard along these lines.
Cool!... i see that it is.

https://standards.buildingsmart.org/IFC/RELEASE/IFC4_1/FINAL/HTML/schema/ifcmaterialresource/lexical/ifcmateriallayer.htm
To provide proper support for material colouring relies on support of IfcMaterialLayerSetUsage - currently the "usage" isn't supported. It's quite a bit more work. IfcConvert also has features to split walls up into coloured layers.
I think with some clever shader tricks there is a way to build this to support coloured layers, regardless of whatever geometry techniques you use to model the wall.
A material constituents UI is now done, and now export support is also done.
Still to-do: import support, profile sets, sync material assignments when creating objects, and making the styled items compatible with the new system.
Great Job! Can't wait to try the completed function. If the material/wall function is complete I'm planning to make a library of wall types focused on the Dutch/Belgium market.
@Meetlat
Any progress so far? :-)
@Meetlat indeed the function is completed :) Now we need libraries!
Have you seen this?
@duncan
That's really cool, wondering how that tool will work with resizing and modifyng Booleans/IfcOpeningElements. It would be so amazing if the brickwork patterns/bond could be recalculated from modifying an IfcOpeningElement.
@Moult :

How is it completed? I have made an ifcWallType that has a material layer set. How do I get the visual representation of layers?
Can I make some layered wall types then? I would gladly share as libraries.
Unfortunately you cannot visualize layers yet
https://github.com/IfcOpenShell/IfcOpenShell/issues/1227
I don't get why so many IFC viewers are not capable of doing this... Is it because there's no relationship being defined between the different layers? Intuivelity it should be something very straighforward I think? ?
... you can still define them however.
Yeah not sure to tell you the truth.
In Blender I have made a geometry node group, that can brake up a 'Wall' into layers.
Based on the way Blender BIM generates walls, a 'Wall' mesh has the following characteristics:
See the Geometry Node setup here:
https://blenderartists.org/t/geometry-notes-to-slice-a-cube/1461588/8?u=csimeon
Limitations:
To do:
1. Query the Ifc database for thickness of layers, how can I pass the thickness values of of the wall layer set as input parameters to the geometry node? < HELP! with this one please, preferably as a variable in Blender not reading the Ifc file.
2. Edit the Geometry Node Group, to represent different layers, using the Ifc material and matching to a Blender Material.
3. Add a button [Represent wall layers] to the object menu for any wall with Ifc layered walls (for active object only)
4. Interface with Blender BIM code, in regenerating a wall when the Ifc values are edited, a wall that has layers to be drawn with layers when edited automatically
5. Add a button to add layers to all selected walls with Ifc layers (not just the active) and one to select and represent layers for all layered walls
This is awesome!
Here's some related stuff, you might be interested in, as well: https://github.com/IfcOpenShell/IfcOpenShell/issues/1227
I believe the reason this is not very extensively implemented are:
That said, I think we're close to getting a rudimentary implementation in that accounts for 1, 3, 4, 5, 7, and 9.
Note that there is nothing special here about how the BlenderBIM Add-on defines walls: we define them the way IFC defines standard case walls.
...
Curious to learn more, or any pointer to, what are your solutions to these problems.
In FreeCAD, there is something simple. E.g. walls with multiple continuous segments with identical layers would works; window / door opening works etc. Some of other problems you pointed out seems common to either systems.
Thanks :)