buildingSMART Forums

Element Area Hierarchy

Hi,

Can anyone point me to the hierarchical structure of how to drill down to an element’s surface area?

I am trying to use either a .ifc or .ifcxml file from ArchiCAD to extract element areas.

Thanks,

Glenn

It is not compulsory for an element to store their surface area in IFC. If it is stored, it will be in a quantity set, likely with the prefix Qto_. The full name of the quantity set depends on the object. For example, for a wall, you are looking for Qto_WallBaseQuantities.

Within that quantity set, you may or may not find a surface area depending on the object. For example, the closest thing a wall has is the GrossSideArea or NetSideArea. So, the surface area of the top, bottom, and ends of the wall are not accounted for. You can then read other values, such as Height, Width, and Length to find the missing areas.

In contrast, for beams, you would look at Qto_BeamBaseQuantities, and here you would see OuterSurfaceArea, GrossSurfaceArea, or NetSurfaceArea.

You can get this data in one line of code using IfcOpenShell as follows:

ifcopenshell.util.element.get_psets(element)['Qto_BeamBaseQuantities']['NetSurfaceArea']

Keep in mind that this data will then need to be converted to the right unit based on the units stored in the file. A word of warning that the unit used for length may not be the same unit used for surface areas. You can check the IfcUnitAssignment entity to find out the relevant unit. In a future version of IFC, I hear that this will be standardised to SI units, which will greatly simplify this process.

However, sometimes, the vendors do not comply with the buildingSMART specification on where to store quantity data, so they could be stored in a different location to what I’ve linked to. When this is the case, please raise the issue with the vendor, and perhaps here too so that we can document these inconsistencies for future users.

Sometimes, no data is stored at all. In that case, you need to likely process the geometry and calculate the surface area yourself. If this is the case, I can provide code on how you can do this in an automated fashion using IfcOpenShell or the BlenderBIM Add-on.

1 Like