Auto join Elements

Hi that should work for your case:
import clr
clr.AddReference(‘Protogeometry’)
from Autodesk.DesignScript.Geometry import *

clr.AddReference("RevitAPI")
import Autodesk

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
#Die Eingaben für diesen Block werden in Form einer Liste in den IN-Variablen gespeichert.
dataEnterningNode = IN

elementA = []
if isinstance(IN[0],list):
	for i in IN[0]:
		elementA.append(UnwrapElement(i))
else: 
	elementA.append(UnwrapElement(IN[0]))
elementB = []
if isinstance(IN[1],list):
	for i in IN[1]:
		elementB.append(UnwrapElement(i))
else: 
	elementB.append(UnwrapElement(IN[1]))
	
_Array = IN[2]

doc = DocumentManager.Instance.CurrentDBDocument
results = []
TransactionManager.Instance.EnsureInTransaction(doc)
counter = 0
for i in range(len(_Array)):
	for j in range(len(_Array[i])):
		if _Array[i][j]:
			result = Autodesk.Revit.DB.JoinGeometryUtils.JoinGeometry(doc,elementA[i],elementB[j])
			results.append(result)
TransactionManager.Instance.TransactionTaskDone()
OUT = results

It’s not the most elegant code, but it is clear in what it does.
You can see how I unwrap the elements here (you can also define an unwraping function if you want to apply it to many imputs in a clearer way)
It count’s on the structure of the inputs:

1 Like