Extracting geometry from ifc

Hi - what’s the method to extract specific geometry from an IFC file, or is it at all possible currently?

I’ve run into situations like this several times, but haven’t yet figured out how to do it -
for example, right now I a set of beams with openings in them. The openings are defined as IfcExtrudedAreaSolids that are boolean cut out of the beam - but is there a way to extract the IfcExtrudedAreaSolids? (I have use for the opening volume solids, not the beams themselves…)

Hi Pekka,

Would it be possible for you to share the file you are explaining so we can advise the most appropriate solution? You can share here or send to support@geometrygym.com.

Cheers
Nathan

Sure, here’s a beam with holes. This is from a model we’ve been provided, and getting the hole geometry out for other users would be of great interest.
There’s probably a way to solve this in the native Revit model with Dynamo, but that’s my second option - mining things from IFC is an interest of mine right now :wink:

Beam_with_booleanholes_an.zip (4.7 KB)

Hi Pekka,

Attached is an example script on how you can extract the void geometry from the IFC Beam. You will just need to re-reference your file into the script.

Hopefully this answers your query.

Please do keep asking questions if you have any.

190225 Extract Void Geometry.gh (7.89 KB)

Hi There @NathanGG
are there ways we can get directly the Net product Geometry instead of getting the gross and having to boolean difference the voids?

Best,
Olivier

Hi Oliver,

I believe by default, say you are importing an .ifc file you will see the net geometry. It is only when you traverse down the ifc geometry representation will you extract the gross and void geometries. If you have an example you can share demonstrating what you mean that would be helpful. You can post here or send it to support@geometrygym.com if you would like.

Cheers
Nathan

hi @NathanGG

Thanks for your reply.

What I’m trying to do is to query the quantities of different materials in order to calculate the carbon footprint of a project.

Take a simple IFC for testing with a wall + windows + window frames ( attached hereby), I’m trying to calculate in Grasshopper the volumes of concrete, aluminium window frames and glazing. This poses 3 challenges:

  1. to query the net quantities
  2. to split window frames and glazing (seems that the standard Ifc classes don’t allow for this, so I’ll have to come up with a trick by dispatching faces by area)
  3. to verify that the IFC was well created/informed by comparing only the geometry that corresponds to the net quantities to the initially imported geometry and see if there are volume discrepancies.

Please also find attached the gh file I’ve advanced.
Wall for test.zip (37.2 KB)
200902_REad IFC.gh (24.2 KB)
Would really appreciate your input on these and if you have any tips.

kind regards,
Olivier

Hi Olivier,

Thanks for the script and test ifc file.

It was an interesting test case as the wall element was decomposed of multiple parts, however the void members were only applied to the overall wall which is why you were not seeing the voids when importing. The script you have generated is pretty much what I would have done to start decomposing although because it was made of parts it made it a little trickier.

We have made some improvements to better read Wall elements with multiple parts now. Viewing in Grasshopper and importing into Rhino should now also be better… If you go to our downloads page, the latest installer should have these fixes.

In regards to getting material quantities from the windows… The geometric representation of the window is one mesh so yes you would need to do some geometrical operations to try and split bits and pieces (not ideal!). I am not sure if different settings on export of the application may provide better results.

There is an IFC4 improvement to permit material assignment to different parts of geometry, known as a material constituent set. I have attached a script which shows how you can generate such a window using our plug-in. Note: There is a concept that can identify purpose in ifc2x3, but it would be much better to use this improvement if possible.

Hope this helps. Let me know if you have any further questions.

200309 window constituent set.gh (32.5 KB)

Cheers
Nathan

1 Like