Does anyone have a good method / workflow to calculate the gross area of a Room from a Revit project?
It’s easy peasy to extract the net area from rooms, but not even Revit has a satisfactory method for calculating the gross area. (at least to my knowledge…)
My current workflow revolves around extracting the bounding walls of a room and then exracting the center / exterior curve of the wall depending on whether its funtion is exterior or interior.
However, I can’t seem to always extract the exterior wall curve, unless the wall is modeled with it’s location curve being exterior.
this is undefined and ambiguous, so i think no reliable method can actually exist - the reasons are multiple.
furthermore, I can’t think of a utility to this figure. But I’m curious, why do you need it?
Can I ask why you find the calculation of gross areas undefined and ambiguous? Is it gross area calculation in general or more specifically in a Revit environment?
Unfortunately, some of the equations we use rely on the gross area and not the net area. (For reasons I don’t know…)
it’s undefined for a lack of convention and technical definition. it’s ambiguous because of many things - such as overlapping elements in the area calculation (for example, two adjacent rooms will have a shared portion of the separating wall and often you’d want to also calculate a portion of the wall which is not shared. wall intersections are another complication, but you get the point) and not having a definite way of selecting which elements to include and which to exclude from the gross area of the room.
with building gross area, one just need to calculate one outer boundary. with rentable area (room area) one just needs to calculate the boundary defined by the wall’s inner surface or some arbitrary boundary line.
the only reasonable workaround i can think of is to manually draw what you consider the to be the boundary of the gross area…
I totally get your point and agree with you. There are many gray-zones when working with gross area on a room basis. For this workflow however, I think it’s sufficient to assume the rules are:
Walls with exterior function are calculated by their exterior line.
Walls with interior function are calculated by their center line.
This will result in some minor overlapping areas in certain cases, while other areas may not be calculated at all…
This is the current workflow we use. It would be nice to automate this workflow to some extent, though.
Thanks for looking into this, Japhy! I must admit, I haven’t played around with these components just yet, but don’t they rely on the building gross area and not the room gross area or already defined area plans from the Revit project?
For this workflow, I need to calculate the gross area per room in a Revit project where no gross area is calculated or drawn.
The area elements are Revit’s solution to these different area calculations variables, unfortunately its a new type/system that takes you away being able to control everything with just rooms. One way or another you are looking at drawing work to get what you are looking for.
I see. having the interior walls always calculated by the center line does reduce a lot of complexity. I was assuming you’d want to calculate by center line only when there’s an adjacent room, and to the “exterior” (as in the other side of the wall) when there are no adjacent rooms
if you’re only concerning yourself with the exterior line of the exterior walls → make sure those walls have some property that defines them as exterior (like layer assignment) so that when you have a center-line of an exterior wall you know you need to offset that curve by half the wall’s width (or if you have an eccentric line, whatever the distance between that line and the exterior finish).
I wish i could help you directly on your gh file, but for some reason i cannot download the version of RIRevit you’re using
this is the latest version on the site
The below setup gets rooms and get’s there bounding elements and boundary cuvres… matches segments with it’s respective wall and gets width of that wall, after that based on the wall function it would multiply that wall width by a factor (interior = 0.5, exterior = 1… in this case) and offsets the curve accordingly so the room boundary curve would be sitting at either half the wall THK or at the full wall THK (exterior edge from room).
After that, a quick thing is to extend the curves as done and using Heteropetra plugin’s Geometric Region get the enclosed bounadries.
You would need to make sure your models are done with this outcome in mind and parameters etc managed well… also you would need to add considerations for room separator lines/ boundary segments that would have no offsets and alot of things I assume…
You can look for some method to do variable curve segment offsets to manage the process better and avoid finicky inputs and errors.
Good luck , and let’s know if you manage to work it out
Thanks for sharing - it works great! I adapted your script into my WIP script, and it works pretty well with your sample.
The method of extending the curves could be problematic in some cases, but as you describe it: play around with it. Is there a reason for using a custom Python component to extend the curves, and not just the native extend curve component?
Yep, there are definitely some potential code breaker cases and some areas to optimize, but this is a great start! I think the best way to find out, is to use this method on “real” projects, and see how well it works.
The first issue is as previously described, the Spatial Element Boundary doesn’t recognize Curtain Walls as room bounding elements, but I will create a separate topic for this issue.
I have attached my script in case anyone wants to play around with it.
Thanks to all the contributors in this topic! Much appreciated!