Union solids if they intersect


Using the Solid.ByUnion node, I can join several solids into one. However, I would like to only union solids that intersect with each other. For example, if I have 2 solids that do not intersect with each other, I would like the node to return 2 solids rather than 1. Any thoughts on how to do this?

Many thanks.


So there is a DoesIntersect node, but it doesn’t work with a single list, like your union node…

Someone must have made one?! I can’t find it…

So it’s a bit of a pain to remove the self intersections of running a single list through both inputs… I also couldn’t find a node which gives the index of an item, but I’m sure someone has one of those or there’s an easy design script way… Mind is blank!


Hope that’s useful,


Hi @Mark.Ackerley,

Thank you very much for your kind response.
With the script that you proposed, I managed to get the lists of geometry that intersect with the others and does not intersect with the others. Next, I need to figure out how to get the elements (where the geometry comes from).

Hey, no worries, maybe it’s almost the same graph?

Hi @Mark.Ackerley,

Thanks again. I am using “Element.IntersectsSolid” node from BimorphNodes to get the elements where the geometry comes from. My script is shown below:

Hey, do you mind putting some more notes on to help me understand what you’re after? I’ve got a bit lost, sorry!

Hi @Mark.Ackerley,

You suggested an additional “List.FilterByBoolMask” node to get the elements where the geometry comes from, while I am using “Element.IntersectsSolid” node from BimorphNodes to get the same elements. Obviously, your way is much simpler. Thank you! :slight_smile:

1 Like