My goal is to create a script that creates wall finishes in a selection of rooms, depending on the wall type.
Concrete walls get a thick plaster, masonry walls get a thin plaster.
I was able to match a finish wall type to the already existing construction walls (still need to do some more work on this and also look for walls that don’t need a finish) but I ran into some problems…
The finish walls that are created are created on the middle of the interior face of the construction wall, so that means there is an overlap.
I can go 2 ways from here:
Offset the curves before creating the finish walls
OR
Offsetting/moving the finish walls after they are created.
Either way this has to do with coordinate systems and vectors in order to move them in the correct direction. And I have no clue nor understand this part and how to do it.
Any advice and help on how to move the geometry in the correct direction is very welcome. DYN_wall_finishes.dyn (130.4 KB)
But about the script, I’m going to need to switch to the room boundaries for the curves since walls usually span multiple rooms so the wall faces are not gonna work…
But I have no idea how to move the curves from the room boundaries in the correct direction to compensate for the thickness of the finish…
For the room boundaries method, I’d take the curves, build a polycurve, explode that polycurve, and then offset by -1/2 of the thickness. You’ll have faces partially overlapping which could cause some issues, but since they are all walls and aligned to each other Revit’s built in cleanup utilities may resolve it (we can hope so anyway). If not you’ll have to offset, then trim/extend as needed to get a closed loop.
I was able to do the polycurve and explode it.
I’m able to get the offset value.
Joining in the corners I also already have covered, but trimming would be better, is this possible in dynamo?
But I have no idea how to offset the curves in the right direction - towards the interior/middle of the room…
Never mind, kinda figured it out:
I fed the roomboundary curves into the node instead but they match with the direction of the room bounding elements that create the curves and removed the distance, so this works!
Second, offset for freestanding/interior walls is not correct, because they have both an interior and exterior side so the offset on the exterior side is not correct…
Most of this can be solved if I can just get all the room boundary curves to offset into the direction of the interior/middle of the room. Only the offset distance should depend on the room bounding element, but the offset direction should not…
Starting with the rooms is easier for the direction of curves as you can just use the Room.FinishBoundaries node which returns a consistent direction. However that means you lose the capability to drive the offset from the substrate type. You also risk putting a finish where you don’t need it (ie: over a typical stud wall).
A better solution might be to go back to the wall, offset by the relative thickness both inside and outside, test if those curves intersect the room and discard any which do not. That won’t ‘cap’ your walls though, but I think y here are alternative solutions there.