import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
toList = lambda x : x if hasattr(x, '__iter__') else [x]
def ElementsByCategory(bic, doc):
collector = FilteredElementCollector(doc).OfCategory(bic).WhereElementIsNotElementType()
return collector.ToElements()
inputdocs = toList(UnwrapElement(IN[1]))
documents = []
if inputdocs == [None]:
documents.append(DocumentManager.Instance.CurrentDBDocument)
else:
for inputdoc in inputdocs:
if inputdoc.GetType().ToString() == "Autodesk.Revit.DB.RevitLinkInstance": documents.append(inputdoc.GetLinkDocument())
elif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.Document": documents.append(inputdoc)
else: documents.append(DocumentManager.Instance.CurrentDBDocument)
OUT = []
for document in documents:
if isinstance(IN[0], list): OUT.append([ElementsByCategory(x, document) for x in IN[0]])
else: OUT.append(ElementsByCategory(IN[0], document))