BlenderBIM: Wall openings for custom windows and doors (collection instance)

Hi all,
I did a quick search through the forum and the wiki and I think this isn't covered yet. I'm diving a bit deeper into the BlenderBIM add-on and am making my first model! It's going to be a Historical BIM of some cultural heritage in Slovenia.

However, I stumbled upon a little problem. I made some custom window. As I do not want to change every window separately when I make changes to this custom window, I add it to the building model as a collection instance, a bit like the Revit Family idea. However, these collection instances do not work with the BlenderBIM Add Opening command, that connects these to another element and uses a boolean difference to create an opening for the window. I did a little search in the source code and get why this happens: the command searches for any IfcOpeningElement children. As collection instances do not have children at all, this is not working. Only, I have no idea how to solve this. Does anybody have suggestions on how to solve this? How are you creating custom families for your models?

Comments

  • In IFC (and therefore in the BlenderBIM Add-on), when you want to define a geometry once, which is then used multiple times, you simply reference the same representation multiple times. This is known in IFC as a "mapped representation". In Blender, you do not need to create a collection instance. Instead, just create a single model as you will, and then use Alt-D to create a linked duplicate. Then, when you edit one, all will change.

    If it irks you to not have a single "reference" object that is like the family definition, basically in IFC this is optional. If you want to, you can create an IfcWindowType, and let that store your "reference" object.

    To "group" the opening to the window, you can make it a parent. Select the opening, then select the window, then press Ctrl-P to set the parent to the object. Then, when you move the window, the opening will move with it. You can see this example in the "Dumb Window" object.

    tlangMohammedSpichosanBedsonThinkWithP_body
  • Thank you @Moult , that works great! I did not know that was possible too. It's good that it only duplicates the objects geometry and not the object itself, so I can parametrize it, that is exactly what I want.

  • I didn't understand the explanation, I know Alt+D and parenting functionality in Blender, but how does roundtripping work with IFC?
    Is it possible to store the 'parametrics', if that's a word in the IFC file of a IfcWindow + IfcOpeningElement?

  • An IFCOPENINGELEMENT is connected to a IFCWALL via IFCRELVOIDSELEMENT...
    the IFCWINDOW, in turn, is connected to the IFCOPENINGELEMENT via IFCRELFILLSELEMENT
    I would imagine, since this relationship is codified in the IFC file, that it could be recreated in a Blender parent/child relationship upon import.

    ...
    Although alt-d will create a linked object in the blender file, it doesn't survive an IFC roundtrip.
    For it to survive roundtripping, you have to 'type' the object.

  • Also, see the 'commented' IFC here to better visualize the relationships.

  • @theoryshaw , I still don't understand how to roundtrip just an IfcOpeningElement, @Ace made a great tutorial in some other thread. But I would like to know how only roundtrip an IfcOpeningElement.
    Please tell me if this a feasible or good idea for making IfcOpeningElements "parametric", since IfcOpeningElementType does not exist (I think)

    1. tag the IfcOpeningElements which are corresponding with a name or guid, so they can be easily selected

    2. Once Selected, set the origin of geometry all to the center of mass, this will mess up the location when it's already "exported" to IFC. Don't know how to prevent his.

    3. Then use python to get all the geometries, check if the name and dimensions are all the same of the IfcOpeningElement in each direction. Maybe it's unnecessary complex? Or somehow store the dimensions in IFC of the IfcOpeningElement.. just thinking out loud here. Would be great if it was possible to just parametrize certain edges of an IfcOpeningElement to make more complex openings parametric as well.

    4. With python maybe a resize of the mesh/IfcOpeningElement can be done from the center of geometry of one IfcOpeningElement instance?

    @Moult

    If it irks you to not have a single "reference" object that is like the family definition, basically in IFC this is optional. If you want to, you can create an IfcWindowType, and let that store your "reference" object.

    How to do this in BlenderBIM? :-)

  • edited September 2022

    Please tell me if this a feasible or good idea for making IfcOpeningElements "parametric", since IfcOpeningElementType does not exist (I think)

    I would like to see this as well.
    I wonder if we can 'type' the geometry of IfcOpeningElement through the IfcMappedItem mechanism?
    In past version of BB, we were able to create mapped geometry (bpy.ops.object.duplicate_move_linked()) without it being through a IfcTypeObject. I don't think we can do that anymore.
    @Moult, in the schema, can you only use IfcMappedItem through IfcTypeObject? If so, can you point me to that in the schema?

  • It seems there's a lot of precedents of using IfcMappedItem without an IfcTypeObject.
    https://sourcegraph.com/search?q=context:global+ifcmappeditem+not+type+file:\.ifc$&patternType=standard

    Coen
  • Is there any python ifcopenshell example where IfcMappedItem is used?

  • Maybe IfcMappedItems could also be used for Beam System Arrays, but then beams can be of unequal length or a different profile.

  • Schema development is hard. :) https://forums.buildingsmart.org/t/does-the-use-of-ifcmappeditem-always-have-to-be-through-a-ifctypeobject/4383

    Is there any python ifcopenshell example where IfcMappedItem is used?

    you might find some goodies here:

    Maybe IfcMappedItems could also be used for Beam System Arrays, but then beams can be of unequal length or a different profile.

    we really need to figure out a way to capture arrays in the schema.

    Coen
Sign In or Register to comment.