Workflow architectual model -> BEM (Flatten IFC objects)

edited May 26 in General

I am trying to find a flexible process to convert architectural models to something that can be used for building energy simulations. The only information I am interested in right now is geometry, most importantly floors, windows, and roof.

I have not access to the original files that are usually drawn in Rhino or Archicad and rely on exported files from the architect, usually IFC-files. Unfortunately, I seldom have the possibility to get in direct contact with the architect so the IFC usually are not very suitable for building simulations.

Anyway, my idea now is to find a way to convert the IFC-files into flat surfaces that can be used for BEM-simulations. My current workflow is to convert the IFC-files into a number of OBJ-files. This works surprisingly well, but the problem is that I have not find a way to flatten the almost 2-dimensional objects like walls, windows and floors. My second idea is to convert the IFC-files to gbXML before I convert them to OBJ. I think this would be a good method but unfortunately, I have not found a method to do this.

Any suggestions would be useful, including usage of Openstudio, BIM-server, XMLTOHB, IFC-to-gbXML-converter, Spider and/or IfcOpenShell.



  • Flattening volumes like walls and slabs is something that would be useful for the structural analysis as well, if you want to define the analytical geometry from a 3D geometry of the building. In any case I would think that a complete automatic procedure would be difficult to achieve, I would see it perhaps viable through the use of BlenderBIM that would allow to "fix" any inconsistencies from a model that a scripted procedure would yield.
    What if for a start we can think of creating a script that takes any walls/slabs/roofs/etc. and attempts to create an area, let's say at the centre-plane. Could that be useful?

  • I have no experience of using Blender (I use Rhino/Grasshopper) but am willing to learn. I think a center-place would be a good start. In a perfect world I would like internal planes for walls ground floor and roof, two planes for internal floors and center-planes for windows. The windows are tricky since they contain a frame but right now I would be glad just having a plane symbolizing the overall surface. Curtain wall objects are always tricky since I need to divide them into solid and transparent parts so guess they will have to be created manually. I do not think this process will be perfect in any way but at least I think it will save a lot of time and be better to retrace the surfaces manually.

  • Ok, I will try and give it a shot sometime this week, hopefully. I don't promise anything but it is sth I would like to try and learn from, and eventually it is needed for structural analysis as I said, which is my main area of interest.
    I will write back here

  • Thanks a lot, I will try to help as much as possible even if Blender is new to me.

  • Semi automatic strategies I have used in the past to reduce complex shapes into simple planes:

    1. Generating a new plane based on the bounding box
    2. Merging vertices by distance (basically a vertex weld with a very large radius)
    3. Scale to zero on a consistent local axis and then weld vertex
    4. Use IFC footprint representation
    5. Use IFC axis representation, and then extrude
    6. For windows, skip the window geometry itself, and instead use the opening geometry, which is almost always an extruded prism, then apply any of steps 1-5

    Naturally, some of these techniques will be more successful in different scenarios.

    There is an experimental Blender gbXML export script in the IfcOpenShell repository which I have used.

    Ladybug nodes have been ported to Blender, but Honeybee hasn't - if this interests you, would love to have someone take it further.

  • This sounds very much like the algorithm I thought of, unfortunately, I have no idea how to write it (neither in Blender or Rhino) so any help would be very useful. Thes most important thing is to get an as simple OBJ-file as possible as possible (merged planar surfaces or polylines) so I can convert them into useful BIM-geometry. Right now the OBJ-file exported from IFC is quite triangulated that also causes problems.

    Regarding the experimental Blender gbXML export script, do you have any information how I can try it? Maybe it is good enough, the geometry does not have to be perfects since I still need to manually retrace complexe surfaces like roofs.


  • @Max if you import the IFC via the BlenderBIM Add-on, instead of converting into an OBJ, I reckon it'd be a better workflow, as it'd retain more semantics such as whether the wall is internal or external, as well as predefined types and construction types which can help in classifying planes for BEM. Similarly, with the BlenderBIM Add-on, you get access to the potentially simplified representations (footprints, annotations, and axis)

    Cleaning up triangles is very easy with a combination of vertex welding (Blender calls it "Merge by distance"), tris to quads, and limited dissolve functions, all of which are available in Blender, as well as via script if you want to automate. You can find those functions in the Blender mesh edit menus, or via the built-in function search (F3 hotkey). Happy to organise a screenshare via the OSArch live chat (see link at top of page) if you're a more visual learner and sometimes these things benefit from more hands-on guidance.

    The experimental gbXML script is here. It may need tweaking. Some things are hardcoded. I've used it to push geometry into IES, and checked with Spider, but haven't personally tried with EnergyPlus, for example. It exports geometry, but not other metadata.

    I noticed @mostapha probably referred you to here from the Ladybug forums - would you consider going down the HoneybeeJSON route? Nothing has been quite built yet, but if this is something you need, perhaps we can organise a couple meetups and build something together.

  • Thanks a lot!
    Right now the scripts I use are made in grasshopper but I see no reason why it could not be made in Blender. It is just a few exported textfiles and a BAT-file that is run. Still I would prefer to keep using Rhino/grasshopper right now and just use Blender as a preprocessing step. Mostly because I am familiar with Rhino/grasshopper. I have just created a video describing the current process at . Right now I do not think I will use HoneybeeJSON but hopefully this method will be so flexible so any format will work as long as the scripts are fed with geometry.

    Any help using Blender would be great, especially live chat.


  • @Max have you checked this discussion?
    I have stopped the developement waiting for some funding we're applying for, but I'm interested in learning Blender too.

  • edited April 2021

    BricsCAD lets you import IFC and flatten it . (command : flatshot) Maybe it can help. I did't read the whole thing.

  • I am still trying to solve this and wonder if it would be easier to flatten the IFC entities before I convert them into CAD? Right now I am only interested in walls, windows and slabs. I noted that walls have a depth that might be possible to change.

Sign In or Register to comment.