Фильтр элементов

Фильтр элементов – это инструмент фильтрации элементов по категориям и/или параметрам, состоящий из алгоритмов фильтрации и интерфейса настройки (далее по тексту - инструмент). Инструмент используется во многих плагинах. Например, в плагинах Рабочие наборы, Параметризация, Раскраска элементов и др.

Инструмент состоит из двух фильтров – фильтр по категориям и фильтр по параметрам. В некоторых плагинах возможно использование только одного из фильтров. Например, в плагине Сторона света используется только фильтр по параметрам.

В интерфейсе плагина инструмент может иметь горизонтальную форму:

1

или вертикальную форму:

2

Если в инструменте используются оба фильтра, то между ними присутствует логический оператор И/ИЛИ. Оператор И означает, что элемент удовлетворяет условиям фильтрации, если он удовлетворяет условиям обоих фильтров. Оператор ИЛИ, соответственно, означает, что элемент удовлетворяет условиям фильтрации, если он удовлетворяет условиям хотя бы одного из двух фильтров.

Список категорий из фильтра по категориям и список условий из фильтра по параметрам можно копировать в буфер обмена и вставлять из буфера обмена через контекстное меню, вызываемое с помощью правой кнопки мыши.

Фильтр по категориям

Фильтр по категориям представляет собой древовидный список допустимых категорий. Редактирование списка категорий выполняется в диалоге родительского окна (окна плагина):

3

В верхней части диалога расположено поле для поиска категории. Поиск производится как по отображаемому имени категории, так и по уникальному программному имени. С помощью кнопок ниже можно оставить в списке только определенные группы по типу категорий.

Кнопки справа от списка работают для текущей выбранной группы категорий. Они позволяют отменить выбор всех категорий checkbox multiple blank circle outline, развернуть arrow expand и свернуть все категории arrow collapse, отобразить только выбранные категории eye check outline или отметить категории, элементы которых присутствуют на текущем виде shape plus outline. Отмеченные категории можно сохранять в наборы arrow right bold для последующего применения как в текущем плагине, так и в других плагинах, использующих фильтр по категориям.

7

Загрузить набор категорий (отметить категории из выбранного набора) можно с помощью кнопки arrow left bold.

Фильтр по параметрам

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

= – равно
< – меньше
<= – меньше или равно
> – больше
>= – больше или равно
<> – не равно
~ – содержит
!~ – не содержит

Редактирование условий выполняется в отдельном окне:

4

В верхней части окна расположены ссылки Простое условие и Групповое условие, позволяющие добавить соответствующее условие. Условия можно менять местами, дублировать и удалять. Ссылка Очистить удаляет все условия.

Правила создания и проверки условий:

  1. В поле "Значения" можно вводить несколько допустимых значений, разделяя их запятой. Параметр считается удовлетворяющим условию, если его значение соответствует хотя бы одному допустимому значению.
  2. Чтобы запятая не воспринималась как символ-разделитель, ее необходимо экранировать обратным слешем. Например, "значение 1\,5".
  3. Условие "Наличие параметра" означает, что элемент будет обрабатываться при наличии такого параметра независимо от значения параметра.
  4. Условие "Отсутствие параметра" означает, что элемент будет обрабатываться при отсутствии такого параметра.
  5. Условие "Только для чтения" со значением "Нет" означает, что элемент будет обрабатываться, если параметр доступен для редактирования. Условие "Только для чтения" со значением "Да" означает, что элемент будет обрабатываться, если параметр недоступен для редактирования. Параметр может быть недоступен для редактирования, если это неизменяемый системный параметр (например, параметр "Объем"), элемент находится в недоступном рабочем наборе и в ряде других случаев.
  6. Строковые параметры проверяются только условиями "Равно", "Не равно", "Содержит", "Не содержит".
  7. Условие "Содержит" проверяет, что в параметре элемента содержится хотя бы одно из допустимых значений. Условие "Не содержит", соответственно, проверяет, что в параметре не содержится хотя бы одно из значений.
  8. Чтобы использовать условие "Начинается с", выберите условие "Содержит" и добавьте в конец значения знак "*". Например, "Wall*".
  9. Чтобы использовать условие "Заканчивается на", выберите условие "Содержит" и добавьте в начало значения знак "*". Например, "*Wall".
  10. Чтобы использовать условие "Не начинается с", выберите условие "Не содержит" и добавьте в конец значения знак "*". Например, "Wall*".
  11. Чтобы использовать условие "Не заканчивается на", выберите условие "Не содержит" и добавьте в начало значения знак "*". Например, "*Wall".
  12. Проверка строковых значений по умолчанию производится с учетом регистра – вариант Aa. Для условий "Равно", "Не равно", "Содержит", "Не содержит" можно выбрать вариант aa – проверку без учета регистра. В строковом представлении фильтра такое условие отмечается знаком "?" после имени параметра, например: Марка?=А-1.
  13. Параметры типа "вкл/выкл" проверяются как целое число: 0 – выключено, 1 – включено.
  14. Условия "Наличие параметра" и "Отсутствие параметра" при проверке специального параметра "Group" (родительская группа) проверяют, соответственно, находится или нет элемент в группе. Условие "Наличие параметра" интерпретируется как проверка "Элемент должен быть в группе", а условие "Отсутствие параметра" – как проверка "Элемент не должен быть в группе". Любое другое условие, если элемент находится в группе, проверяет имя группы по правилам для строк.
  15. Условия "Наличие параметра" и "Отсутствие параметра" при проверке специального параметра "Assembly" (родительская сборка) проверяют, соответственно, находится или нет элемент в сборке. Условие "Наличие параметра" интерпретируется как проверка "Элемент должен быть в сборке", а условие "Отсутствие параметра" – как проверка "Элемент не должен быть в сборке". Любое другое условие, если элемент находится в сборке, проверяет имя сборки по правилам для строк.
  16. Условия "Наличие параметра" и "Отсутствие параметра" при проверке специального параметра "Curtain" (стена является витражом) проверяют, соответственно, является или нет стена витражом. Условие "Наличие параметра" интерпретируется как проверка "Стена должна быть витражом", а условие "Отсутствие параметра" – как проверка "Стена не должна быть витражом".
  17. Условия "Наличие параметра" и "Отсутствие параметра" при проверке специального параметра "Nested" (семейство является вложенным) проверяют, соответственно, является или нет семейство вложенным. Условие "Наличие параметра" интерпретируется как проверка "Семейство должно быть вложенным", а условие "Отсутствие параметра" – как проверка "Семейство не должно быть вложенным".
  18. Условия "Наличие параметра" и "Отсутствие параметра" при проверке специального параметра "Parent" (семейство является родительским) проверяют, соответственно, является или нет семейство родительским, то есть содержит вложенные семейства. Условие "Наличие параметра" интерпретируется как проверка "Семейство должно быть родительским", а условие "Отсутствие параметра" – как проверка "Семейство не должно быть родительским".
  19. При использовании специальных параметров "BottomZ" и "TopZ" проверяется, соответственно, самая нижняя и самая верхняя отметка геометрии элемента. Специальные параметры "BottomZ" и "TopZ" считаются числовыми и проверяются соответствующими условиями. Значения отметок берутся в миллиметрах с округлением до трех знаков после запятой. В поле "Значение" можно указывать имена уровней: если указанный уровень будет найден, будет использоваться его отметка в миллиметрах с округлением до трех знаков после запятой.
  20. Специальный параметр "AreaScheme" возвращает название схемы зонирования, в которую входит Зона. Значение специального параметра "AreaScheme" проверяется по правилам для строк. Если элемент не является Зоной, условие игнорируется и всегда возвращает значение "верно".
  21. Условия "Наличие параметра" и "Отсутствие параметра" при проверке специального параметра "InMEPSystem" (элемент находится в инженерной системе) проверяют, соответственно, является или нет элемент частью инженерной системы. Условие "Наличие параметра" интерпретируется как проверка "Элемент является частью инженерной системы", а условие "Отсутствие параметра" – как проверка "Элемент не является частью инженерной системы".
  22. Условия "Наличие параметра" и "Отсутствие параметра" при проверке специального параметра "InRebarSystem" (арматура находится в арматурной системе) проверяют, соответственно, является или нет арматура частью арматурной системы. Условие "Наличие параметра" интерпретируется как проверка "Арматура является частью арматурной системы", а условие "Отсутствие параметра" – как проверка "Арматура не является частью арматурной системы".
  23. Специальный параметр "DocumentTitle" возвращает название текущего документа. Значение специального параметра "DocumentTitle" проверяется по правилам для строк. Если документ не сохранен или отсоединен, возвращается значение по умолчанию или пустая строка.
  24. Все простые вложенные условия группового условия проверяются оператором "И", то есть должны совпадать все вложенные условия.
  25. Вместо имени параметра можно указывать GUID общего параметра или системное имя встроенного параметра.

9

Созданные условия можно сохранять в наборы arrow up bold для последующего использования. При сохранении необходимо задать наименование, при необходимости – описание, а также выбрать область доступности набора:

  • Сохранить для плагина – набор будет доступен в текущем плагине
  • Сохранить глобально – набор будет доступен в других плагинах, использующих фильтр по параметрам.

Загрузить ранее сохраненный набор условий можно с помощью кнопки arrow down bold.

В поле идентификатора параметра может присутствовать кнопка, позволяющая выбрать параметр из списка:

5

Данная кнопка появляется, если в фильтре по категориям заданы категории. При этом, если в текущем документе существуют экземпляры элементов данных категорий, доступны два списка – Параметры экземпляра и Параметры типа. Если экземпляры в модели отсутствуют, но присутствуют типоразмеры, отображается только список параметров типа.

В качестве идентификатора параметра можно указать имя параметра, GUID общего параметра или системное имя встроенного параметра.

Помимо параметров в условиях можно использовать идентификатор элемента (ID), идентификатор типоразмера элемента (TypeID), а также специальные параметры Group, Assembly, Curtain, Parent, Nested, BottomZ, TopZ, AreaScheme, InMEPSystem, InRebarSystem, DocumentTitle и другие при их наличии.

При выборе условий "Равно" и "Не равно" становится доступной кнопка поиска значений magnify (black):

8

Поиск выполняется по всем элементам и типоразмерам элементов указанных категорий. В окне поиска доступны следующие области:

  • Проект – поиск значений параметра во всем текущем документе
  • Текущий вид – поиск значений параметра среди элементов текущего вида
  • Связанные файлы – поиск значений параметра в загруженных связанных файлах. Для поиска в связанных файлах можно выбрать конкретный связанный файл или вариант Все для поиска сразу во всех загруженных связанных файлах.

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

В нижней части окна расположен выпадающий список Элемент подходит, если, задающий логический оператор между условиями. Значение совпадают все условия соответствует логическому оператору И, а значение совпадает хоть одно условие соответствует логическому оператору ИЛИ.

Пример со скриншота выше в поле фильтра будет выглядеть следующим образом:

6

Это означает, что стена подходит, если у нее в параметре "Марка" имеется значение "С-1" или если у нее в параметре "Марка" имеется значение "С-2", а в параметре "Несущие конструкции" имеется значение "1".

Поиск искомых параметров в проверяемом элементе производится по имени параметра. При этом параметр сначала ищется в списке параметров экземпляра, а затем, если он не найден, – в списке параметров типоразмера.