Hi all, I am trying to do the following with this script:
- Sort the faces of each brep input by z elevation
- Use that sort to pick the lowest face of each brep
- Get the area of those faces, mass add together
It feels like I’m almost there, but List Item is picking the wrong faces. What might be going on? Thanks for the help!
Get Area of Brep Floor - Test.3dm (2.1 MB)
Pick Each Floor - Get Areas - Add.gh (9.0 KB)
Your 2.1 MB Rhino file is empty
So your GH file is useless.
P.S. Oh wait! I see them now, Don’t know what happened… standby.
Your ‘sort list’ component was missing your brep faces.
Pick Each Floor - Get Areas - Add.gh (13.7 KB)
*Edit:
I noticed an issue with your breps, though - some have more than one ‘bottom face’, and there are some ‘partitions’ (walls)…so the result I shared is not complete.
For that matter, I’d try something like this:
Pick Each Floor - Get Areas - Add-2.gh (14.2 KB)
I got to the same result twice just for clarity.
The first method grabs the region union of all ‘floor’ intersections with the {union} bounding box ‘bottom plane’ (via EvaluateBox, parameter W = 0).
The second method separates the closed curves (floor intersections) from curves that are not closed (like the intersection of an unthickened wall with the bounding box bottom plane).
Nonetheless, you could still sort all faces by their Z value, and get their areas.
You can use the ‘Plane Coordinate’ component to test which face centers are on each bounding box bottom plane.
So if I understand correctly, each brep is a floor that doesn’t necessarily touch other floors in the same building? But that doesn’t matter because you don’t want floor area for each building. I had to add the purple group to filter out a brep consisting of only one wall, in yellow on this image.
Floor Areas_2024Feb28a.gh (13.1 KB)
Figuring out which floors belong to each building is more involved, but you didn’t ask for that?
P.S. You didn’t ask but here is the floor area per building:
Floor Areas_2024Feb28b.gh (32.1 KB)
This is better because it gets rid of the manually adjusted ‘Distance’ slider (yellow group) that was required using Point Groups for finding floors by building. Instead, it projects floors to the XY plane and uses Region Union and InCurve (orange group).
Floor Areas_2024Feb29a.gh (41.4 KB)
The blue group switches between showing ‘Floors’ (above, sorted by Z) or ‘Buildings’ (below).

It is recommended to hide the ‘Buildings’ layer in Rhino:
