No need.
- Room.Boundaries node from Archi-Lab package will collect these for you.
- Then Group Curves (also Archi-Lab) and build a polycurve from each sublist to account for an donuts in your rooms.
- Then build a surface of each curve loop, query the surface’s area, and multiply that by -1.
- Use the negative area value as the key and the polycurves as the list input for a List.GroupByKey node.
- Next up a List.Deconstruct with proper list levels and lacing to pull the largest areas out from the inner openings.
- Finally we offset the polycurves. The list of ‘first’ items from the deconstruct node will want to be offset by a positive value, while the inner openings will want a negative value.
Some curves will fail (ie: offering a circular with a radius of 6 by 8) but this will be functional for most uses.