Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: enot от 24-09-2020, 11:54:06

Название: Категория с уровнем
Отправлено: enot от 24-09-2020, 11:54:06
как отфильтровать категории , которые могу иметь уровень
Название: Re: Категория с уровнем
Отправлено: Александр Игнатович от 08-10-2020, 11:09:23
Собрать список таких категорий  ;D

Я бы предположил, что уровень есть только у модельных категорий (CategoryType == CategoryType.Model), но, очевидно, что не у всех.

Сначала я бы добавил в список все категории, которые можно назначить семейству, создаваемому из "Метрическая система, типовая модель.rft" (Metric Generic Model.rft). Это список семейств по кнопке "категория и параметры семейств" в режиме редактирования семейства.

Дальше буду кидать примеры на Iron Python Shell, которые будут работать, если установлен RevitLookup. Вот эти 2 строчки добавляй либо в начало скрипта, либо один раз в настройках в файле init.py
Код - Python [Выбрать]
  1. clr.ImportExtensions(System.Linq)
  2. from System.Collections.Generic import *

Итак, получаем список категорий, который можно назначить семейству:
Код - Python [Выбрать]
  1. lookup(doc.Settings.Categories.Cast[Category]().Where(lambda x: doc.OwnerFamily.IsAppropriateCategoryId(x.Id)).ToList())

У элементов этих категорий может быть назначен (а может и нет  :P) уровень. Но это, явно не все.
Теперь идем в проект и смотрим, какие из элементов оставшихся категорий потенциально могут иметь уровень:
Код - Python [Выбрать]
  1. lookup(doc.Settings.Categories.Cast[Category]().Where(lambda x: x.CategoryType == CategoryType.Model and x.AllowsBoundParameters and x.IsVisibleInUI).ToList())

Вот этот список нужно уже обработать ручками, оттуда явно выкидываются вскякие генпланы, топографии, провода и проч. Итоговый список закидываем в тестирование и в течение некоторого времени из списка, либо выбрасываются, либо добавляются категории  :)