1154x
005435
2024-02-27

Ошибочное преобразование материала или сечения в Revit или Tekla (regex)

Я получаю некорректное преобразование в Tekla/Revit, если использую регулярные выражения (regex) в таблице преобразования.


Ответ:

Использование регулярных выражений позволяет выполнять преобразование нескольких объектов — например, целой серии профилей 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

Автор

Пол разрабатывает решения для интерфейсов в Product Engineering и дополнительно оказывает поддержку в Customer Support. При этом он всегда следит за сквозной интеграцией системы.



;