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

ADN Club => Revit API => Тема начата: Павел55 от 01-09-2021, 14:34:53

Название: Получить все системные семейства в документе.
Отправлено: Павел55 от 01-09-2021, 14:34:53
Добрый день! Подскажите как можно получить все системные семейства?
Название: Re: Получить все системные семейства в документе.
Отправлено: Александр Игнатович от 01-09-2021, 14:52:30
Я бы начал вот с такого фильтра:
Код - C# [Выбрать]
  1. var filter = new LogicalFilter(new ElementIsElementTypeFilter(), new ElementClassFilter(typeof(FamilySymbol), true));
Название: Re: Получить все системные семейства в документе.
Отправлено: Павел55 от 01-09-2021, 15:22:46
Вы наверное имели ввиду вот так
Код - C# [Выбрать]
  1. var filter = new LogicalAndFilter(new ElementIsElementTypeFilter(), new ElementClassFilter(typeof(FamilySymbol)));
А дальше через WherePasses в FilteredElementCollector?
Название: Re: Получить все системные семейства в документе.
Отправлено: Александр Игнатович от 01-09-2021, 15:25:16
Нет, твой фильтр аналогичен
Код - C# [Выбрать]
  1. var filter = new ElementClassFilter(typeof(FamilySymbol))

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

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

Ну да
Название: Re: Получить все системные семейства в документе.
Отправлено: Павел55 от 01-09-2021, 15:35:06
LogicalFilter - такого класса нет, есть либо AND либо OR, либо ElementLogicalFilter
Название: Re: Получить все системные семейства в документе.
Отправлено: Александр Игнатович от 01-09-2021, 15:39:08
Да, LogicalAnd конечно же
Название: Re: Получить все системные семейства в документе.
Отправлено: Павел55 от 02-09-2021, 13:25:32
Код - C# [Выбрать]
  1.   SystemFamilies = new FilteredElementCollector(doc)
  2.                 .OfClass(typeof(HostObject))
  3.                 .WhereElementIsNotElementType()
  4.                 .ToList();