Categories from schedules vs categories from builtincategory enum

When creating a multi-category schedule in revit and adding the field of category I get 27 categories. As seen in the image below. However when I filter out using builtincategory I get 109. I understand that because I am filtering using OST that others categories would be available but, I cannot figure out what categories Revit is automatically detecting and filtering out. Any help is appreciated.

Code for filtering: collector = FilteredElementCollector(doc)
categories =[i for i in System.Enum.GetValues(BuiltInCategory) if “OST” in i.ToString() ]
cat=
elements =

for i in categories:
lst = FilteredElementCollector(doc).WhereElementIsNotElementType().OfCategory(i).ToElements()
if len(lst)>0:
cat.append(i.ToString()[4:])
elements.append(len(lst))

used_categories = [i for i in zip(cat,elements) if i[1]>0]

OUT = used_categories

Revit Schedule:

The schedule only shows you instances of elements. If you don’t have an instance of that category in your model there’s nothing to schedule. They’re both using the same list of categories, the schedule only shows what’s available to be shown.

Hi Nick,

Thanks for your response. Just to ask with the script I do get elements with instances such as the following:


So does the Revit schedule not take certain categories into consideration?
Im using the default sample project to test this.
Thanks

Correct.

Schedulable categories are typically reserved for model elements and certain annotations but always (as far as I can remember off the top of my head) instanced elements. If you look at the OST list you’ll notice categories for elements that are not available as an instance. (Ex: Sun Studies, Load Classifications, Panel and View Templates, etc.)

Does that explain it better?

Yes it does. So I can just filter with something like a getclrtype(familyinstance)

I’m not sure on what specifically will work, but, yes, something like that should do the trick.