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

Между фильтрами присутствует логический оператор И/ИЛИ. Оператор И означает, что объект удовлетворяет условиям фильтрации, если он удовлетворяет условиям обоих фильтров. Оператор ИЛИ, соответственно, означает, что объект удовлетворяет условиям фильтрации, если он удовлетворяет условиям хотя бы одного из двух фильтров.
Список типов из фильтра по типу и список условий из фильтра по атрибутам можно копировать в буфер обмена и вставлять из буфера обмена через контекстное меню, вызываемое с помощью правой кнопки мыши.
Фильтр по типу
Фильтр по типу представляет собой древовидный список допустимых типов объектов. Редактирование списка типов выполняется в диалоге родительского окна (окна плагина):

В верхней части диалога расположено поле для поиска типа по имени. При вводе в поле поиска звездочки (*) будут отображены все выбранные типы. Кнопки справа от списка позволяют отменить выбор всех типов
, развернуть
и свернуть все типы
, отобразить только выбранные типы
или отметить типы, объекты которых присутствуют в проекте
. Отмеченные типы можно сохранять в наборы
для последующего применения как в текущем плагине, так и в других плагинах, использующих фильтр по типу.

Загрузить набор типов (отметить типы из выбранного набора) можно с помощью кнопки
.
Фильтр по атрибутам
Фильтр по атрибутам представляет собой список условий, разделенных логическим оператором И или ИЛИ. В поле фильтра условия записываются специальным синтаксисом, в котором для операторов сравнения используются символы:
| = | – равно |
| < | – меньше |
| <= | – меньше или равно |
| > | – больше |
| >= | – больше или равно |
| <> | – не равно |
| ~ | – содержит |
| !~ | – не содержит |
Редактирование условий выполняется в отдельном окне:

Правила создания условий:
- Атрибут – условное понятие, объединяющее Свойства, Параметры и Расчетные характеристики объектов.
- В поле "Значения" можно вводить несколько допустимых значений, разделяя их запятой. Атрибут считается удовлетворяющим условию, если его значение соответствует хотя бы одному допустимому значению.
- Чтобы запятая не воспринималась как символ-разделитель ее необходимо экранировать обратным слешем. Например, "значение 1\,5".
- Условие "Наличие атрибута" означает, что объект будет обрабатываться при наличии такого атрибута независимо от значения атрибута.
- Условие "Отсутствие атрибута" означает, что объект будет обрабатываться при отсутствии такого атрибута.
- Строковые атрибуты проверяются только условиями "Равно", "Не равно", "Содержит", "Не содержит".
- Числовые атрибуты проверяются всеми условиями, кроме "Содержит".
- Условие "Содержит" проверяет, что в атрибуте объекта содержится хотя бы одно из допустимых значений. Условие "Не содержит", соответственно, проверяет, что в атрибуте не содержится хотя бы одно из значений.
- Чтобы использовать условие "Начинается с", выберите условие "Содержит" и добавьте в конец значения знак "*". Например, "Бетон*".
- Чтобы использовать условие "Заканчивается на", выберите условие "Содержит" и добавьте в начало значения знак "*". Например, "*бетон".
- Чтобы использовать условие "Не начинается с" выберите условие "Не содержит" и добавьте в конец значения знак "*". Например, "Бетон*".
- Чтобы использовать условие "Не заканчивается на" выберите условие "Не содержит" и добавьте в начало значения знак "*". Например, "*бетон".
- Проверка строковых значений производится с учетом регистра.
- Для проверки булевых атрибутов можно использовать значения "Да/Нет", "true/false", а также 0 (нет) и 1 (да).
- Если атрибут возвращает длину, по умолчанию значение берется в миллиметрах. Чтобы использовать другие единицы, укажите их в условии через пробел: "1 м" - длина в метрах, "10 см" - длина в сантиметрах, "100 мм" - длина в миллиметрах.
- Если атрибут возвращает площадь, по умолчанию значение берется в квадратных метрах. Чтобы использовать другие единицы, укажите их в условии через пробел: "1 м2" - площадь в квадратных метрах, "10 см2" - площадь в квадратных сантиметрах, "100 мм2" - площадь в квадратных миллиметрах.
- Если атрибут возвращает объем, по умолчанию значение берется в кубических метрах. Чтобы использовать другие единицы, укажите их в условии через пробел: "1 м3" - объем в кубических метрах, "10 см3" - объем в кубических сантиметрах, "100 мм3" - объем в кубических миллиметрах.
- Если атрибут возвращает массу, по умолчанию значение берется в килограммах. Чтобы использовать другие единицы, укажите их в условии через пробел: "1 т" - масса в тоннах, "10 кг" - масса в килограммах, "100 г" - масса в граммах.
- Все простые вложенные условия группового условия проверяются оператором "И", то есть должны совпадать все вложенные условия.
Правее расположены две ссылки, работающие как кнопки, позволяющие добавить в список условий новое простое или групповое условие.
В поле ввода идентификатор параметра может присутствовать кнопка, позволяющая выбрать атрибут из списка:

Данная кнопка появляется, если в фильтре по типу заданы типы. При этом будут доступны три списка – свойства, параметры и расчетные характеристики.
Групповое условие представляет собой список простых условий. При этом все простые условия внутри группового условия проверяются через логический оператор И. Т.е. объект удовлетворяет групповому условию, если он удовлетворяет всем вложенным простым условиям. В поле фильтра групповое условие выделяется квадратными скобками.
В нижней части окна расположен выпадающий список Объект подходит, если, задающий логический оператор, используемый между всеми условиями. Значение совпадают все условия соответствует логическому оператору И, а значение совпадает хоть одно условие соответствует логическому оператору ИЛИ.
Пример со скриншота выше в поле фильтра будет выглядеть следующим образом:

что означает, что стена подходит, если у нее в атрибуте "Марка" имеется значение "С-1" или если у нее в атрибуте "Марка" имеется значение "С-2", а атрибут "Номинальная длина" больше 3000.
При проверке значений строковых атрибутов операторами "Равно", "Не равно", "Содержит", "Не содержит" учитывается регистр.