Regulární výrazy umožňují konvertovat několik objektů, například celou průřezovou řadu IPE, jediným příkazem.
Příklad
Např. konverze IPE120 v programu Tekla na IPE 120 | Euronorm 19-57; ... | SZS v programu RFEM 6 by měla fungovat také pro všechny ostatní průřezy řady průřezů IPE.
Aby bylo možné provést konverzi pro celou průřezovou řadu IPE, je standardní regulární výraz sestaven následovně:
Konverze z programu Tekla do programu RFEM 6 | Tekla | RFEM 6 |
regulární výraz | IPE(\d+) | IPE $1 | Euronorm 19-57; ... #/# |
Název materiálu|IPE120|IPE 120 | Euronorm 19-57; ... #/#
Název materiálu|IPE300|IPE 300 | Euronorm 19-57; ... #/#
- /#
Za výraz (\d+) lze dosadit libovolné desetinné číslo. (IPE200, IPE300,...)
Výraz $1 se vztahuje na dosazené desetinné číslo. Na následujícím obrázku je do převodní tabulky Tekla přidán regulární výraz.
Pokud použijeme dvě desetinná čísla, vztahuje se výraz $1 na první číslo a výraz $2 na druhé číslo Následující tabulka to ukazuje na příkladu převodu materiálu.
Konverze z programu Tekla do programu RFEM 6 | Tekla | RFEM 6 |
regulární výraz | C(\d+)/(\d+) | C$1/$2 | EN 1992-1-1:2004/A1:2014 |
Název materiálu | C20/25 | C20/25 | EN 1992-1-1:2004/A1:2014 |
Název materiálu | C30/37 | C30/37 | EN 1992-1-1:2004/A1:2014 |
V tomto příspěvku si ukážeme a vysvětlíme možné problémy při zadávání regulárních výrazů.
Název průřezu 400*400 se pomocí výrazu (\d+)*(\d+) nezkonvertuje.
Hvězdička * má v regulárních výrazech zvláštní význam, a proto není interpretována jako samotný znak. Chcete-li použít hvězdičku jako samotný znak v regulárním výrazu, můžete ji zapsat se zpětným lomítkem \, a tím se zruší její zvláštní význam.
Konverze z programu Tekla do programu RFEM 6 | Tekla | RFEM 6 |
regulární výraz | (\d+)\*(\d+) | R_M1 $2/$1 |
Název materiálu | 400*400 | R_M1 400/400 |
Název materiálu | 150*200 | R_M1 150/200 |
Název průřezu RHS200*100*5 nelze vyjádřit výrazem RHS(\d+)\*(\d+)\*(\d+).
Pokud použijeme několik podobných regulárních výrazů, může dojít k použití nesprávného regulárního výrazu (viz příklad na obrázku).
Pomocí znaku pro horní index ^ lze určit, že se regulární výraz použije pouze tehdy, pokud je platný na začátku názvu materiálu nebo průřezu. Výraz ^(\d+)\*(\d+) proto již není pro RHS průřez platný, protože název tohoto průřezu nezačíná číslem (jako např. 400x400).
Konverze z programu Tekla do programu RFEM 6 | Tekla | RFEM 6 |
regulární výraz | ^(\d+)\*(\d+) | R_M1 $2/$1 |
Název materiálu | 400*400 | R_M1 400/400 |
Název materiálu | 300*300 | R_M1 300/300 |
regulární výraz | RHS(\d+)\*(\d+)\*(\d+) | RRO $1x$2x$3 | EN 10219-2 | ALUKÖNIGSTAHL |
Název materiálu | RHS200*100*5 | RRO 200x100x5 | EN 10219-2 | ALUKÖNIGSTAHL |
Název materiálu | RHS180*140*8 | RRO 180x140x8 | EN 10219-2 | ALUKÖNIGSTAHL |
Jak mohu převést materiál/průřez z programu RFEM 6 nezávisle na označení v normě?
Na rozdíl od programu RFEM 6 programy Revit a Tekla přiřazují názvy materiálů a průřezů nezávisle na normách. Pokud se tak například průřez HEA 300 z různých norem z programu RFEM 6 převede na HEA 300 v programu Revit nebo Tekla bez přiřazené normy, lze pomocí regulárního výrazu .*$ ignorovat označení normy v názvu.
Konverze z programu RFEM 6 do programu Tekla | RFEM 6 | Tekla |
regulární výraz | HEA (\d+).*$ | HEA$1 |
Název materiálu | HEA 300 | DIN 1025-3:1994-03 | Ferona | HEA300 |
Název materiálu | HEA 300 | Euronorm 53-62; ... #/# |
|HEA300
Název materiálu|HEA 300 | GB/T 11263-2017 | --|HEA300
- /#
Regulární výrazy pro L-profily se stejnými a nestejnými rameny nefungují současně.
Při použití podobných regulárních výrazů se může stát, že se načte vždy pouze první výraz v tabulce (příklad na obrázku). U L-profilu s nestejnými rameny (červeně) se nesprávně použije regulární výraz L-profilu se stejnými rameny (žlutě), protože je strukturovaný od začátku do konce naprosto stejně.
Aby bylo možné tyto výrazy od sebe odlišit, musí nesprávně použitý výraz začínat znakem ^ a končit znakem $.
Tím se zajistí, že regulární výraz se tak použije pouze tehdy, pokud název průřezu přesně odpovídá tomuto vzoru od začátku do konce. V následující tabulce je uveden příklad:
Konverze z programu Tekla do programu RFEM 6 | Tekla | RFEM 6 | |||
regulární výraz | ^L(\d+)\*(\d+)$ | L $1x$1x$2 |
|
|
|
Název materiálu | L40*4 | L 40x40x4 |
|
|
|
regulární výraz | L(\d+)\*(\d+)\*(\d+) | L $1x$2x$3 |
|
|
|
Název materiálu | L100*65*10 | L 100x65x10 |
|
|
V programu RFEM jsou rovnoramenné a nerovnoramenné L-profily definovány třemi hodnotami v názvu průřezu. Tekla používá pouze dvě hodnoty pro název průřezu pro rovnoramenné průřezy. Jak mohu zohlednit oba případy současně?
Nejdříve lze pro nerovnoramenné průřezy vytvořit běžný tiskový protokol se třemi hodnotami:
Konverze z programu RFEM 6 do programu Tekla | RFEM 6 | Tekla |
regulární výraz | L (\d+)x(\d+)x(\d+).*$ | L$1*$2*$3 |
Název materiálu | L 100x75x8 | L100*75*8 |
Regulární výraz pro rovnoramenné průřezy je definován následovně:
Konverze z programu RFEM 6 do programu Tekla | RFEM 6 | Tekla |
regulární výraz | L (\d+)x(\1)x(\d+).*$ | L$1*$3 |
Název materiálu | L 100x100x8 | L100*8 |
(\d+) zachytí první číslo.
(\1) zkontroluje, zda se druhé číslo shoduje s prvním. (Pokud ano, pak se použije tento regulární výraz)
(\d+) zachytí třetí číslo.
Jak se převádějí názvy průřezů s desetinnými čísly?
V programu RFEM existují řady průřezů, kde jsou rozměry průřezů uvedeny jako desetinné číslo v názvu průřezu (např. CHS duté průřezy). V následujícím příkladu se mají pomocí jednoho výrazu přepočítat následující průřezy:
- CHS 25x2 | EN 10219-2 | Condesa (názvy průřezů se dvěma celými čísly)
- CHS 26,9x2 | EN 10219-2 | Condesa (názvy průřezů s desetinným číslem a celým číslem)
- CHS 32x2,9 | EN 10219-2 | Condesa (názvy průřezů s celým číslem a desetinným číslem)
- CHS 37,5x2,9 | EN 10219-2 | Condesa (názvy průřezů se dvěma desetinnými čísly)
Každé číslo tak může mít desetinné místo. Regulární výraz pro toto pravidlo má následující strukturu:
CHS (\d*\.?\d*)x(\d*\.?\d*).*$
\d* vrací žádné nebo číslo.
\.? volitelně vrací desetinnou čárku (zohlední se tak celá čísla bez desetinné čárky)
\d* vrátí žádné nebo jedno číslo za desetinnou čárkou.
.*$ Norma v názvu bude ignorována.
Konverze z programu RFEM 6 do programu Tekla | RFEM 6 | Tekla | ||
regulární výraz | CHS (\d*\.?\d*)x(\d*\.?\d*).*$ | RO$1*$2 | ||
Název materiálu | CHS 25x2 |
|
|
RO25*2 |
Název materiálu | CHS 26.9x2 |
|
|
RO26.9*2 |
Název materiálu | CHS 32x2.9 |
|
|
RO32*2.9 |
Název materiálu | CHS 37.5x2.9 |
|
|
RO37.5*2.9 |