1558x
005435
2024-02-27

Revit 或 Tekla 中材料或截面的转换错误(正则表达式)

当我在转换表中使用正则表达式时,Tekla/Revit 会出现转换错误。


回复:

通过使用正则表达式,只需一个条目即可转换多个对象,例如整个 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
  • Kabel→Cable

作者

Paul 在产品工程中开发接口解决方案,并额外支持客户服务。在此过程中,他始终关注无缝的系统集成。



;