BlenderBIM - Parametric Based IFC Types (Doors/Windows etc).

Hey I was wondering if others with Revit/Blender experience could help me out a bit. I'm coming from a background of using both Revit (Professional practice) and Blender (Hobby VR). Knowing the strengths and weaknesses of each, I was wondering if anyone could point me to an approach to developing IFC Class Type's (Think Revit Families) for items like doors/windows that are best suited parametrically. I know from a surface level skim that this may be something the the addon Archipack could provide but I was hoping to leverage the communities experience in understand what other alternative approaches there are. This isn't intended to be a 'I want a Family Based editor in Blender' just an open discussion on how best 'parametric' assets can be created. I'm well versed in using blender to create 'types' and understand the approach taken by BlenderBIM with respect to wall creation (big fan) but just wondered how this extends to custom assets that work best parametrically (dare I say Blender nodes?)
Look forward to hearing from everyone!

Acepaullee

Comments

  • Hey Jan, I've poked about a bit with geom nodes so happy to continue down this route if it's the best way. In terms of
    embedding this into a Project Family (again thinking of making this more accessible to non-technical people) say you had a door that varied in height, 800x2100, 900x2100 and 1000x2100 (e.g. 3 'instances of the same 'type') then would this be best modelled in a .blend file using geom nodes and then saving this to an asset library (which would then need to be shared as a 'common' asset library). This is where it gets a bit hazy for me. Would we then need to export each 'instance' as an IFC then open up each ifc export and then merge into one file and associate via BlenderBIM to correct class then re-export IFC with all 3 instances in. Then in a new blender file via BlenderBIM you would then load that IFC via Project Library to use those three instances?

    This is ultimately where my query comes from, if say I need to create a fourth instance of that door, e.g 850x2200 would I have to repeat the process above just to get a fourth instance? I was wondering if there is a simpler way to achieve what in a Revit Family would be a simple case of tweaking the parameters. I only ask as parametric mindset has been done for walls via the material thickness that allows for the wall depth to be edited after the layout has been drawn.

    Again interested in hearing people's thoughts on the above.

  • edited November 2021

    I was wondering if there is a simpler way to achieve what in a Revit Family would be a simple case of tweaking the parameters. I only ask as parametric mindset has been done for walls via the material thickness that allows for the wall depth to be edited after the layout has been drawn.

    Archipack PRO has parametric walls very similar to Revit, very easy in use. It also stores the wall types you defined just like in Revit. And keeps track of the dimensions in the Blender View. It only costs €60.

    It really is a great tool, I find some workflows in it way faster than Revit. I think Archipack PRO is selling itself short because there are very few good tutorials.

    Archipack PRO has parametric windows and doors too, but I'm not experienced enough in Blender to make my own custom parametric doors and windows.

    If you really want full parametric control and flexibility of geometry, I don't know if it's an option to learn the Blender API.

  • edited November 2021

    @BenSmith said:
    ...
    This is ultimately where my query comes from, if say I need to create a fourth instance of that door, e.g 850x2200 would I have to repeat the process above just to get a fourth instance? I was wondering if there is a simpler way to achieve what in a Revit Family would be a simple case of tweaking the parameters. I only ask as parametric mindset has been done for walls via the material thickness that allows for the wall depth to be edited after the layout has been drawn.

    Again interested in hearing people's thoughts on the above.

    Ok now I think Iunderstand better what you mean.
    See also: https://community.osarch.org/discussion/488/making-blenderbim-revit-friends
    https://community.osarch.org/discussion/577/blenderbim-workflow-to-bring-in-ifc-assets
    https://community.osarch.org/discussion/732/import-profile-assets-into-blenderbim

    If you are talking about the ifcLibrary workflow, my understanding is that it currently works like this:
    1. you have one .blend file as your object library
    ** This file has an Ifc project structure with IfcElementTypes
    ** It also has the source parametric objects
    2. you have a second .blend file with your project.
    ** the ifc export from the first file is linked as an IfcProjectLibrary
    3. everytime you need a new "Type" (using Revit terminology, "instance" in yours) you open your library .blend, change your parameters, "bake" the geometry and classify it as a new IfcElementType. Export the ifcProjectLibrary
    4. you reaload your ifcProjectlibrary in your project .blend and append your new "Type"

    If you wanted to be really cool, you could build your library with IfcNodes for Sverchok (https://blenderbim.org/download.html), but I still haven't figured out how to create even a simplest wall with them..

  • Would love to see parametrics stored in the IFC file.
    I feel BB's functionality should always be informed by the IFC format.
    If a schema doesn't exist for a certain function, i think one should be hacked. If this 'hack' is picked up in other ecosystems, like Freecad, then we can make an argument to BuildingSmart to make it a more official standard--in essence, a decentralized approach to standards.

    Coen
  • @theoryshaw said:
    Would love to see parametrics stored in the IFC file.
    I feel BB's functionality should always be informed by the IFC format.
    If a schema doesn't exist for a certain function, i think one should be hacked. If this 'hack' is picked up in other ecosystems, like Freecad, then we can make an argument to BuildingSmart to make it a more official standard--in essence, a decentralized approach to standards.

    Yeah many of us do, but also @mdradvies has made some really good points in this discussion
    https://community.osarch.org/discussion/488/making-blenderbim-revit-friends
    seeing how archicad gdl objects are plagued exactly by the problems he is describing. By the way did you manage to organize the meeting? Did anything come out of it?

  • Unfortunately, we did not meet... was unable to align on times. I kinda dropped it, as I think public discussion on forums like these is more important--as everyone can read the logic and the augments behind certain proposals.
    Also, I'm a big proponent of just doing it, and not asking for permission. :) A lot of good ideas are squashed because peeps feel they needed permission from someone. That's why I love open source-- just do it, and try to get someone to use it and riff off of it. Rinse and repeat.

  • edited November 2021

    The point with parametric approach in openings lie in level of detail required.
    When it comes to a "simple" window, things are pretty well defined in ifc scheme, where you may use width + height and foils location and size.
    But as soon as you get a bit closer than "dumb" representation, you'll quickly realize that the data model grow exponentially to support every cases, eg:

    • what about windows on curved (2d / 3d) walls ?
    • what about aluminium profile shape for each foil part ?
    • shape, type , location of handle(s) ?
    • opening direction / side / method ?

    and so on ..

    Basically ifc was initally ment to provide "dumb" representation of standard cases of straight windows on straight walls. When you take a closer look at implementation for let's say a window crossing a corner of a wall in "industry standard" software you'll see a huuuuuge gap between defined data model and real-world needs.

    In order to "solve" such complex objects, ifc standard took a more pragmatic approach by allowing full detailled custom mesh.

    So, do we still need a common data model ? Definitely yes !
    But in order to make it possible the data model has to assume a limited level of detail so it still is user friendly.

    CadGiruCoenNigelGorgious
  • I'll take a further look at Archipack PRO, but my preference would be develop a solution that is native to Blender/BlenderBIM without requiring users to purchase an addon to do actions required for authoring BIM in practice. My limited understanding of the full IFC structure and Pset's gives the impressions there are some parameters you could use to define the assets key geometrical dimensions e.g. nominal height and width. The issue is for a 'smart' blender asset, using the Archipack screenshot by Coen, additional association of the dim's to parameters would then enable the parameter to drive the assets dim. For example you may have additional parameters to drive the width of the window frame thickness, currently I can't see a native way of doing this (I'll look into the addin). I think the approach of having a separate .blend file that contains the 'baked' geometry makes sense, it's just a parameter driven approach that is native, might be best suited by Blenders Geometry nodes. The only challenge is this is quite complicated for people from non-visual coding backgrounds (harder to drive adoption away from something like Revit). I believe I get most of the points made you made Stephen, it's whether we can make a Custom Pset in BB where users can create additional geometrical dim properties that drive geometry node values in the Blender Asset library .blend file. It's complicated but may provide a solution...I will admit I'm definitely not an expert on IFC not geometry nodes but unless anyone else has any alternative thoughts this might be worth investigating further!

  • edited November 2021

    there's also something like Geometry Sketcher, that could be a type of parametric editor--similar to Revit's family editor.
    Is built on Solvespace.

  • edited November 2021

    For parametric 'families' maybe take a look at the spreadsheet interface of Freecad. This example video is a good intro..
    BTW we might here be touching some of the fundamental differences between CSG modeling and mesh modeling? From Wikipedia, Blender:primarily a surface mesh editor, but capable of simple CSG using meta objects and using the Boolean modifier on mesh objects.

    Fpar.png 191.1K
    paullee
  • edited November 2021

    I created a demo of a library sverchok blend file to test the workflow described earlier:

    you can play with it here:
    https://github.com/JanFilipec/Sverchok-Tutorials/tree/main/Sverchok ifcProjectLibrary
    @stephen_l Also as a reference to the discussion about the nodes vs code, this is the node-script for the sofa:

    using one "group" for the pillows.
    @Moult how can I update a type in an existing file from an updated project library so that the placed instances are updated? (for example I want to switch a 3 pillow sofa for a 4 pillow one with the same size)

    CoenCadGiru
  • @CadGiru said:
    For parametric 'families' maybe take a look at the spreadsheet interface of Freecad. This example video is a good intro..

    Maybe better FreeCAD Arch/BIM Workbench wiki and @yorik video on ArchWindows (Door) ? :)
    https://wiki.freecadweb.org/Arch_Window

  • @BenSmith said:
    I'll take a further look at Archipack PRO, but my preference would be develop a solution that is native to Blender/BlenderBIM without requiring users to purchase an addon to do actions required for authoring BIM in practice. My limited understanding of the full IFC structure and Pset's gives the impressions there are some parameters you could use to define the assets key geometrical dimensions e.g. nominal height and width. The issue is for a 'smart' blender asset, using the Archipack screenshot by Coen, additional association of the dim's to parameters would then enable the parameter to drive the assets dim. For example you may have additional parameters to drive the width of the window frame thickness, currently I can't see a native way of doing this (I'll look into the addin). I think the approach of having a separate .blend file that contains the 'baked' geometry makes sense, it's just a parameter driven approach that is native, might be best suited by Blenders Geometry nodes. The only challenge is this is quite complicated for people from non-visual coding backgrounds (harder to drive adoption away from something like Revit). I believe I get most of the points made you made Stephen, it's whether we can make a Custom Pset in BB where users can create additional geometrical dim properties that drive geometry node values in the Blender Asset library .blend file. It's complicated but may provide a solution...I will admit I'm definitely not an expert on IFC not geometry nodes but unless anyone else has any alternative thoughts this might be worth investigating further!

    I think after all this time I finally understand what you mean. You are trying the same approach as @theoryshaw of roundtripping ? I find it hard to explain without resorting to Revit analogies.

  • edited February 19

    I know there is the possibility to create parametric IfcDoor/IfcWindow now.

    @Ace has great tutorials on youtube on how to create a Custom window.

    Is there a resource somewhere on how to model a door in a convenient way from an AEC perspective?

    steverugiAce
  • @Coen said:
    Is there a resource somewhere on how to model a door in a convenient way from an AEC perspective?

    It's on the list Coen

    Coen
Sign In or Register to comment.