area calculation blenderbim vs ifcopenshell
I was doing a comparison on the volume and area calculation between blenderbim and ifcopenshell on the demo model AC20-FZK-Haus.ifc
I am getting difference in the areas for NetSideArea
and NetFootprintArea
. The difference in NetFootprintArea
is almost 40% different
Am I doing anything wrong here?
Tagged:
Comments
@Arv hi... well, the quantities that are stored in the Pset called "BaseQuantities" are just float number properties, just like the others...i mean, you could manually edit a single property (for example BaseQuantities.Length) to, let's say, 4 and you would have the length property set to 4 and this would be obviously wrong ...
I said that just to help you understand that properties could come from every kind of source and so they could be wrong...
Said that, in order to better understand the problem, it would be helpful to know where the functions shape.get_volume(), shape.get_side_area() and shape.get_footprint_area() comes from ... in other words, could you copy also the line where shape is defined? thanks ...
@Massimo I think shape should be
ifcopenshell.util.shape
@cvillagrasa @Arv well so it uses this functions https://github.com/IfcOpenShell/IfcOpenShell/blob/v0.7.0/src/ifcopenshell-python/ifcopenshell/util/shape.py ...
But the more precise quantities, in this case, are the ones in the BaseQuantities Pset and i don't know why the ifcopenshell.util.shape seems to return the wrong values ...
well but i tried to run the following script with the same wall selected
import blenderbim.tool as tool
import ifcopenshell
obj = C.active_object
entity = tool.Ifc.get_entity(obj)
settings = ifcopenshell.geom.settings()
net_shape = ifcopenshell.geom.create_shape(settings, entity)
net_volume = ifcopenshell.util.shape.get_volume(net_shape.geometry)
and net_volume is 6.42 so there is something wrong in your script ...
Try to select the wall with
import blenderbim.tool as tool
model = tool.Ifc.get()
wall = model.by_guid("25fsbPyk15VvuXI$yNKenK")
I have imported shape as
from ifcopenshell.util import shape
I do get the net_volume same as yours which also matches the model . Its the


shape.get_side_area
andshape.get_footprint_area
values which is differentThis is a little unfortunate, basically footprint area counts any faces projected onto the view direction, including overlapping faces (hence the double count). Therefore the faces of the window voids are also counted as a footprint. This is unintuitive and I'd say it's a bug, but hopefully this image explains it. Therefore if you supply a gross shape (i.e. without the window openings) you get a more sensible number.
Bug fixed: https://github.com/IfcOpenShell/IfcOpenShell/commit/f0028c00947508302cbb719d6959a4eb93581d79
Thanks @Moult
@Arv well i guess i didn't pay the necessary attention to it :-)
Nice that this problem finished to a fixed bug
And of course thanks to @Moult :-)