Automating wall extraction from IFC

Hello Community, I need your help and thank you in advance.

I’m currently working on a very large number of IFC files that contain wall geometry (IfcWall). The goal is to automate the modeling of this geometry (extraction from the IFC). The issue is that this geometry carries no information other than the IFC class, and on top of that, it’s a single solid meaning that all the geometry visible in the screenshot represents just one solid. I tried extracting the contour lines to group them and find the medial axis, but the result isn’t satisfactory at all.

Do you have any ideas? Any leads on how to decompose this solid?


Thank you in advance.

Hi,

can you share a sample ifc file to understand why there is one solid ? how did you process ? you linked the ifc file in Revit for geometry extraction?


I obtained this solid by extracting the interior rooms as well as the large room that encompasses the entire building,

if it comes from an IFC it should have walls, or there should be another IFC with the walls in it. You’re losing the data that defines each of the ‘blades’ in your tomato(?) cutting tool analogy.

It’s not a standard IFC exported from a BIM software; it’s a file coming from an application called Abyla. In the tool, there are 2D plans, and at the moment of the IFC export, it retrieves the boundaries of the interior rooms and the exterior rooms; the gap between the two is the walls (solids, not native walls). When there is geometry, it works fine, and I managed to convert them into Revit walls. However, sometimes the tool bugs out and only outputs rooms. So when doing the extraction, I end up with a single solid and I can’t manage to break it down.


not sure but could the Solid.Separate node work…just a shot in the dark :wink:

Step 1 is to let the company know their exporter is broken and need to be addressed. No reason you should be chasing what you are on account of their error.

Step 2 is to check their documentation to see if there is a known reason why the exporter doesn’t work sometimes, and if not do some analysis and experimentation on your own. The goal is to get to the point where you can ‘disable’ the stuff which causes the failure before you export.

Step 3 is to move into finding a way to extract good data from the bad. This isn’t an ‘easy’ thing as you’ve got a TON to deal with, and honestly the ‘configurations’ of the tools which I’ve seen to attempt this are significant enough of a lift that it often isn’t worth the pain. A ‘loose’ extraction is sometimes possible, but the configurations of it vary rarely scale well. This is why steps 1 and 2 are so important, but there is certainly a fit for the partial automation. Posting a sample IFC as @c.poupin noted is likely a requirement for anyone to help as otherwise we’d have to fight reproduction of your dataset.

I think it will be simpler to extract the geometry from each ifcWall, analyze it, and recreate the wall using the Wall By Profile method.

Hello everyone,

Thank you for your response, and especially you, @Jacob, thank you for your constant availability.

Indeed, the tool we use to extract the IFC is an old tool that was sold to another vendor, and they have not planned to develop it further. They don’t even take into account reports of the tool malfunctioning, as this falls outside the scope of the missions mentioned in the contract. Our goal is to retrieve the IFC and model the buildings, and since we have a very large number of them, we are looking for a way to automate this task.

I am curious why the result isn’t satisfactory.
Maybe when people know this too we can come
up with a better idea.

Also some other question (again, out of curiosity :innocent:);

  • How accurate has your Revit model has to be (decimal wise)?
  • Can your Walls be Generic Walls or do you need to define them?
  • What about Wall Joints?

If you need to;

  • Go over the Walls to fix Lengths or distance to Grids .
  • Replace Walls (Types).
  • Fix Joints.

Then i wonder if your not simply faster my modelling manually and
use the IFC as an underlayment. :thinking:

If this is the case :down_arrow:

Ouch! This is never fun new to hear.

Can you post a sample IFC so we can have a look at the options? Might be that the data is there but not complete causing it to fail to be recognized by modern readers (a lot of IFC exporters manage to fall into that trap).

5402901A.7z (1.3 MB)

Ok this is an odd result… Too bad you can’t get them to patch it. I’ll think over some paths forward for you, but ‘complete automation’ of this task is likely not possible without building your own IFC file parser (which may in fact be the best path forward).

Thank you so much, Jacob, you’re the best!
In my opinion, the solution will involve using spaces, but I’m struggling to find a way to implement it

Since the IFC file contains only IFCSpace elements (no IFCWall elements), I’ll start by extracting the boundary lines of the IFCSpace elements and then group them by direction and distance, much like we would with a DWG file.

arhh thats the case, then i would try what @c.poupin suggest in other post with wall by profile, here is a fast test on one level, on your file…can maybe work :wink:

Thank you for your response. I’m aware of this solution, but the problem is that my case is different all my walls are defined by the empty space between two or more spaces


Processing: image.png…

arhh yeah have admit i wasnt so deep in it…hahaha, then try get these spaces perimeter curves and group then by direction, distance and loft them as surface and then create an isoline by 0.5 on them for placement if you mean for interior walls…just an idea, maybe

I got a part of the way though this, but found the IFC data too convoluted to bulk process. I don’t think automation can save the mismanaged data here as every project is going to be broken in it’s own way. As such you likely should review other options for export (DWG, GIS, etc.) before you begin.