Thanks for the idea! Unfortunately I’m running into some issues using it.
I don’t seem to have the Wall.Width node, but I can still get the wall width by using the parameter value.
I’m also finding that my walls are offsetting in the incorrect directions when I use Curve.Offset:
I’m curious to know why the Curve.Offset seems to work on your script and not when I recreate it.
I do have a workaround, I’m using the Translate w/ direction node, and then I get vectors as shown below:
I’m curious to know what you’re doing at the end with the Curve.Shatter node, which package is that from? It looks like you then get the length and filter it, what does this do?
Additionally, I’m finding that I have a lot of null data values originating from Clockworks Room.Boundaries node, when working with a jog in a wall, due to a change in wall thickness on part of a room.
My assumption is that this is due to the two small lines generated when the wall jogs, but doesn’t actually create a new wall. I can cull these from the list, but then my list lengths mismatch when I go to offset the curves on the wall.
My thought here is that Instead of using the translate node, I use a Curve.Extrude, to add thickness to the wall and get some perpendicular lines that I can use to get the intersection points.
I think this is close, but I need to either use the width lines to intersect (runs into issues on outer corners) or somehow connect, or ignore them, and use the start and end lines, in conjunction with the intersection points of only the outer faces, and use all of those points to create a polycurve. I don’t know how to sort these points all back together in a cohesive way that leads to a polycurve being generated correctly.
Summarizing the places I’m stuck:
Extrude Method without wall width lines:
How can I connect the outer boundary lines together? Or how do I sort and combine the start/end points on lines, with the intersection points on corners, in a way that a polycurve can be generated correctly.
Extrude Method with wall width lines:
How can I get the correct intersection I’m looking for at both the wall jog, and outer corners? Additionally, how do I organize these lines in a way that I can have them check intersections with any other line around them, as opposed to my current method of just checking an intersect with the line before it?
Extrude Method with surface patches
I’ve also included this approach, which seems to be pretty close as well, but I can’t find a way to organize the indeces correctly. If there’s some way I can tell Geometry.Intersect to find all intersections between lines within a group, this would be ideal, but I’m not having luck with the Cross Product lacing.
Curve Offset Method:
How can I take wall jogs into account?
How can I filter out nulls/room separation lines/storefront, and place a value back into the list at the correct sublist index so that these cases can be taken into account?
I’ve attached a test file that represents every situation I’d like this script to be able to manage. I’ve removed the circle room, as I don’t think this would ever happen, but the wall jog rooms are critical, and also happen to be the ones causing by far the most trouble.
In the dynamo file I’ve grouped the different approaches in orange, and have a note at the end showing where I’m struggling with each approach.
Room Boundary V17.dyn (141.6 KB)
Room Boundary Test File.rvt (4.9 MB)