Поиск по шаблону (коды REGEX)
Вы можете организовать поиск в таблицах или выбор элементов из модели по числовым или текстовым данным.
Текст можно сравнивать по точному совпадению, частично или по встречающимся фрагментам, удовлетворяющим условию.
Удобно, например, когда надо выбрать строки со словом, например, "стена" в любом месте текста.
Тогда для выборки мы зададим строку ".*стена.*".
Здесь .* означают клюбой символ повторенный сколько угодно раз. Т.е. сколько угодно до фрагмента "стена"и сколько угодно после.
Но вероятно где-то есть слово с большой буквы.
Тогда мы пишем ".*[Сс]тена.*". Или даже кто-то написал букву С из английской раскладки.
Можем это учесть - ".*[CcСс]тена.*".
В коде можно указать символ ^ - начало текста и $ - конец текста.
Кодировка REGEX дает широчайшие возможности для гибкой выборки в различных случаях обработки текстовой информации при выборках и т.п.
Например это можно использовать в выборке элементов по названию класса, слоя, ID и т.п.
Пример
Если пустая строка или есть русские буквы или есть символ # - то истина
"(^(?![\\w\\W]))|(?:.*[а-я].*)|(?:.*[#].*)"
Пример
Проверить на наличие текста "подстрока1" или "подстрока2" в любом месте текста:
"(?:.*подстрока1.*)|(?:.*подстрока2.*)"
Пример2
Выбрать внутренние стены в список №1, у которых есть строительный материал не тоньше 250мм, с именем, которое содержит:
...Кирпич ... керамич...
...кирпич ... керамич...
или
...керамич...Кирпич...
...керамич...кирпич...
ac_request_special("load_elements_list", 1, "WallType", 2,
"", "Cls", "Классификация АРХИКАД", "ВВЕТВИ", "Стена из кирпича", "", "И",
"", "UPub", "Расположение", "=", "Внутри", "", "И",
"", "EP", "buildingMaterialName_thickness(\"(?:.*[Кк]ирпич.*керамич.*)|(?:.*керамич.*[Кк]ирпич.*)\")", ">=", 0.250, "", "");
Для тестирования выражений используйте специальную панель, которая идет в комплекте с программами LABPP.
Она запускается через BIM Master.
Панель BIM Master вызывается через (Ctrl+Shift+F9).