FilterRule Has Parameter ?

Автор Тема: FilterRule Has Parameter ?  (Прочитано 2468 раз)

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

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

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
FilterRule Has Parameter ?
« : 06-12-2018, 11:55:13 »
есть ли FilterRule , который проверят , существует ли параметр по имени в определенном элементе ?
пример , нужно для категории оборудования отфильтровать те элементы , которые имеют параметр по имени "Параметр 1"  - это будет некий ElementFilter   , который далее можно будет применить в WherePasses(ElementFilter)

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: FilterRule Has Parameter ?
« Ответ #1 : 06-12-2018, 11:58:58 »
Зачем FilterRule?
Код - C# [Выбрать]
  1. var c = new FilteredElementCollector(doc).Where(e => e.LookupParameter("Параметр 1") != null);

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: FilterRule Has Parameter ?
« Ответ #2 : 06-12-2018, 12:00:23 »
Зачем FilterRule?
так как использую его также в апдейтере - требуется при добавлении триггера
var c = new FilteredElementCollector(doc).Where(e => e.LookupParameter("Параметр 1") != null);
это,безусловно, можно далее сделать в Execute , но хотел узнать, возможно ли сразу через FilterRule

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: FilterRule Has Parameter ?
« Ответ #3 : 06-12-2018, 12:12:15 »
Есть несколько тем: вот, вот. Вот много каких-то примеров. Но нужно разбираться в этом всем. Лично я не сталкивался с этим ещё

Отмечено как Решение enot 06-12-2018, 17:26:14

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: FilterRule Has Parameter ?
« Ответ #4 : 06-12-2018, 13:12:46 »
Смотрите, для общих параметров есть метод:
Код - C# [Выбрать]
  1. ParameterFilterRuleFactory.CreateSharedParameterApplicableRule

По этому правилу создавайте ElementParameterFilter

Встроенные BuiltInParameter-ы определяются по категории, если есть в любом из элементов заданной категории, значит есть во всех остальных.

Параметры семейств (не общие) - только перебором