Get the devices a Wire connects to

You are right, a little improvement for some case

wire elements

import clr
import sys
import System
#import Revit API
clr.AddReference('RevitAPI')
import Autodesk
import Autodesk.Revit.DB as DB

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

def get_wire_elements(wire): 
    out = []
    for con in wire.ConnectorManager.Connectors:
        if any(c.Owner.Id == wire.MEPSystem.Id for cRef in con.AllRefs for c in cRef.AllRefs):
            for cRef in con.AllRefs:
                if isinstance(cRef.Owner, DB.FamilyInstance):
                    out.append(cRef.Owner)
    return out

toList = lambda x : x if hasattr(x, '__iter__') else [x]

#Preparing input from dynamo to revit
lst_wires = toList(UnwrapElement(IN[0]))

OUT = [get_wire_elements(w_) for w_ in lst_wires]
3 Likes