Smart Auto Join Elements in Revit is a Dynamo script that enables you to join the elements from the selected categories but only if they are intersected with each other. This is the right way to join the elements in Revit. The problem with the other add-ons and scripts for automatic joining is that they join all the elements whether they intersect or not. This is not the best scenario because there is no reason to join elements that are not intersected. It can take much more time and it makes unnecessary relations in the model. Revit will display you a warning but will continue to work. This scripts with custom Python nodes assists you when you want to join all elements of a category, or between two categories, and assures you that you will join only intersecting elements. The script doesn’t require Revit interfering check or Navisworks clash report.
The script starts with two Category nodes, you need to select two categories so all the elements from the first category will be joined to the elements from the other category, if they are intersected. So at the first Dynamo takes two categories, extracts all the elements from these two categories, and then it turns these elements into a geometrical representation. Then script figures out which element intersects which element from the other category. After that it starts to filter intersections, and removes elements that intersect with itself. And finally, the scripts connects the lists of elements from the both categories to the Join node.