Получение всех категорий из Schedule

Автор Тема: Получение всех категорий из Schedule  (Прочитано 2461 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Добрый день!
Мне необходимо получить категории спецификации.
Для одной категории я использую
Код - C# [Выбрать]
  1.  Category category = doc.Settings.Categories.get_Item((BuiltInCategory)viewSheet.Definition.CategoryId.IntegerValue);
но в случае с <Multi-Category> значение IntegerValue = -1.
И через LookUp категория возращает null.
Хочу попробовать вариант перебрать все элементы и получить их категории, но может есть вариант поприличнее, например получить эти категории напрямую из параметров спецификации?

Спасибо

Отмечено как Решение shss 06-03-2017, 19:22:44

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Re: Получение всех категорий из Schedule
« Ответ #1 : 04-03-2017, 11:57:42 »
Пока оставил вот так, до нахождения лучшего решения:
Код - C# [Выбрать]
  1. CategorySet cs = new CategorySet();
  2. List<string> categoriesName = new List<string>();
  3. foreach (ElementId elementId in new FilteredElementCollector(viewSheet.Document, viewSheet.Id).WhereElementIsNotElementType().ToElementIds()) {
  4.     Category elementCategory = doc.GetElement(elementId).Category;
  5.     if (!categoriesName.Contains(elementCategory.Name)) {
  6.         categoriesName.Add(elementCategory.Name);
  7.         cs.Insert(elementCategory);
  8.     }
  9. }
  10.