Regular expressions allow you to convert several objects, such as an entire IPE section series, with a single entry.
Example
Conversion of, for example, PIPE6STD in Tekla to Pipe Std. 6'" | AISC 16 | -- in RFEM 6 should also work for all other cross-sections of the Pipe cross-section series.
In order to create a conversion for the entire Pipe cross-section series, the regular expression is structured as follows:
Conversion from Tekla to RFEM 6 | Tekla | RFEM 6 |
Regular Expression | PIPE(\d+)STD | Pipe Std. $1 | SZS |
Cross-Section Name | PIPE6STD | Pipe Std. 6 | SZS |
Cross-Section Name | PIPE8STD | Pipe Std. 8 | SZS |
For the expression (\d+), you can enter any decimal number. (Pipe Std. 6, Pipe Std. 8, …)
The expression $1 refers to the entered decimal number. In the following image, the regular expression has been added to the Tekla conversion table.
If there are two decimal numbers used, the expression $1 refers to the first number and $2 refers to the second number. The following table shows this.
Conversion from Tekla to RFEM 6 | Tekla | RFEM 6 |
Regular Expression | W(\d+)X(\d+) | W $1x$2 |
Cross-Section Name | W12X22 | W 12x22 |
Cross-Section Name | C30/37 | W 14x38 |
This article shows and explains possible problems when defining regular expressions.
The cross-section name 12*12 is not converted with the expression (\d+)*(\d+).
The asterisk * has a special meaning in regular expressions, and is therefore not interpreted as a simple character. To use the asterisk as a single character in a regular expression, you can write it with a backslash \ to invalidate its special meaning.
Conversion from Tekla to RFEM 6 | Tekla | RFEM 6 |
Regular Expression | (\d+)\*(\d+) | R_M1 $2/$1 |
Cross-Section Name | 12*12 | R_M1 12/12 |
Cross-Section Name | 5*10 | R_M1 5/10 |
The cross-section name HSS12*8*3/8 is not converted with the expression HSS(\d+)\*(\d+)\*(\d+).
If several similar regular expressions are used, this may result in the use of an incorrect regular expression (see the example in the image).
You can use superscript ^ to specify using a regular expression only if it is valid at the beginning of the material or cross-section name. The expression ^(\d+)\*(\d+) is thus no longer valid for the RHS section, because this section name does not start with a number (such as 400x400).
Conversion from Tekla to RFEM 6 | Tekla | RFEM 6 |
Regular Expression | ^(\d+)\*(\d+) | R_M1 $2/$1 |
Cross-Section Name | 12*12 | R_M1 12/12 |
Cross-Section Name | 10*10 | R_M1 10/10 |
Regular Expression | Rect HSS(\d+)\*(\d+)\*(\d+) | Rect HSS $1x$2x$3 |
Cross-Section Name | Rect HSS7*3*0.313 | Rect HSS 7x3x0.313 |
Cross-Section Name | HSS4*2*0.250 | Rect HSS 4x2x0.250 |
How can I convert the material/cross-section from RFEM 6 regardless of the standard designation?
In contrast to RFEM 6, Revit and Tekla assign material and cross-section names regardless of the standards. Therefore, to convert, for example, an HP 8x36 cross-section in RFEM 6 into an HP 8x36 with no standard reference in Revit or Tekla, you can use the regular expression .*$ to ignore the standard designation in the name.
Conversion from RFEM 6 to Tekla | RFEM 6 | Tekla |
Regular Expression | HP\s(\d+)x(\d+).*$ | HP$1x$2 |
Cross-Section Name | HP 8x36 AISC 16 | HP8X36 |
Cross-Section Name | HP 8x36 AISC 15 | SZS | HP8X36 |
Cross-Section Name | HP 8x36 AISC 14 | HP8X36 |
The regular expressions for equal and unequal leg L-sections do not work simultaneously.
If several similar regular expressions are used, this may result in the use of the first expression only in the table (see the example in the image). For the unequal leg L-section (red), the regular expression of the equal leg L-section (yellow) is used incorrectly, because it is structured exactly the same from start to end.
To distinguish such expressions from each other, the incorrectly used expression must start with a ^ and end with a $.
Thus, the regular expression is only used if the section name matches this pattern exactly from start to end. The following table shows an example of this:
Conversion from Tekla to RFEM 6 | Tekla | RFEM 6 |
Regular Expression | ^L(\d+)\*(\d+)$ | L $1x$1x$2 | DIN EN 10056-1:1998-10 | -- |
Cross-Section Name | L40*4 | L 40x40x4 | | DIN EN 10056-1:1998-10 | -- |
Regular Expression | L(\d+)\*(\d+)\*(\d+) | L $1x$2x$3 | EN 10056-1:2017 | ArcelorMittal (2018) |
Cross-Section Name | L100*65*10 | L 100x65x10 | EN 10056-1:2017 | ArcelorMittal (2018) |
In RFEM, equal and unequal leg L-sections are defined by three values in the cross-section name. Tekla only uses two values for the cross-section name for the equal sections. How can I consider both cases at the same time?
First, you can create a regular printout with three values for the unequal leg sections:
Conversion from RFEM 6 to Tekla | RFEM 6 | Tekla |
Regular Expression | L (\d+)x(\d+)x(\d+).*$ | L$1*$2*$3 |
Cross-Section Name | L 100x75x8 | L100*75*8 |
The regular expression for equal leg sections is defined as follows:
Conversion from RFEM 6 to Tekla | RFEM 6 | Tekla |
Regular Expression | L (\d+)x(\1)x(\d+).*$ | L$1*$3 |
Cross-Section Name | L 100x100x8 | L100*8 |
(\d+) returns the first number.
(\1) checks if the second number is the same as the first one. (If so, then this regular expression is used)
(\d+) returns the third number.
How are cross-section names with decimal numbers converted?
In RFEM, there are cross-section series where the dimensions of the cross-sections are contained as a decimal number in the cross-section name (for example, CHS hollow sections). In the following example, the following cross-sections are to be converted with one expression:
- CHS 25x2 | EN 10219-2 | Condesa (section names with two integers)
- CHS 26.9x2 | EN 10219-2 | Condesa (cross-section names with a decimal number and an integer)
- CHS 32x2.9 | EN 10219-2 | Condesa (cross-section names with an integer and a decimal number)
- CHS 37.5x2.9 | EN 10219-2 | Condesa (cross-section names with two decimal numbers)
Thus, each number can optionally have a decimal place. The regular expression for this rule is structured as follows:
CHS (\d*\.?\d*)x(\d*\.?\d*).*$
\d* returns none or a number.
\.? optionally returns the decimal point (integers without a decimal point are thus taken into account)
\d* returns none or one number after the decimal point.
.*$ The standard in the name will be ignored.
Conversion from RFEM 6 to Tekla | RFEM 6 | Tekla | ||
Regular Expression | CHS (\d*\.?\d*)x(\d*\.?\d*).*$ | RO$1*$2 | ||
Cross-Section Name | CHS 25x2 | EN 10219-2 | Condesa | RO25*2 | ||
Cross-Section Name | CHS 26.9x2 |
|
|
RO26.9*2 |
Cross-Section Name | CHS 32x2.9 |
|
|
RO32*2.9 |
Cross-Section Name | CHS 37.5x2.9 |
|
|
RO37.5*2.9 |