Собрать список таких категорий
Я бы предположил, что уровень есть только у модельных категорий (CategoryType == CategoryType.Model), но, очевидно, что не у всех.
Сначала я бы добавил в список все категории, которые можно назначить семейству, создаваемому из "Метрическая система, типовая модель.rft" (Metric Generic Model.rft). Это список семейств по кнопке "категория и параметры семейств" в режиме редактирования семейства.
Дальше буду кидать примеры на Iron Python Shell, которые будут работать, если установлен RevitLookup. Вот эти 2 строчки добавляй либо в начало скрипта, либо один раз в настройках в файле init.py
clr.ImportExtensions(System.Linq)
from System.Collections.Generic import *
Итак, получаем список категорий, который можно назначить семейству:
lookup(doc.Settings.Categories.Cast[Category]().Where(lambda x: doc.OwnerFamily.IsAppropriateCategoryId(x.Id)).ToList())
У элементов этих категорий может быть назначен (а может и нет
) уровень. Но это, явно не все.
Теперь идем в проект и смотрим, какие из элементов оставшихся категорий потенциально могут иметь уровень:
lookup(doc.Settings.Categories.Cast[Category]().Where(lambda x: x.CategoryType == CategoryType.Model and x.AllowsBoundParameters and x.IsVisibleInUI).ToList())
Вот этот список нужно уже обработать ручками, оттуда явно выкидываются вскякие генпланы, топографии, провода и проч. Итоговый список закидываем в тестирование и в течение некоторого времени из списка, либо выбрасываются, либо добавляются категории