Применение регулярных выражений в ТИМ на примере плагина

TBS Control

Темпы развития и внедрения BIM/ТИМ в России продолжают увеличиваться, сейчас всё больше и больше заказчиков требует наличие цифровых информационных моделей (ЦИМ) в техническом задании. Помимо требований о наличии, также предъявляется определенный уровень качества к элементам внутри этих моделей – требования к геометрии (графике) и требования к свойствам (атрибутам).

Проверка цифровой информационной модели (далее ЦИМ) на атрибутивное наполнение элементов — один из важнейших этапов контроля ее качества. Некорректное атрибутивное наполнение обязательно повлечет за собой ошибки, например, при формировании спецификаций или проверке на коллизии.
Часто бывает недостаточно просто убедиться в том, что у элемента заполнен параметр, требуется проверить, что значение параметра заполнено в соответствии с определенными требованиями. Но как это сделать?
Без всяких сомнений, мощнейшим инструментом для проверки корректности заполнения параметров являются регулярные выражения. В этой статье мы подробно расскажем о том, что такое регулярные выражения и как их можно использовать в плагине TBS Control для приложений линейки Model Studio CS.
Что такое регулярные выражения?
Каждый из сервисов экосистемы Tangl работает с файлами форматов ifc и rvt, а также есть возможность загрузки немоделируемых объемов через файлы xls.
«Регулярные выражения (regular expressions) — это формальный язык, используемый в компьютерных программах, работающих с текстом, для поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов».
Не думаю, что стало понятнее... Давайте разбираться...

Каждому из нас приходилось в огромном тексте искать нужный фрагмент. Чтобы не читать весь документ, мы прибегаем к поиску по ключевым словам. В большинстве текстовых редакторах эта функция вызывается комбинацией клавиш ctrl+f.

Так вот такая задача поиска некоторой подстроки (слово, словосочетания, предложение) в тексте крайне часто встречалась и продолжает встречаться в различных областях компьютерных наук. В конце 60-х годов прошлого века американский программист Кен Томпсон разработал механизм поиска по регулярным выражениям. Он предложил описывать шаблон искомой подстроки с помощью специальных символов или, другими словами, разработал формальный язык, названный регулярными выражениями. Предложенный подход оказался крайне удобным и с тех пор де факто стал стандартом.
Как устроены регулярные выражения?
Давайте попробуем разобраться в основах этого формального языка.

В данной статье для создания и тестирования регулярных выражений мы будем использовать бесплатный веб-сервис regex101.

Большинство символов в регулярных выражениях представляют сами себя за исключением специальных символов, их еще называют метасимволы, вот они: [ ] \ / ^ $ . | ? * + ( ) { }.

Давайте в поисковой строке regex101 введем слово «Яблоко». В введенном ниже тексте для тестирования мы увидим все совпадения. Пока полная аналогия с ctrl+f в любом текстовом редакторе.
Метасимвол «.» в регулярном выражении означает абсолютно любой символ. Введем в поисковую строку «яблон.», нашлось «яблони», «яблоня», «яблоню», так как все они начинаются на «яблон», а затем идет некоторый символ: «и», «я», «ю».
Если мы хотим найти не любой символ, как в случае с «.», а какой-то конкретный, то необходимо использовать квадратные скобки [ ], перечислив в них возможные значения без пробелов или запятых.

Кроме перечисления символов, в [ ] можно указать диапазон значений, в таком случае границы диапазона необходимо указать через дефис.

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

В примере ниже будут найдены все подстроки, начинающиеся на «яблон», но заканчивающиеся только на «и», «я» и «ю». Что впрочем дает тот же самый результат как и в предыдущем примере.
Пример использования диапазона в символьной группе. В переводе на русский язык мы ищем 2 подряд идущих символа, каждый из которых является цифрой в диапазоне от 0 до 9. Таким образом, например, можно искать двузначные числа. Кроме цифр можно указывать диапазон букв из алфавита.
Для наиболее распространенных символьных классов существуют псевдонимы, я приведу только самые популярные:
Крайне важной частью регулярных выражений являются квантификаторы - специальные символы, определяющие сколько раз предшествующее выражение может встречаться.
Используя псевдоним символьного класса и квантификатор перепишем регулярное выражение из предыдущего примера в новом виде. В сущности оба этих регулярных выражения будут находить одни и те же подстроки, но второй вариант более предпочтителен ввиду своей компактности.
С помощью символьного класса мы можем перечислить возможные значения одного символа, но если мы хотим перечислить возможные значения подстрок (слов, аббревиатур), то делать это необходимо, перечислив возможные подстроки через пайп (вертикальную черту).
Регулярные выражения в TBS Control
Давайте попробуем применить полученные знания на реальном примере. Проверим ЦИМ на корректность атрибутивного наполнения с помощью TBS Control – плагина предназначенного для проверки ЦИМ на атрибутивное наполнение по требованиям ИТЗ(EIR).

Рассмотрим подробнее параметр [PART_MATERIAL] (Материал). В нем содержится марка стали, из которой изготовлен элемент. У значений этого параметра есть строгая структура: сначала обязательно идет буква «С» из кириллического алфавита, а после нее 3 цифры. Параметры с подобной строгой структурой являются отличными кандидатами для проверки с помощью регулярных выражений.
Давайте попробуем применить полученные знания на реальном примере. Проверим ЦИМ на корректность

А почему нам вообще требуется проверять этот параметр с помощью регулярных выражений? Почему бы просто не проверить, что параметр заполнен и остановиться на этом? Проиллюстрируем это следующим примером.
Обратите внимание на первые две строки из спецификации ниже:
Значения в первых трех столбцах, по которым выполняется группировка, визуально совпадают, однако первые две строки, на которые я просил вас обратить внимание, не группируются в одну.

Причина здесь крайне проста: значение параметра [PART_MATERIAL] (Материал) у элементов из первой строки заполнено с помощью «С» из кириллического алфавита, а у элементов из второй строки с помощью «C» из латинского алфавита. Для нас визуально эти символы никак не отличаются, но для программы это два абсолютно разных символа не имеющих ничего общего.

Чтобы избежать такой путаницы давайте создадим регулярное выражение и проверим с его помощью значения параметров. Выглядеть оно будет крайне просто – «С\d{3}». Мы буквально говорим программе, проверь, что сначала идет буква «С», причем обязательно из кириллического алфавита, а потом три цифры подряд.

Далее с помощью плагина TBS Control проверим значения параметров на это регулярное выражение. Для этого сформируем файл с требованиями в формате таблицы Excel. В самом простом варианте он будет выглядеть следующим образом. Создадим одну группу «Колонны», отобрав туда элементы с помощь параметра [BOM_GROUP], и проверим для всех элементов, попавших в эту группу, параметр [PART_MATERIAL]
Выполним проверку ЦИМ по этому Excel файлу и получим следующий результат. Были найдены те самые элементы, которые и создают лишнюю строку в спецификации. Далее прямо в интерфейсе плагина можно ввести для параметров данных элементов корректные значения и применить изменения.
После исправления некоренных параметров лишняя строка пропала из спецификации.
Заключение
Если вы дочитали эту статью до конца, поздравляю: теперь вы имеете представление о том, что такое регулярные выражения и как они могут быть использованы для проверки ЦИМ.
Мы рассказали далеко не о всех возможностях регулярных выражений, но даже те, о которых успели, помогут сделать вашу работу проще, а качество ваших ЦИМ выше.
Если вам интересен этот или другой функционал плагина TBS Control, то будем рады подробнее рассказать о нем и сценариях его применения при работе с ЦИМ в ModelStudioCS.
Поделитесь статьей в социальных сетях: