Получить все системные семейства в документе.

Автор Тема: Получить все системные семейства в документе.  (Прочитано 2968 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Добрый день! Подскажите как можно получить все системные семейства?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Я бы начал вот с такого фильтра:
Код - C# [Выбрать]
  1. var filter = new LogicalFilter(new ElementIsElementTypeFilter(), new ElementClassFilter(typeof(FamilySymbol), true));

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Вы наверное имели ввиду вот так
Код - C# [Выбрать]
  1. var filter = new LogicalAndFilter(new ElementIsElementTypeFilter(), new ElementClassFilter(typeof(FamilySymbol)));
А дальше через WherePasses в FilteredElementCollector?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Нет, твой фильтр аналогичен
Код - C# [Выбрать]
  1. var filter = new ElementClassFilter(typeof(FamilySymbol))

Смысл в том, чтобы исключить FamilySymbol - типоразмеры пользовательских семейств.

А дальше через WherePasses в FilteredElementCollector?

Ну да

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
LogicalFilter - такого класса нет, есть либо AND либо OR, либо ElementLogicalFilter

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Да, LogicalAnd конечно же

Отмечено как Решение Павел55 02-09-2021, 13:29:57

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Код - C# [Выбрать]
  1.   SystemFamilies = new FilteredElementCollector(doc)
  2.                 .OfClass(typeof(HostObject))
  3.                 .WhereElementIsNotElementType()
  4.                 .ToList();