Layered walls in BlenderBIM

edited October 2020 in General

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

Revit Blender

«1

Comments

  • edited October 2020

    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.

    theoryshawLaurensJN
  • 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.

    LaurensJNbitacovir
  • 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.

  • edited October 2020

    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:

    bitacovirstephen_lcarlopavCyrilJanFJQLMeetlattheoryshawdimitarJesusbill
  • 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.

    Meetlat
  • @Darth_Blender said:
    Could this issue be resolved with Sverchok?
    Would there be a way to do something similar to the blenderbim dumbwall but with layers?

    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

    • modelling the complexer intersections (three walls in one corner for example) with sverchok will get complex rather quickly
    • you will either have to do the whole model in sverchok, or bake your walls in order to, for example, add windows
    • baking parametric objects out of SV is not currently supported very well, you usually export "dumb" meshes, which will be hard to work with later

    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.

    theoryshawMeetlatDarth_Blender
  • @JanF said:
    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.

    Yes, this would be awesome, however, just simply reflecting the layers visually in section/plan would be a huge improvement, short of booleans/intersections.

  • edited November 2020

    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.

    Meetlat
  • 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.

    CyrilMeetlat
  • 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.

    MeetlatbrunopostleduncanJesusbilltheoryshawLaurensJNCGRCoen
  • 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.

    LaurensJNduncanCGRCoen
  • @Meetlat

    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.

    Any progress so far? :-)

  • @Meetlat indeed the function is completed :) Now we need libraries!

    Darth_BlenderCoencsimeonRoel
  • @duncan

    Have you seen this?

    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.

  • edited April 2023

    @Moult said:
    @Meetlat indeed the function is completed :) Now we need libraries!

    @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.

  • @theoryshaw said:
    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? ?

  • edited April 2023

    Can I make some layered wall types then?

    ... you can still define them however.

  • @Coen said:

    @theoryshaw said:
    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? ?

    Yeah not sure to tell you the truth.

    Ace
  • Yeah not sure to tell you the truth.

    Drag Racing

    theoryshawAce
  • edited April 2023

    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:

    • The origin is on the "lower-left" corner of a mesh (on the outer face), wall length is measured on positive X and all other orientations. (Walls along negative X are walls rotated 180 deg.)
    • Walls with layer sets do not currently have their own representation, they are shown without the layers
    • Blender BIM handles walls by generating a mesh with the width described by it's type class and the length and height given in the IFC parameters. The mesh geometry is drawn accordingly, while every object is scaled at X/Y/Z=1/1/1 and only rotation is applied at the object level
    • Every time a wall is edited from the 'Object' panel it is regenerated
    • Any wall mesh geometry -eg. triangular pediments or walls with openings- as long as one, the outer face is on the XZ plane


    See the Geometry Node setup here:
    https://blenderartists.org/t/geometry-notes-to-slice-a-cube/1461588/8?u=csimeon

    Limitations:

    • Cannot yet handle miters, at corners between wall elements
    • Cannot yet handle rotation angles on X, meaning non-vertical walls (Z rotations work fine!)
    • Cannot yet handle alignments other than outer face of wall

    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

    theoryshawcvillagrasa
  • This is awesome!
    Here's some related stuff, you might be interested in, as well: https://github.com/IfcOpenShell/IfcOpenShell/issues/1227

  • edited April 2023

    I believe the reason this is not very extensively implemented are:

    1. There are many layer usage details to account for, such as axis offsets, negative direction sense of layers (straightforward, but people forget about these)
    2. Walls can curve and slope (e.g. circular walls, angled walls)
    3. Wall can have holes in them.
    4. Walls are joined to other walls. (mitred corners is only one option out of many) ATPATH joins are a bit special compared to ATEND/ATSTART.
    5. Walls may be joined to other walls that are not parametrically layered. What happens then?
    6. Walls may be joined with a priority, and thus layers of the other wall need to overlap this wall (therefore the clipping curve for the connection relationships needs to be correct too) - I believe this is possibly the hardest aspect to get right.
    7. 3D booleans are expensive.
    8. Joins may not be through the entire height of the wall (e.g. the join may only be partway through the height)
    9. Many tools make mistakes with the axis representation (e.g. stops and starts at openings in the case of Revit)
    10. Junctions between AXIS2 and AXIS3 layers are also additionally more complex as they must be resolved in 3D (e.g. layered wall joining layered roof / slab / insulation above).

    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.

    paulleetheoryshawcarlopav
  • @Moult said:
    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.

    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 :)

Sign In or Register to comment.