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: