I’m trying to automate the process of acquiring square footage for a large multi-family building.
I’m required to draw the boundary for residential rooms by the outside of wall, including the wall thickness within the SQFT count.
In this sense, the standard Revit method wont work as I can’t differentiate where the boundary for a room is drawn by room use case.
Here’s where Dynamo comes in. I feel like this has to be possible to automate.
Here’s my thought process of how this would work:
Get a list of Rooms
Categorize by use case (Residential, Circulation, etc.)
Determine the boundary of the rooms based on inner wall
For all Residential:
Offset boundary by wall thickness (This is where I’m stuck), so that the boundary of the room includes the walls.
Draw a boundary around the outside edge of any intersecting rooms of the same category (Thus preventing the SQFT of a wall from being double counted in adjacent rooms)
Use Patch to get a surface, and calculate area.
The part I’m getting stuck on is how to take the inner boundary of a room, and ensure that each side is offset by the correct amount. This is simple enough with a room with identical wall thicknesses on each side, but when a room has a different wall thicknesses, I need to offset each side a different amount.
First thought is to take each boundary line, and offset by the amount per each wall, then join them back together to get my boundary. I can offset the right amount, but I don’t get to pick which direction it offsets in, so the North and South walls are offsetting inside instead of outside.
I can use translate as opposed to offset for this, however on odd shaped rooms, I need them to offset perpendicularly outwards from the previous line, so I can’t just use a universal X/Y axis, because I might need it to offset at a 35 degree angle for example.
With all that out of the way, my more direct questions:
Is there a way to circumvent all the messing with geometry and just get the outer face of the wall directly?
Is there a quick and easy method to determine which direction a wall will offset/translate, and have it offset “out” correctly, even if the wall is at odd angles?
Am I missing the entire point and there’s a much simpler way of doing this?
1. Is there a way to circumvent all the messing with geometry and just get the outer face of the wall directly?
I am not sure there is a direct way, as if a wall is standing between two rooms, then how would you know which of its faces is “the outer one”? I believe you could just get vertical faces of the wall, project them onto the room’s level plane and you will get curves as a result. Then you could measure the distance from the room’s centerpoint to these newly formed curves. The one, standing at the greatest distance, is the farthest one, e.g. its corresponding face is the outer one
2. Is there a quick and easy method to determine which direction a wall will offset/translate, and have it offset “out” correctly, even if the wall is at odd angles?
I believe there was a node called “offset towards point” or something like that. Again, you could use the room’s centerpoint and a negative offset to get the outwards direction
I am not saying this is the best approach, but it’s the first thing that comes to my mind I think it should work.
an idea here get the wall that are room bounding and instead of taking the room area get the lenght of the wall. this is always from the centre of the wall in revit.
after this you get the wall thickness * 0,5 to get this right you need to give the thickness of verticall wall to your horizontal wall and the other way around. this will give you the outer permiter.
trying to clearify what i mean with picture below. might be a little tricky gettingt right value to right wall.
After trying a variety of things, a combo of the two turned out to work!
What I’ve done is make a midpoint at the wall core, and wall (interior) finish face. These points might be offset, but it turns out this is alright.
I then got the vector between the two points, and the distance, and offset in that direction and distance, allowing me to located the “outer” wall.
From here, I redraw a new curve on the outside borders (my method here feels sloppy, open to any ideas on how to clean this up). This I use with patch to get the area.
It’s working so far! It handles adjacent rooms no problem, as well as irregularly shaped rooms which surprised me.
Still to do:
Categorize & Sort the rooms
See if I can use a vanilla node as opposed to clockwork. The clockwork one feels overkill here, and I’d like this to be as light as possible for use on large projects.
Figure out if there’s a way to make it handle circles if it needs to.
I’ll upload it once it’s finished and I’ve been here long enough to upload files