Hello,
i can get the name of a category. But how can i get the API Name like OST_Rooms, OST_Slabs, OST_StructuralColumn, … a.s.o. ?
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
clr.AddReference('System')
from System.Collections.Generic import List
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
items = FilteredElementCollector(doc, doc.ActiveView.Id).WhereElementIsNotElementType().ToElements()
# Prepare dict with an empty List as default value
from collections import defaultdict
dict_elements = defaultdict(list)
for i in items:
try:
cat_name = i.Category.Name
dict_elements[cat_name].append(i)
except:
pass
# You might get 1-2 elements without Category!
# Show Results
result = [k for k in dict_elements.items()]
OUT = result
element = UnwrapElement(IN[0])
APICategory = [i.get_Parameter(BuiltInParameter.ELEM_CATEGORY_PARAM).AsValueString() for i in element]
OUT = APICategory