通过使用正则表达式,可以通过单个条目转换多个对象——例如整组 IPE 型钢系列。
示例
例如,将 Tekla 中的 IPE120 转换为 RFEM 6 中的 IPE 120 | Euronorm 19-57; ... | SZS,也应适用于 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 为其材料和截面名称的命名不依赖于标准。因此,例如,要将 RFEM 6 中不同标准下的 HEA 300 截面转换为 Revit 或 Tekla 中不带标准分配的 HEA 300,可以使用正则表达式 .*$ 忽略名称中的标准说明。
| 从 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 没有被转换?
对于少数截面,由于 Web 服务,转换所用的名称与德语中显示的名称不同。 KREIS_M1 500 的转换必须定义为 CIRCLE_M1 500。 这同样适用于以下截面名称:
- KREIS→CIRCLE
- RRO→RHS
- QRO→SHS
- KHP→CHS
- Kabel→Cable