Surface.ByUnion giving strange results

I’m attempting to check for overlapping surfaces by comparing the area of the individual surfaces against the area of the surfaces passed through the Surface.ByUnion node and am getting some strange results - plus I’m coming to the conclusion that I may be going about this the wrong way …

So if all of the individual surfaces are overlapping then I get a single surface and the areas are different but if just one of them is separated from the rest then I get PolySurface and the areas come back as exactly the same. What I find a bit confusing is that if I stick a Surface.PerimeterCurve node on the Polysurface the perimeters are not what I would expect. Strangely (IMO), the Surface.Difference node is quite happy to subtract

… but I digress …

I have successfully used this approach in Grasshopper using the RegionUnion node but that was with Rectangles not surfaces …

So I am able to check for overlapping by subtracting the overall area(s) of the individual surfaces from the area of the floor and comparing that with the area of Surface coming out of the Surface.Difference - but that’s not really what I wanted to do initially - is there a better way?

Factory Layout.dyn (95.7 KB)