1154x
005435
2024-02-27

Błędna konwersja materiału lub przekroju w Revit lub Tekla (regex)

Otrzymuję błędną konwersję w Tekla/Revit, gdy używam wyrażeń regularnych (regex) w tabeli konwersji.


Odpowiedź:

Dzięki zastosowaniu wyrażeń regularnych możliwa jest konwersja wielu obiektów — na przykład całej serii profili IPE — za pomocą jednego wpisu.

Przykład

Konwersja np. IPE120 w Tekli do IPE 120 | Euronorm 19-57; ... | SZS w RFEM 6 powinna działać również dla wszystkich innych przekrojów serii profili IPE.

Aby utworzyć konwersję dla całej serii profili IPE, wyrażenie regularne buduje się w następujący sposób:

Konwersja z Tekli do RFEM 6 Tekla RFEM 6
wyrażenie regularne IPE(\d+) IPE $1 | Euronorm 19-57; ... | SZS
nazwa przekroju IPE120 IPE 120 | Euronorm 19-57; ... | SZS
nazwa przekroju IPE300 IPE 300 | Euronorm 19-57; ... | SZS

Dla wyrażenia (\d+) można wstawić dowolną liczbę całkowitą (IPE200, IPE300,...).

Za pomocą wyrażenia $1 odwołuje się do wstawionej liczby. Na poniższym rysunku dodano wyrażenie regularne do tabeli konwersji w Tekli.

Jeżeli używane są dwie liczby, wyrażenie $1 odnosi się do pierwszej liczby, a $2 do drugiej. W poniższej tabeli pokazano to na przykładzie konwersji materiału.

Konwersja z Tekli do RFEM 6 Tekla RFEM 6
wyrażenie regularne C(\d+)/(\d+) C$1/$2 | EN 1992-1-1:2004/A1:2014
nazwa materiału C20/25 C20/25 | EN 1992-1-1:2004/A1:2014
nazwa materiału C30/37 C30/37 | EN 1992-1-1:2004/A1:2014

Poniżej przedstawiono i omówiono możliwe problemy przy definiowaniu wyrażeń regularnych.

Nazwa profilu 400*400 nie jest konwertowana za pomocą wyrażenia (\d+)*(\d+).

Gwiazdka * ma specjalne znaczenie w wyrażeniach regularnych, dlatego nie jest interpretowana jako zwykły znak. Aby użyć gwiazdki jako pojedynczego znaku w wyrażeniu regularnym, można zapisać ją z ukośnikiem odwrotnym \, aby zniesć jej specjalne znaczenie.

Konwersja z Tekli do RFEM 6 Tekla RFEM 6
wyrażenie regularne (\d+)\*(\d+) R_M1 $2/$1
nazwa przekroju 400*400 R_M1 400/400
nazwa przekroju 150*200 R_M1 150/200

Nazwa profilu RHS200*100*5 nie jest konwertowana za pomocą wyrażenia RHS(\d+)\*(\d+)\*(\d+).

Jeżeli używane jest kilka podobnych wyrażeń regularnych, może to spowodować, że zostanie zastosowane błędne wyrażenie regularne (przykład na rysunku).

Za pomocą znaku potęgowego ^ można określić, że wyrażenie regularne ma być używane tylko wtedy, gdy odpowiada początkowi nazwy materiału lub przekroju. Wyrażenie ^(\d+)\*(\d+) nie jest zatem już prawidłowe dla przekroju RHS, ponieważ nazwa przekroju RHS nie zaczyna się od liczby (np. 400x400).

Konwersja z Tekli do RFEM 6 Tekla RFEM 6
wyrażenie regularne ^(\d+)\*(\d+) R_M1 $2/$1
nazwa przekroju 400*400 R_M1 400/400
nazwa przekroju 300*300 R_M1 300/300
wyrażenie regularne RHS(\d+)\*(\d+)\*(\d+) RRO $1x$2x$3 | EN 10219-2 | ALUKÖNIGSTAHL
nazwa przekroju RHS200*100*5 RRO 200x100x5 | EN 10219-2 | ALUKÖNIGSTAHL
nazwa przekroju RHS180*140*8 RRO 180x140x8 | EN 10219-2 | ALUKÖNIGSTAHL

Jak można konwertować materiał/przekrój z RFEM 6 niezależnie od oznaczenia normy.

W porównaniu z RFEM 6 Revit i Tekla nadają swoim materiałom i przekrojom nazwy niezależnie od norm. Aby np. przekrój HEA 300 w RFEM 6 z różnych norm został przekształcony w HEA 300 bez przypisania normy w Revit lub Tekla, można za pomocą wyrażenia regularnego .*$ zignorować oznaczenie normy w nazwie.

Konwersja z RFEM 6 do Tekli RFEM 6 Tekla
wyrażenie regularne HEA (\d+).*$ HEA$1
nazwa przekroju HEA 300 | DIN 1025-3:1994-03 | Ferona HEA300
nazwa przekroju HEA 300 | Euronorm 53-62; ... | SZS HEA300
nazwa przekroju HEA 300 | GB/T 11263-2017 | -- HEA300

Wyrażenia regularne dla równe i nierówne L-profile nie działają jednocześnie.

Jeżeli używane są podobne wyrażenia regularne, może to spowodować, że zawsze odczytywane jest tylko pierwsze wyrażenie w tabeli (przykład na rysunku). Dla nierównego L-profilu (czerwony) błędnie używane jest wyrażenie regularne dla równego L-profilu (żółty), ponieważ ma ono identyczną budowę od początku do końca.

Aby odróżnić takie wyrażenia od siebie, błędnie używane wyrażenie musi zaczynać się od ^ i kończyć znakiem $.
W ten sposób określa się, że wyrażenie regularne ma być używane tylko wtedy, gdy nazwa profilu od początku do końca dokładnie odpowiada temu wzorcowi. W poniższej tabeli pokazano to na przykładzie:

Konwersja z Tekli do RFEM 6 Tekla RFEM 6
wyrażenie regularne ^L(\d+)\*(\d+)$ L $1x$1x$2 | DIN EN 10056-1:1998-10 | --
nazwa przekroju L40*4 L 40x40x4 | | DIN EN 10056-1:1998-10 | --
wyrażenie regularne L(\d+)\*(\d+)\*(\d+) L $1x$2x$3 | EN 10056-1:2017 | ArcelorMittal (2018)
nazwa przekroju L100*65*10 L 100x65x10 | EN 10056-1:2017 | ArcelorMittal (2018)

W RFEM profile L równe i nierówne są definiowane w nazwie przekroju za pomocą trzech wartości. Tekla stosuje dla profili równych tylko dwie wartości w nazwie przekroju. Jak mogę uwzględnić oba przypadki jednocześnie?

Najpierw można utworzyć dla profili nierównych wyrażenie regularne z trzema wartościami:

Konwersja z RFEM 6 do Tekli RFEM 6 Tekla
wyrażenie regularne L (\d+)x(\d+)x(\d+).*$ L$1*$2*$3
nazwa przekroju L 100x75x8 L100*75*8

Dla profili równych wyrażenie regularne definiuje się następująco:

Konwersja z RFEM 6 do Tekli RFEM 6 Tekla
wyrażenie regularne L (\d+)x(\1)x(\d+).*$ L$1*$3
nazwa przekroju L 100x100x8 L100*8

(\d+) rejestruje pierwszą liczbę.

(\1) sprawdza, czy druga liczba jest identyczna z pierwszą. (Jeśli tak, to to wyrażenie regularne zostanie użyte)

(\d+) rejestruje trzecią liczbę.

Jak konwertowane są nazwy przekrojów z liczbami dziesiętnymi?

W RFEM istnieją serie przekrojów, w których wymiary przekrojów są zapisane w nazwie przekroju jako liczby dziesiętne (np. profile zamknięte CHS). Dla poniższego przykładu następujące przekroje mają zostać skonwertowane za pomocą jednego wyrażenia:

  • CHS 25x2 | EN 10219-2 | Condesa (nazwy przekrojów z dwiema liczbami całkowitymi)
  • CHS 26.9x2 | EN 10219-2 | Condesa (nazwy przekrojów z liczbą dziesiętną i liczbą całkowitą)
  • CHS 32x2.9 | EN 10219-2 | Condesa (nazwy przekrojów z liczbą całkowitą i liczbą dziesiętną)
  • CHS 37.5x2.9 | EN 10219-2 | Condesa (nazwy przekrojów z dwiema liczbami dziesiętnymi)

Każda liczba może więc opcjonalnie zawierać przecinek dziesiętny. Wyrażenie regularne dla tej reguły buduje się następująco:

CHS (\d*\.?\d*)x(\d*\.?\d*).*$

\d* rejestruje brak liczby albo jedną liczbę.

\.? opcjonalnie rejestruje separator dziesiętny (uwzględniane są więc liczby całkowite bez separatora dziesiętnego)

\d*rejestruje brak liczby albo jedną liczbę po separatorze dziesiętnym.

.*$ oznaczenie normy w nazwie jest ignorowane.

Konwersja z RFEM 6 do Tekli RFEM 6 Tekla
wyrażenie regularne CHS (\d*\.?\d*)x(\d*\.?\d*).*$ RO$1*$2
nazwa przekroju CHS 25x2 | EN 10219-2 | Condesa RO25*2
nazwa przekroju CHS 26.9x2 | EN 10219-2 | Condesa RO26.9*2
nazwa przekroju CHS 32x2.9 | EN 10219-2 | Condesa RO32*2.9
nazwa przekroju CHS 37.5x2.9 | EN 10219-2 | Condesa RO37.5*2.9

Dlaczego przekrój KREIS_M1 500 nie jest konwertowany?

Dla niewielu przekrojów oznaczenie konwersji różni się ze względu na usługi internetowe od przedstawionego oznaczenia w języku niemieckim.
Konwersja dla KREIS_M1 500 musi być zdefiniowana jako CIRCLE_M1 500.
Dotyczy to również następujących oznaczeń przekrojów:

  • KREIS→CIRCLE
  • RRO→RHS
  • QRO→SHS
  • KHP→CHS
  • Kabel→Cable

Autor

Paul opracowuje w dziale Product Engineering rozwiązania interfejsowe i dodatkowo wspiera Customer Support. Przy tym zawsze ma na uwadze spójną integrację systemu.



;