Как работают привязки
Как работают привязки
Tangl использует мощную систему тестов для анализа BIM данных – привязки. Привязка – набор тестов, которые тестируют свойства элемента BIM модели.
Привязки являются одновременно системой запросов к свойствам элементов и системой тестирования этих свойств.
И вот почему:
- Привязка ищет по всему дереву свойств от внешних к внутренним
- Привязка находит отдельные свойства и группы свойств
- Привязка может искать до первого найденного или собирать все найденные свойства
- Привязка запоминает список найденных свойств
- Привязка анализирует каждое свойство из списка найденных
- Успешная привязка передает найденные свойства или группы свойств в дочернюю привязку
- Вложенная привязка может решать успешна она или нет если анализ любого блока переданных свойств успешен или если анализ всех переданных локов свойств успешен
- Дочерняя привязка может выбирать из какой родительской брать свойства или искать во всех сразу
- Привязки могут комбинироваться друг с другом
Вот несколько кейсов:
Привязка ищет по всему дереву свойств от внешних к внутренним
Поиск по всему диапазону свойств
Привязка ищет свойство "Category". Она пройдет по всем уровням и свойствам сверху вниз от внешнего уровня к внутреннему и будет искать это свойство. Если такое свойство будет найдено, привязка будет считаться пройденной. Если свойство не будет найдено, привязка не будет пройдена.
Привязка находит отдельные свойства и группы свойств
Поиск свойства со значением
Привязка ищет свойство "Category" со значением "Тип защитного слоя". Привязка будет искать это свойство со значением. Привязка отбросит первое свойство, потому что значение не подходит под заданное, и будет искать дальше. Привязка будет пройдена,как только найдет первое свойство, удовлетворяющее условию.
Поиск группы свойств
Привязка ищет группу свойств и запоминает все данные, которые содержатся в этой группе свойств.
Привязка может искать до первого найденного или собирать все найденные свойства
Поиск до первого значения
В режиме Неглубокий поиск (значок с лупой) привязка будет проверять только первое значение, подходящее под искомое свойство. Если первое найденное свойство будет с неподходящим значением, привязка будет считаться не пройденной. Оставшиеся свойства проверяться не будут, даже если есть подходящие под условия привязки.
Если первое свойство будет с подходящим значением, то привязка будет считаться пройденной.
Поиск по всем найденным значениям
Тестирование привязки с НЕ в блоке условия в режиме глубокого поиска. Элемент успешно отбирается, если все значения/свойства соответствуют привязке.
Тестирование привязки БЕЗ НЕ в блоке условия в режиме глубокого поиска. Элемент успешно отбирается, если хотя бы одно значение/свойство соответствуют привязке.
Если ищется группа свойств с группой значений, то привязка будет искать первое подходящие свойство, которое есть в группе и сравнивать все значения. Если не будет найдено свойство с нужным значением, то элемент будет считаться непройденным.
Успешная привязка передает найденные свойства или группы свойств в дочернюю привязку
Вложенные привязки
У каждого элемента свойства могут повторяться в разных уровнях вложенности. Если необходимо найти элемент в конкретном уровне или группе свойств, то нужно сделать несколько вложенных привязок. Иначе одна привязка может дать все подходящие свойства из всего диапазона, а это может оказаться неправильным в конкретной ситуации.
Привязка будет пройдена.
Для поиска конкретного свойства в нужной группе или группах свойств делаются вложенные привязки. В этом случае родительская привязка передаст найденный блок или набор блоков свойств дочерней, как источник данных.
Привязка будет проверять элемент, проходя все уровни для поиска нужно свойства. Привязка будет считаться пройденной.
Вложенная привязка может решать успешна она или нет, если анализ любого блока переданных свойств успешен или если анализ всех переданных блоков свойств успешен
Привязка будет искать значение прозрачности в предыдущем уровне и если хотя бы одно свойство подходит под условие привязки, она будет пройдена.
Привязка будет успешной если все значения предыдущего уровня будут найдены. За это отвечает кнопка "Проверять все результаты предыдущего уровня".
Дочерняя привязка может выбирать из какой родительской брать свойства или искать в изначальных свойствах
Указатели на корневой уровень и выбор корневого уровня
Привязка ищет свойства, начиная с первого уровня вложенности (корневой уровень). Если в привязке задан поиск в конкретном уровне (не в корневом), то поиск последующих свойств тоже будет происходить в этом уровне.
Для того чтобы искать в уровнях, которые были пройдены в процессе привязки, нужно назначить сам корневой уровень и отметить в привязке, что поиск свойств должен происходить в корневом уровне.
По умолчанию корневым уровнем является самый первый уровень вложенности, и если не указывать корневой уровень, то поиск начнётся сначала свойств элемента.
Привязки могут комбинироваться друг с другом
Для поиска элемента с нужным количеством свойств используются привязки, связанные между собой логическими операторами И/ИЛИ.
Оператор ИЛИ используется для нестрогого выполнения привязок. Привязка будет пройдена, если хотя бы одна дочерняя привязка будет пройдена.
Оператор И используется для строгого выполнения всех привязок. Привязка будет искать элемент, подходящий под все указанные условия. Привязка будет пройдена, если все дочерние привязки будут пройдены.
Если свойства элемента будут подходить под условия привязки, то привязка будет считаться пройденной.