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

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

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

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

1

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

2

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

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

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

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

3

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

7

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

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

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

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

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

4

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

  1. В поле "Значения" можно вводить несколько допустимых значений, разделяя их запятой. Параметр считается удовлетворяющим условию, если его значение соответствует хотя бы одному допустимому значению.
  2. Чтобы запятая не воспринималась как символ-разделитель ее необходимо экранировать обратным слешем. Например, "значение 1\,5".
  3. Условие "Наличие параметра" означает, что элемент будет обрабатываться при наличии такого параметра независимо от значения параметра.
  4. Условие "Отсутствие параметра" означает, что элемент будет обрабатываться при отсутствии такого параметра.
  5. Строковые параметры проверяются только условиями "Равно", "Не равно", "Содержит", "Не содержит".
  6. Условие "Содержит" проверяет, что в параметре элемента содержится хотя бы одно из допустимых значений. Условие "Не содержит", соответственно, проверяет, что в параметре не содержится хотя бы одно из значений.
  7. Чтобы использовать условие "Начинается с", выберите условие "Содержит" и добавьте в конец значения знак "*". Например, "Wall*".
  8. Чтобы использовать условие "Заканчивается на", выберите условие "Содержит" и добавьте в начало значения знак "*". Например, "*Wall".
  9. Чтобы использовать условие "Не начинается с" выберите условие "Не содержит" и добавьте в конец значения знак "*". Например, "Wall*".
  10. Чтобы использовать условие "Не заканчивается на" выберите условие "Не содержит" и добавьте в начало значения знак "*". Например, "*Wall".
  11. Проверка строковых значений производится с учетом регистра.
  12. Параметры типа "вкл/выкл" проверяются как целое число (0 – выкл, 1 – вкл).
  13. Все простые вложенные условия группового условия проверяются оператором "И", то есть должны совпадать все вложенные условия.
  14. Вместо имени параметра можно указывать GUID для общих параметров или системное имя для встроенных параметров.
  15. Условия "Наличие параметра" и "Отсутствие параметра" при проверке родительской группы (ключевое слово Group) проверяют, соответственно, находится или нет элемент в группе.
  16. Условия "Наличие параметра" и "Отсутствие параметра" при проверке родительской сборки (ключевое слово Assembly) проверяют, соответственно, находится или нет элемент в сборке.
  17. При использовании ключевых параметров "BottomZ" и "TopZ" проверяется, соответственно, самая нижняя и самая верхняя отметка из геометрии элемента. Ключевые параметры "BottomZ" и "TopZ" считаются числовыми и проверяются соответствующими условиями. Значения отметок берутся в миллиметрах с округлением до трех знаков после запятой. В поле "Значение" можно указывать имена уровней: если указанный уровень будет найден, будет использоваться его отметка в миллиметрах с округлением до 3 знаков после запятой.

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

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

5

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

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

Помимо параметров в условиях можно использовать идентификатор элемента (ID), идентификатор типоразмера элемента (TypeID), а также родительскую группу элемента элемента (Group) и родительскую сборку элемента (Assembly) при их наличии.

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

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

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

6

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

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

При проверке значений строковых параметров операторами «Равно», «Не равно», «Содержит», «Не содержит» учитывается регистр.

Комментарии для сайта Cackle