I need to create a script that calculates the total constructed area of a project. Intersections don’t count (if there’s a smaller floor above a bigger floor, only the area of the bigger floor will count (in general, the outline of joining them together).

So I need to get all the floors in the project, get them on the same level to account for intersections, create an outline of all the floors, create a floor from that outline and calculate the area.

What I have tried so far to get the outline (I don’t know how to get them on the same level, so I haven’t even tried that):

replace your selected category with rooms not floors and remove the element.getlocation node with Romm.FinishBoundary. That should set all of the floors to that type. Im not sure If that is what you were looking to do though.

Guys, thank you so much for all the replies, this was the one that worked perfectly! @christian.stan I really appreciate it. The only part that I haven’t understood the purpose is this one:

The normal is directed from the material outwards (the system node does the job well, it normalizes the vector for you) (u,v) are the parameters of orthogonal directions of the surface (bounded at 0 beginning 1 at end)
so you will have entered the 0.5.

In the code block (Com: variable) which calls the Vector class in fact and .Z (the property, Z component of the vector)
then test:
if component Z = 1, in this case it is true, otherwise it is false)

test ? action to do if true : actions to do if false ;

Filters all horizontal top faces

In fact, I should have filtered with ==-1 to take the balconies into account (worked upper surfaces, more and more like works of art in their own right) just in case.