With a recursive Python function
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
def get_SubComponent2(item, i = 0):
"""get SubComponents recursively"""
i += 1
if i < 100: # avoid infinite loop
allSub = [item.Document.GetElement(subcompId)for subcompId in item.GetSubComponentIds()]
# return the list and check if SubComponent have a SubComponent too
# use sum trick to flat the python list
return allSub + sum([get_SubComponent2(subitem, i) for subitem in allSub], [])
return []
toList = lambda x : x if hasattr(x, '__iter__') else [x]
lst_item = toList(UnwrapElement(IN[0]))
OUT = [get_SubComponent2(item) for item in lst_item]