hi,
here is an example
import clr
import sys
import System
#import net library
from System import Array
from System.Collections.Generic import List, IList, Dictionary, HashSet
#import Revit API
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB
#import Revit APIUI namespace
clr.AddReference('RevitAPIUI')
import Autodesk.Revit.UI as RUI
from Autodesk.Revit.UI.Selection import *
#import transactionManager and DocumentManager (RevitServices is specific to Dynamo)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
uidoc = uiapp.ActiveUIDocument
app = uiapp.Application
def get_AllLinkElementConnected():
#subfunction
def getSubConnect(elem):
lstElems = [elem]
lstIds = [elem.Id]
n = 0
while n < 2000: # max iteration to search
n += 1
init_len = len(lstElems)
#
for cdcCheck in lstElems:
if hasattr(cdcCheck, 'ConnectorManager'):
conManag = cdcCheck.ConnectorManager
else:
conManag = cdcCheck.MEPModel.ConnectorManager
for con in conManag.Connectors :
for conRef in con.AllRefs:
if conRef.Owner.Id not in lstIds:
#list ConnectorType must to be adapted
if conRef.ConnectorType in [ConnectorType.End, ConnectorType.Surface, ConnectorType.Curve]:
lstElems.append(conRef.Owner)
lstIds.append(conRef.Owner.Id)
#
# if no elements added break the while loop
if len(lstElems) == init_len:
break
return lstElems
#
### main function ###
ref = uidoc.Selection.PickObject(ObjectType.LinkedElement, "Select Link Element")
lnk_instance = doc.GetElement(ref)
lnk_doc = lnk_instance.GetLinkDocument()
lnk_elem = lnk_doc.GetElement(ref.LinkedElementId )
subElemsConnected = getSubConnect(lnk_elem)
subElemsConnected_refs = List[Reference]([Reference(x).CreateLinkReference(lnk_instance) for x in subElemsConnected])
uidoc.Selection.SetReferences(subElemsConnected_refs)
return subElemsConnected
OUT = get_AllLinkElementConnected()