Фильтры (filters)

Для каждой группы/подгруппы может быть указан фильтр, который будет отбирать в эту группу объекты ЦИМ по заданным условиям.

Важно

Важен порядок применения фильтров. Правила, указанные в JSON, выполняются последовательно, начиная с верхней строки. Уже сгруппированные объекты ЦИМ исключаются из модели данных для последующих групп/подгрупп.

Фильтры могут быть заданы:

  1. По значению

  2. С помощью логических условий для объединения фильтров в логический оператор

По значению (by value)

Задаются с помощью следующих атрибутов:

  • valueName — имя атрибута, по которому будут отбираться объекты;

  • instructionусловный оператор, сравнивающий значение атрибута;

  • value — значение атрибута.

Фильтр, отбирающий объекты, у которых ObjectType соответствует значению Window.
1"filter": {
2    "valueName": "ObjectType",
3    "instruction": "exact",
4    "value": "Window"
5}

Важно

Поскольку BIM Classifier обращается к ЦИМ через API Renga, наименование некоторых атрибутов (и их значения) отличаются от локализованных в пользовательском интерфейсе. Для определения правильного наименования valueName нужного атрибута воспользуйтесь командой «Информация об объекте» на панели действий.

Условные операторы (instructions)

Следующие условные операторы можно применять в фильтрах:

Операторы

instruction

Условие

contains

содержит

partOf

является частью (строки)

exact

совпадает

greater

больше

less

меньше

Логические условия в фильтрах

Более сложные фильтры можно создавать с помощью следующих логических условий:

  • All — Возвращает true если все указанные условия верны. Принимает массив фильтров.

    Фильтр, отбирающий объекты, у которых соответствуют условиям обоих указанных фильтров.
     1"filter": {
     2    "all": [
     3        {   // Фильтр 1
     4            "valueName": "ObjectType",
     5            "instruction": "exact",
     6            "value": "Equipment"
     7        },
     8        {   // Фильтр 2
     9            "valueName": "parameter/Категория",
    10            "instruction": "exact",
    11            "value": "Спускной кран"
    12        }
    13    ]
    14}
    
  • Not — Условие, обратное условию all. Возвращает true если указанное условие не верно. Принимает один фильтр.

    Фильтр, отбирающий объекты, которые не соответствуют указанному условию.
    1"filter": {
    2    "not": {
    3        "valueName": "ObjectType",
    4        "instruction": "exact",
    5        "value": "Rebar"
    6    }
    7}
    
  • Any — Возвращает true если какое-либо из указанных условий верно. Принимает массив фильтров.

    Фильтр, отбирающий объекты, которые соответствуют условиям любому из указанных фильтров.
     1"filter": {
     2    "any": [
     3        {   // Фильтр 1
     4            "valueName": "Многослойный материал/Name",
     5            "instruction": "contains",
     6            "value": "Стена"
     7        },
     8        {   // Фильтр 2
     9            "valueName": "Многослойный материал/Name",
    10            "instruction": "contains",
    11            "value": "Перегородка"
    12        }
    13    ]
    14}