[Blender BIM] Modeling custom windows and doors - with arches

Hi! I am new to Blender BIM and BIM in general, which I am trying to learn with the BB add-on. So I am sorry if my question is going to sound very simple maybe, but I could not find a straightforward answer online (tried all day long).
The main problem I am having is with curved objects. I managed to create a custom window with a upper arch, but when I use it, of course, it creates a rectangular opening on the wall. Then I have tried using opening elements (modeling the shape of the window and then add void), to create voids where I could put my custom window, but I am definitely missing something because eventually I couldn't get it to work. What would be the correct worflow for this? Is there anything I can read or watch on the topic?
I have a similar problem with portals and archway, but I am hoping to understand it eventually once I solved that (the project I am working on is about HBIM so a lot of arches and complicate geometry)

Thank you!

Comments

  • Hi @elo_elle someone will ask. so it may as well be me :) can you share your file. There are lots of smart people here, someone will solve your problem

  • You should be able to draw the opening geometry with any shape.

    A quirk of the IFC standard is that the opening geometry can't be defined in the window type - every window instance has to have its own opening geometry even if they are the same type.

    Blenderbim has a couple of tricks to help with this: if you model an opening for a window instance, blenderbim will find it and make a copy of it when you create the next window; or if you add a 2D 'Profile' representation to the window type (ie. draw the elevation of the hole), blenderbim will extrude it and use it to cut openings for new window instances.

    theoryshawAce
  • Thank you for your replies!

    @brunopostle said:
    Blenderbim has a couple of tricks to help with this: if you model an opening for a window instance, blenderbim will find it and make a copy of it when you create the next window; or if you add a 2D 'Profile' representation to the window type (ie. draw the elevation of the hole), blenderbim will extrude it and use it to cut openings for new window instances.

    I have tried adding an elevation profile to the type, but it doesn't work.
    As for the first method, that's why I was asking for the right workflow: I probably make a mistake at some point while adding the opening but I can't figure it out, and I haven't been able to find a tutorial about this.
    I am attaching a simple example file.

  • This is how I just did this:

    1. create a wall from a wall type and add a window using a window type. This will create a default rectangular opening.
    2. select the wall and click on 'show openings' (which is a button that looks like an eye). The opening geometry will appear as a green wireframe.
    3. select the opening and edit it like any other blender mesh, change the shape of the top etc..
    4. when you have finished, select the wall again and click on 'edit openings' (which is a 'checkmark' button where the eye button was previously).

    This worked for me but blenderbim just crashed when I tried to do it a third time - save your work!

    theoryshawAce
  • @brunopostle said:
    This is how I just did this:

    1. create a wall from a wall type and add a window using a window type. This will create a default rectangular opening.
    2. select the wall and click on 'show openings' (which is a button that looks like an eye). The opening geometry will appear as a green wireframe.
    3. select the opening and edit it like any other blender mesh, change the shape of the top etc..
    4. when you have finished, select the wall again and click on 'edit openings' (which is a 'checkmark' button where the eye button was previously).

    This worked for me but blenderbim just crashed when I tried to do it a third time - save your work!

    This is also the same workflow I used before, now I have tried to update Blender and it works! Thank you so much, I wouldnt have thought about updating the software if it wasn't for your comment, knowing what I was doing was correct was very helpful. And it works with the instances too

    One last question. Considering the discussion posted here:

    Every boolean operation should be done with IfcOpenings, am I correct? I am thinking about portals, arches, etc

  • There are two types of openings: semantic and unsemantic. Unsemantic openings are merely booleans used to create a shape (i.e. a modeling technique). For example, you could model a sloped wall by having a boolean applied to it. This is not meaningful for construction, it's just "the shape that the object has". These are simply represented using "IfcBooleanResult" as part of the modeling process.

    Semantic openings have meaning and purpose in construction. The most common type of semantic opening is an "IfcOpeningElement", which represents a penetration in an object (most commonly slabs and windows) which have implications for fire and acoustic requirements, services coordination, or placement of other elements (e.g. a door is placed to fill an opening) and so on.

    Another semantic opening is a "VoidingFeature", which represents material being subtracted during manufacturing and fabrication, and can store information about how the item in manufactured, including whether it is milled, drilled, etc.

    Coenelo_elleAce
  • Thank you! This is clearer. I figured out the voids and windows openings. Regarding the arch itself, which in my case is more like a portal than a door, what I have done so far is creating a IfcElementAssembly that contains both pillars and the slab which has the opening shaped like the intrados. It seems more semantically correct than creating an opening in a wall, but I hope I am not missing anything (VoidingFeature doesnt apply to this case I believe).

    Thank you for your patience, I am hoping to share the project with you when it will be ready if you are up for discussion

    brunopostle
  • Hi which blender version and which blenderbim version works for this arch window workflow. I've tried blenderbim stable 040323 and blender 3.4 and I don't get a rectangular opening, green wire frame or anything. I don't get any opening when window is added, add void produces some kind of weird blue cube which doesn't create opening to match window. cheers Newbie99

  • @fired66 said:
    Hi which blender version and which blenderbim version works for this arch window workflow. I've tried blenderbim stable 040323 and blender 3.4 and I don't get a rectangular opening, green wire frame or anything. I don't get any opening when window is added, add void produces some kind of weird blue cube which doesn't create opening to match window. cheers Newbie99

    Hi, sorry I am late. In Blender 3.4 and BlenderBIM 230328 (but I tested it with older versions too) everything works.
    My suggestion is firstly to try to understand openings using a sample library like this one below.
    Add a wall - select it - move you 3D cursor on the surface of the wall - add a window - select the wall again - click on the "eye" icon in the "Active Tool" panel - you should see the rectangular opening in blue.

  • thanks for your help much appreciated. I've now got openings and can crack on through the tutorials

    elo_elle

  • How would one model this into a IfcDoorType with BlenderBIM?
    Note it has a brick rowlock which is actually part of the IfcWall.

    There is a transom above the door, which is able to open? So this is actually an IfcWindow? So it becomes an IfcElementAssembly? Then how to keep it all as type?

    Then there is the aspect of mutiple materils in the door profile, notice at the bottom is natural stone, the door panel itself consists of glass and wood.

    Any advice or approach on how to model this is highly appreciated

  • @Coen you could model the whole thing as a door type. The shape representation can have multiple representation items, each of which can have a different material.

    It is up to you how you want to model the brick arch, you could include it in the door type and have a non-rectangular opening geometry, or create a separate wall opening for it and put it in the hole as a beam - blenderbim doesn't have any clever tricks for cutting openings automatically for anything other than windows and doors.

    Coenelo_elle
  • @brunopostle

    Thanks, first attempt was to create the rowlock seperately with an IfcVoid, and then make it an IfcWall AssemblyType

    In hindsight your approach might more suitable for my situation.

  • edited March 12

    Hi,
    I tried to make a custom IfcDoorType and tried multiple methods. Thought I'd share it so someone might know a better way or might learn something from this! And it's somewhat related to this thread ;)

    I started to model the door by following Ace's steps in this very helpful tutorial:
    I had a hard time modelling custom profiles by just adding extra vertices and loop cuts etc. to the plane this way and extruding these faces, as I had different profiles for different parts. Of course partly because I don't have any previous blender modelling experience, but I figure there are more people who want to use bbim but have never used blender either.

    Modelling this simple profile from a plane took me way too long.

    Next I tried to make the profiles by making a custom arbitrary profile and extruding it along a path. This works fine, but if I want them in a DoorType I have to unlink Ifc object and reclassify them together as a DoorType (or is it possible to use these directly in a DoorType?). Not very efficient and the unlinking and reclassifying might give some errors or transform the mesh in an unexpected way. The boolean modifier can be used to connect the profiles. More complex profiles might not work however:

    As you can see the difference and intersect boolean modifier don't work there as they should here:

    The objects sometimes completely disappear or do not cut at all.

    Note: these booleans are used with the bezier curve and bevel along path tool. Maybe the arbitrary profiles perform better now.

    Ultimately I chose this method:
    1. add a plane
    2. edit it into the profile you want
    3. extrude them
    4. manually connect the profiles as you want
    5. join everything together
    6. move object to world origin if not already there
    7. apply all transforms!!
    8. set origin to 3d cursor (which should be at world origin, otherwise shift+s and then cursor to world origin)
    9. classify as IfcDoorType
    10. add 2d rep with door swing in this case
    11. load it in project (preferably if everything is exactly as you want, as reloading a type has it's own inconvenient issues)
    12. give the door a material
    13. change void if needed

    Result:

    The red casement frame (stelkozijn & spouwlat) are a separate instance classified as IfcBuildingElementPart, with a different bigger void for the insulation layer.

    As you can see this creates a nice IfcDoorType and you can quickly create multiple versions once you get the hang of it.

    Same with windows or other elements, I created this IfcStairFlight via the same method.


    The floor plan as of now:

    Couple of questions:

    • How to assign multiple materials to different parts of an element type? For example how to give the glass of the door another material when the plan view is exported? Giving the different elements a different color before joining as @Ace does in his tutorial doesn't work for this of course.
    • Is it possible to set hatching orientation aligned to element or change the orientation manually? E.g. the last picture where the concrete hatching might be preferred like this:
    • If there is a better or other way to do this I'd love to know!
    • Does anyone know why the booleans don't work as expected on semi complex profiles?
    • Anyone know how to make these custom doors/windows/anything parametric eventually? What is the next step? I'm not a programmer, but I'd expect it would be possible with sverchock and or python.

    The file where I tested booleans and ultimately made my doortypes, so anyone can try it out or see how I did it is attached!

    Thanks for reading!!

    steverugibrunopostlecarlopavShegsGorgiousCoenbruno_perdigaoMaartenFrough
  • @jes_r

    Great work! Do you have experience when you you edit an IfcDoorType, and already have serveral instances of that IfcDoor in place? How do you 'renew' the IfcDoorType instances in your project? Do you open another Blender session?

  • @Coen said:

    Great work! Do you have experience when you you edit an IfcDoorType, and already have serveral instances of that IfcDoor in place? How do you 'renew' the IfcDoorType instances in your project?

    Thanks and yes, but this isn't really optimised. I asked about this problem here: https://community.osarch.org/discussion/1993/reloading-updated-types-from-library#latest (also with example of my earlier tries and the issues that came with them). BBIM keeps the loaded type saved in your project, so if you want to update the type you either have to delete the type (yes, your placed instances also delete) and reload it. With this method there are 2 major issues:

    • the doors gets deleted, so you have to replace them. Same case with the voids if you did something manually.
    • when you reload sometimes the changes aren't even imported, so you just reload the same old type.

    For this last issue you can either do one of these two things:

    • Save the library file with your updated type under a new name, this seems to skip the cached type.
    • Save the type under a new name, preferably before classifying as an IfcDoorType. This ensures that you can load it in just fine.

    The last option seems to be the easiest, but I don't want to have e.g. D_WOOD_1000x2300, D_WOOD_1000x2300_2, D_WOOD_1000x2300_3 etc. in my project.
    Now you might be able to save it temporarily as D_WOOD_1000x2300_2, change all placed doors to this type, delete the old type completely and rename this type to D_WOOD_1000x2300, but I haven't checked if this (always) works.

    @theoryshaw I know you said that reloading normally is a feature not yet implemented in that other discussion, but is this how you do it or do you do it another way?

    Do you open another Blender session?

    I might not understand the question, but yes I have Blender library file open and the BBIM Ifc project I want to import the type to.

    Coen
  • @Coen said:

    >

    I'm curious of the finished product, might you be willing to share this type/file?

Sign In or Register to comment.