Использование регулярных выражений позволяет выполнять преобразование нескольких объектов — например, целой серии профилей IPE — через одну запись.
Пример
Преобразование, например, IPE120 в Tekla в IPE 120 | Euronorm 19-57; ... | SZS в RFEM 6 должно также работать для всех остальных сечений серии профилей IPE.
Чтобы создать преобразование для всей серии профилей IPE, регулярное выражение строится следующим образом:
| Преобразование из Tekla в RFEM 6 | Tekla | RFEM 6 |
| регулярное выражение | IPE(\d+) | IPE $1 | Euronorm 19-57; ... | SZS |
| Имя сечения | IPE120 | IPE 120 | Euronorm 19-57; ... | SZS |
| Имя сечения | IPE300 | IPE 300 | Euronorm 19-57; ... | SZS |
Для выражения (\d+) может быть использовано любое целое число (IPE200, IPE300,...).
С помощью выражения $1 производится ссылка на подставленное число. На следующем изображении регулярное выражение было добавлено в таблицу преобразования Tekla.
Если используются два числа, то с помощью выражения $1 ссылаются на первое число, а с помощью $2 — на второе число. В следующей таблице это показано на примере преобразования материала.
| Преобразование из Tekla в RFEM 6 | Tekla | RFEM 6 |
| регулярное выражение | C(\d+)/(\d+) | C$1/$2 | EN 1992-1-1:2004/A1:2014 |
| Имя материала | C20/25 | C20/25 | EN 1992-1-1:2004/A1:2014 |
| Имя материала | C30/37 | C30/37 | EN 1992-1-1:2004/A1:2014 |
Ниже будут показаны и объяснены возможные проблемы при определении регулярных выражений.
Имя профиля 400*400 не преобразуется выражением (\d+)*(\d+).
Звёздочка * имеет особое значение в регулярных выражениях и поэтому не интерпретируется как обычный символ. Чтобы использовать звёздочку как отдельный символ в регулярном выражении, её можно записать с обратной косой чертой \, чтобы отменить её специальное значение.
| Преобразование из Tekla в RFEM 6 | Tekla | RFEM 6 |
| регулярное выражение | (\d+)\*(\d+) | R_M1 $2/$1 |
| Имя сечения | 400*400 | R_M1 400/400 |
| Имя сечения | 150*200 | R_M1 150/200 |
Имя профиля RHS200*100*5 не преобразуется выражением RHS(\d+)\*(\d+)\*(\d+).
При использовании нескольких похожих регулярных выражений может привести к тому, что будет применено неверное регулярное выражение (пример на изображении).
С помощью знака ^ можно задать, что регулярное выражение используется только тогда, когда оно совпадает с началом имени материала или сечения. Выражение ^(\d+)\*(\d+) таким образом больше не является допустимым для сечения RHS, так как имя сечения RHS не начинается с числа (например, 400x400).
| Преобразование из Tekla в RFEM 6 | Tekla | RFEM 6 |
| регулярное выражение | ^(\d+)\*(\d+) | R_M1 $2/$1 |
| Имя сечения | 400*400 | R_M1 400/400 |
| Имя сечения | 300*300 | R_M1 300/300 |
| регулярное выражение | RHS(\d+)\*(\d+)\*(\d+) | RRO $1x$2x$3 | EN 10219-2 | ALUKÖNIGSTAHL |
| Имя сечения | RHS200*100*5 | RRO 200x100x5 | EN 10219-2 | ALUKÖNIGSTAHL |
| Имя сечения | RHS180*140*8 | RRO 180x140x8 | EN 10219-2 | ALUKÖNIGSTAHL |
Как преобразовать материал/сечение из RFEM 6 независимо от обозначения нормы.
По сравнению с RFEM 6, Revit и Tekla задают имена материалов и сечений независимо от норм. Чтобы, например, сечение HEA 300 в RFEM 6 из различных норм было преобразовано в HEA 300 без привязки к норме в Revit или Tekla, можно с помощью регулярного выражения .*$ игнорировать обозначение нормы в имени.
| Преобразование из RFEM 6 в Tekla | RFEM 6 | Tekla |
| регулярное выражение | HEA (\d+).*$ | HEA$1 |
| Имя сечения | HEA 300 | DIN 1025-3:1994-03 | Ferona | HEA300 |
| Имя сечения | HEA 300 | Euronorm 53-62; ... | SZS | HEA300 |
| Имя сечения | HEA 300 | GB/T 11263-2017 | -- | HEA300 |
Регулярные выражения для равнополочных и неравнополочных L-профилей не работают одновременно.
При использовании похожих регулярных выражений может привести к тому, что всегда будет считываться только первое выражение в таблице (пример на изображении). Для неравнополочного L-профиля (красный) ошибочно используется регулярное выражение равнополочного L-профиля (жёлтый), так как оно имеет одинаковую структуру от начала до конца.
Чтобы различать такие выражения, ошибочно используемое выражение должно начинаться с ^ и заканчиваться $.
Это задаёт, что регулярное выражение используется только тогда, когда имя профиля точно соответствует этому шаблону от начала до конца. В следующей таблице это показано на примере:
| Преобразование из Tekla в RFEM 6 | Tekla | RFEM 6 |
| регулярное выражение | ^L(\d+)\*(\d+)$ | L $1x$1x$2 | DIN EN 10056-1:1998-10 | -- |
| Имя сечения | L40*4 | L 40x40x4 | | DIN EN 10056-1:1998-10 | -- |
| регулярное выражение | L(\d+)\*(\d+)\*(\d+) | L $1x$2x$3 | EN 10056-1:2017 | ArcelorMittal (2018) |
| Имя сечения | L100*65*10 | L 100x65x10 | EN 10056-1:2017 | ArcelorMittal (2018) |
В RFEM равнополочные и неравнополочные L-профили с тремя значениями в имени сечения задаются. Tekla для равнополочных профилей использует только два значения в имени сечения. Как учесть оба случая одновременно?
Сначала для неравнополочных профилей можно создать регулярное выражение с тремя значениями:
| Преобразование из RFEM 6 в Tekla | RFEM 6 | Tekla |
| регулярное выражение | L (\d+)x(\d+)x(\d+).*$ | L$1*$2*$3 |
| Имя сечения | L 100x75x8 | L100*75*8 |
Для равнополочных профилей регулярное выражение задаётся следующим образом:
| Преобразование из RFEM 6 в Tekla | RFEM 6 | Tekla |
| регулярное выражение | L (\d+)x(\1)x(\d+).*$ | L$1*$3 |
| Имя сечения | L 100x100x8 | L100*8 |
(\d+) захватывает первое число.
(\1) проверяет, совпадает ли второе число с первым. (Если да, то используется это регулярное выражение)
(\d+) захватывает третье число.
Как преобразуются имена сечений с десятичными числами?
В RFEM есть серии сечений, в которых размеры сечений указаны в имени сечения как десятичное число (например, CHS-замкнутые профили). Для следующего примера должны преобразовываться следующие сечения с помощью выражения:
- CHS 25x2 | EN 10219-2 | Condesa (имена сечений с двумя целыми числами)
- CHS 26.9x2 | EN 10219-2 | Condesa (имена сечений с десятичным числом и целым числом)
- CHS 32x2.9 | EN 10219-2 | Condesa (имена сечений с целым числом и десятичным числом)
- CHS 37.5x2.9 | EN 10219-2 | Condesa (имена сечений с двумя десятичными числами)
Таким образом, каждое число может при необходимости содержать десятичную точку. Регулярное выражение для этого правила строится следующим образом:
CHS (\d*\.?\d*)x(\d*\.?\d*).*$
\d* захватывает ноль или одно число.
\.? захватывает десятичную точку необязательно (таким образом учитываются целые числа без десятичной точки)
\d*захватывает ноль или одно число после десятичной точки.
.*$ обозначение нормы в имени игнорируется.
| Преобразование из RFEM 6 в Tekla | RFEM 6 | Tekla |
| регулярное выражение | CHS (\d*\.?\d*)x(\d*\.?\d*).*$ | RO$1*$2 |
| Имя сечения | CHS 25x2 | EN 10219-2 | Condesa | RO25*2 |
| Имя сечения | CHS 26.9x2 | EN 10219-2 | Condesa | RO26.9*2 |
| Имя сечения | CHS 32x2.9 | EN 10219-2 | Condesa | RO32*2.9 |
| Имя сечения | CHS 37.5x2.9 | EN 10219-2 | Condesa | RO37.5*2.9 |
Почему сечение KREIS_M1 500 не преобразуется?
Для некоторых сечений обозначение для преобразования из-за веб-сервисов отличается от отображаемого обозначения на немецком языке.
Преобразование для KREIS_M1 500 должно быть задано как CIRCLE_M1 500.
Это же относится и к следующим обозначениям сечений:
- KREIS→CIRCLE
- RRO→RHS
- QRO→SHS
- KHP→CHS
- Kabel→Cable