通过使用正则表达式,可以通过一个单一条目来转换多个对象——例如整个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 |
接下来,将展示和解释定义正则表达式时可能出现的问题。
使用表达式 (\d+)*(\d+) 无法转换剖面名称 400*400。
星号*在正则表达式中具有特殊意义,因此不会被解释为简单字符。要在正则表达式中将星号作为单字符使用,可以使用反斜杠\\来取消其特殊含义。
| 从Tekla到RFEM 6的转换 | Tekla | RFEM 6 |
| 正则表达式 | (\d+)\*(\d+) | R_M1 $2/$1 |
| 截面名称 | 400*400 | R_M1 400/400 |
| 截面名称 | 150*200 | R_M1 150/200 |
使用表达式 RHS(\d+)\*(\d+)\*(\d+) 无法转换剖面名称 RHS200*100*5。
使用多个相似的正则表达式可能导致应用了错误的正则表达式(图中示例)。
通过使用插入符^可以指定仅当材料或截面名称的开头与其匹配时才使用正则表达式。因此,表达式^(\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未被转换?
由于网络服务的缘故,个别截面的转换名称与德语中所显示的不同。 KREIS_M1 500的转换必须定义为CIRCLE_M1 500。 这同样适用于以下截面名称:
- KREIS→CIRCLE
- RRO→RHS
- QRO→SHS
- KHP→CHS
- Kabel→Cable