from System.Collections.Generic import List

uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = [
    doc.GetElement(elId)
    for elId in __revit__.ActiveUIDocument.Selection.GetElementIds()
]

if len(selection) > 0:
    firstEl = selection[0]
    CID = firstEl.Category.Id
    TID = firstEl.GetTypeId()

    cl = FilteredElementCollector(doc)
    list = cl.OfCategoryId(CID).WhereElementIsNotElementType().ToElements()

    set = []
    modelItems = []
    vsItems = {}
    vsList = firstEl.ViewSpecific

    for r in list:
        if r.GetTypeId() == TID:
            set.append(r.Id)
            if vsList:
                ovname = doc.GetElement(r.OwnerViewId).ViewName
                if ovname in vsItems:
                    vsItems[ovname].append(r)
                else:
                    vsItems[ovname] = [r]
doc = DocumentManager.Instance.CurrentDBDocument

clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import FilteredElementCollector

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)

def tolist(obj1):
	if hasattr(obj1,"__iter__"): return obj1
	else: return [obj1]

cat = UnwrapElement(IN[0])
OUT = []

ueWrapper = None
wrappers = clr.GetClrType(Revit.Elements.ElementWrapper).GetMethods()
for w in wrappers:
	if w.ToString().startswith("Revit.Elements.UnknownElement"):
		ueWrapper = w
		break

if ueWrapper is not None:
	fec = FilteredElementCollector(doc).WhereElementIsNotElementType()
	if cat is not None:
		fec = fec.OfCategoryId(cat.Id)
	view_el = []
	for e in fec:
		view_el.append(ueWrapper.Invoke(None, (e, True) ) )
	OUT.append(view_el)