How to account for intersecting walls when placing sprinklers

Well, one way to do this would be a Room.Boundaries node which can then be used to create curve loops with the Group Curves node - first from Clockwork package, second from the Archi-lab package - before creating a polycurve with a Polycurve.ByJoinedCurves node.

Effectively what this will do is ask the room for it’s bounding edges (the reason for you initial offset), and group the loops and make each loop a single geometry which can be offset by your desired distance.

If there is a desire to only create offset lines at the location of walls instead of room separation lines you can then explode the offset curve loop, if needed reorder the curves by distance sorting (midpoint of original segments to midpoint of offset segments) and then filter the curves by the element type of the original bounding elements (the Room.Boundaries node) equal to ‘wall’ and other types as desired.

1 Like