1558x
005435
2024-02-27

Некорректная конвертация материала или сечения в Revit или Tekla (regex)

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


Ответ:

Благодаря использованию регулярных выражений конверсия нескольких объектов – например, целой серии профилей IPE – возможна с помощью одной единственной записи.

Пример

Конверсия, например, IPE120 из Tekla в IPE 120 | Euronorm 19-57; ... | SZS в RFEM 6 должна работать также для всех остальных сечений серии профилей IPE.

Чтобы создать конверсию для всей серии профилей IPE, регулярное выражение строится следующим образом:

  1. table.uni#

width=20%|width=20%|width=30% Конверсия из 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

  1. /

Для выражения (\d+) можно подставить любое целое число (IPE200, IPE300,...).

С помощью выражения $1 выполняется ссылка на подставленное число. На следующем рисунке регулярное выражение было добавлено в таблицу перевода Tekla.

Если используются два числа, то с помощью выражения $1 выполняется ссылка на первое число, а с помощью $2 – на второе число. В следующей таблице это показано на примере конверсии материалов.

  1. table.uni#

width=20%|width=20%|width=30% Конверсия из 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

  1. /

Ниже представлены и разъяснены возможные проблемы при определении регулярных выражений.

Название профиля 400*400 не конвертируется с помощью выражения (\d+)*(\d+).

Звёздочка * имеет особое значение в регулярных выражениях и поэтому не интерпретируется как простой символ. Чтобы использовать звёздочку как отдельный символ в регулярном выражении, её можно написать с обратной косой чертой \, чтобы отменить её особое значение.

  1. table.uni#

width=20%|width=20%|width=30% Конверсия из Tekla в RFEM 6|Tekla|RFEM 6 регулярное выражение|(\d+)\*(\d+)|R_M1 $2/$1 название сечения|400*400|R_M1 400/400 название сечения|150*200|R_M1 150/200

  1. /

Название профиля RHS200*100*5 не конвертируется с помощью выражения RHS(\d+)\*(\d+)\*(\d+).

При использовании нескольких похожих регулярных выражений может случиться так, что будет применено неверное регулярное выражение (пример на рисунке).

С помощью символа вставки ^ можно задать, что регулярное выражение используется только тогда, когда оно совпадает с началом названия материала или сечения. Таким образом, выражение ^(\d+)\*(\d+) больше не действительно для сечения RHS, так как название сечения RHS не начинается с числа (как, например, 400x400).

  1. table.uni#

width=20%|width=20%|width=30% Конверсия из 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

  1. /

Как конвертировать материал/сечение из RFEM 6 независимо от обозначения нормы?

По сравнению с RFEM 6, Revit и Tekla присваивают названия своих материалов и сечений независимо от норм. Чтобы, например, сечение HEA 300 в RFEM 6 из различных норм преобразовывалось в HEA 300 без привязки к норме в Revit или Tekla, с помощью регулярного выражения .*$ можно игнорировать обозначение нормы в названии.

  1. table.uni#

width=20%|width=30%|width=20% Конверсия из 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

  1. /

Регулярные выражения для равнополочных и неравнополочных уголков не работают одновременно.

При использовании похожих регулярных выражений может случиться так, что в таблице всегда считывается только первое выражение (пример на рисунке). Для неравнополочного уголка (красный) ошибочно используется регулярное выражение равнополочного уголка (жёлтый), так как оно построено от начала до конца совершенно одинаково.

Чтобы различать такие выражения друг от друга, ошибочно применяемое выражение должно начинаться с ^ и заканчиваться на $. Тем самым задаётся, что регулярное выражение используется только тогда, когда название профиля от начала до конца точно соответствует этому шаблону. В следующей таблице это показано на примере:

  1. table.uni#

width=20%|width=20%|width=30% Конверсия из 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)

  1. /

В RFEM равнополочные и неравнополочные уголки определяются с тремя значениями в названии сечения. Tekla использует для равнополочных профилей только два значения в названии сечения. Как я могу учитывать оба случая одновременно?

Сначала для неравнополочных профилей можно создать регулярное выражение с тремя значениями:

  1. table.uni#

width=20%|width=30%|width=20% Конверсия из RFEM 6 в Tekla|RFEM 6|Tekla регулярное выражение|L (\d+)x(\d+)x(\d+).*$|L$1*$2*$3 название сечения|L 100x75x8|L100*75*8

  1. /

Для равнополочных профилей регулярное выражение определяется следующим образом:

  1. table.uni#

width=20%|width=30%|width=20% Конверсия из RFEM 6 в Tekla|RFEM 6|Tekla регулярное выражение|L (\d+)x(\1)x(\d+).*$|L$1*$3 название сечения|L 100x100x8|L100*8

  1. /

(\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* захватывает ни одного или одно число после десятичной точки.

.*$ обозначение нормы в названии игнорируется.

  1. table.uni#

width=20%|width=30%|width=20% Конверсия из 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

  1. /

Почему сечение KREIS_M1 500 не конвертируется?

Для нескольких сечений обозначение для конверсии отличается от представленного обозначения на немецком языке из-за веб-сервисов. Конверсия для KREIS_M1 500 должна быть определена как CIRCLE_M1 500. Это также относится к следующим обозначениям сечений:

  • KREIS→CIRCLE
  • RRO→RHS
  • QRO→SHS
  • Kabel→Cable

Автор

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



;