Get all categories used in a Document list

@ruben.romero You can try something like this with the GetElementCount Method

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *

clr.AddReference("RevitNodes")
import Revit

clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager

doc = DocumentManager.Instance.CurrentDBDocument
cats = doc.Settings.Categories

used_cat = []
unused_cat = []
for cat in cats:
	#if cat.CategoryType == CategoryType.Model or cat.CategoryType == CategoryType.Annotation:
	cate = Revit.Elements.Category.ById(cat.Id.IntegerValue)
	count = FilteredElementCollector(doc).OfCategoryId(cat.Id).WhereElementIsNotElementType().GetElementCount();
	if count>0:
		used_cat.append(cate)
	else:	
		unused_cat.append(cate)

OUT = used_cat, unused_cat
2 Likes