Join Geometry not working properly

Hi all,I am a new learner of Dynamo and trying to solve the interferences between geometries in Dynamo.(For ex: ceilings and columns).Hovewer, i couldn’t manage it.when i try the script(below) it joins all the elements to each other not just the ones which intersects.I just want to join which are intersects each other.I tried to make a filter based on a geometry intersects but didn’t work.any suggestions?
thanks in advance.


could you please be more spesific, ?

Look into the Element.IntersectsElement node. It is a highly performant clash-detection node which will enable you to group the clashing elements - so columns and ceilings into sublists - making it very straightforward to join the geometry. You will need to experiment however, as co-planar faces are not clashes, so if your columns terminate flush with your ceiling for example, there is no clash, so you might have to think of alternative solutions if that is the case.

thanks for your answer Thomas;

This is the original revit file that interferences can be seen.

After applying this : (i don’t know whether you mention it or not).


It joins all members to each other even those which are not intersecting.

any solutions?

You are not managing your data structure (lists) correctly. View the video here to see how you can remove empty clash results to start. You then need to group the clashing elements from set A and B into a new sublist then perform the join.

From 1:30 onwards explains how to clean your lists.

i think i did it.However i still have the same problem.
Also i have to run the script repeatedly

There should be an equal number of items in both lists, otherwise there is more than 1 clashing element against element A. Verify your data before attempting the join, and resolve as necessary (using more filtering).

i have 8 ceilings and 16 columns which are intersects each other.using list.getitematindex and assingning them as the same index solve the situation but this time i have to run dynamo multiple times.when the project gets larger i think it will be a problem to use it.Is there another way to do it?

In that case you need to structure your data for that join node you’re using, so you need to group the element from setA with the elements which clash it in setB as a sublist (list Add + list map might be one way, but there are many so find one which works best for your requirements) so you end up with a list of lists - essentially you just want to insert each Element from setA into each corresponding sublist output by the IntersectsElement node.

Once grouped, on the join node set the input port lacing to @L2 and it should work as expected.