1557x
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 Tekla na IPE 120 | Euronorm 19-57; ... | SZS w RFEM 6 ma również działać dla wszystkich innych przekrojów serii profili IPE.

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

  1. table.uni#

width=20%|width=20%|width=30% Konwersja z Tekla do RFEM 6|Tekla|RFEM 6 wyrażenie regularne|IPE(\d+)|IPE $1 | Euronorm 19-57; ... | SZS opis przekroju|IPE120|IPE 120 | Euronorm 19-57; ... | SZS opis przekroju|IPE300|IPE 300 | Euronorm 19-57; ... | SZS

  1. /

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 obrazie wyrażenie regularne zostało uzupełnione w tabeli konwersji Tekla.

Jeśli używane są dwie liczby, to za pomocą wyrażenia $1 odwołuje się do pierwszej liczby, a za pomocą $2 – do drugiej liczby. W poniższej tabeli pokazano to na przykładzie konwersji materiału.

  1. table.uni#

width=20%|width=20%|width=30% Konwersja z Tekla 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

  1. /

Poniżej przedstawiono i wyjaśniono 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 i 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 znosić jej specjalne znaczenie.

  1. table.uni#

width=20%|width=20%|width=30% Konwersja z Tekla do RFEM 6|Tekla|RFEM 6 wyrażenie regularne|(\d+)\*(\d+)|R_M1 $2/$1 opis przekroju|400*400|R_M1 400/400 opis przekroju|150*200|R_M1 150/200

  1. /

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

Jeśli używanych jest kilka podobnych wyrażeń regularnych, może to prowadzić do zastosowania niewłaściwego wyrażenia regularnego (przykład na obrazie).

Za pomocą karety ^ można określić, że wyrażenie regularne jest stosowane tylko wtedy, gdy pasuje do początku nazwy materiału lub przekroju. Wyrażenie ^(\d+)\*(\d+) nie jest więc już ważne dla przekroju RHS, ponieważ nazwa przekroju RHS nie zaczyna się od liczby (np. 400x400).

  1. table.uni#

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

  1. /

Jak przekonwertować materiał/przekrój z RFEM 6 niezależnie od oznaczenia normy?

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

  1. table.uni#

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

  1. /

Wyrażenia regularne dla profili L równoramiennych i nierównoramiennych nie działają jednocześnie.

Jeśli używane są podobne wyrażenia regularne, może to prowadzić do tego, że zawsze odczytywane jest tylko pierwsze wyrażenie w tabeli (przykład na obrazie). Dla profilu L nierównoramiennego (czerwony) błędnie używane jest wyrażenie regularne profilu L równoramiennego (żółty), ponieważ jest ono od początku do końca dokładnie tak samo skonstruowane.

Aby rozróżnić takie wyrażenia, błędnie używane wyrażenie musi zaczynać się od ^ i kończyć się $. W ten sposób określa się, że wyrażenie regularne jest stosowane 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:

  1. table.uni#

width=20%|width=20%|width=30% Konwersja z Tekla do RFEM 6|Tekla|RFEM 6 wyrażenie regularne|^L(\d+)\*(\d+)$|L $1x$1x$2 | DIN EN 10056-1:1998-10 | -- opis 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) opis przekroju|L100*65*10|L 100x65x10 | EN 10056-1:2017 | ArcelorMittal (2018)

  1. /

W RFEM profile L równoramienne i nierównoramienne są definiowane trzema wartościami w nazwie przekroju. Tekla używa dla profili równoramiennych tylko dwóch wartości w nazwie przekroju. Jak mogę uwzględnić oba przypadki jednocześnie?

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

  1. table.uni#

width=20%|width=30%|width=20% Konwersja z RFEM 6 do Tekla|RFEM 6|Tekla wyrażenie regularne|L (\d+)x(\d+)x(\d+).*$|L$1*$2*$3 opis przekroju|L 100x75x8|L100*75*8

  1. /

Dla profili równoramiennych wyrażenie regularne definiuje się w następujący sposób:

  1. table.uni#

width=20%|width=30%|width=20% Konwersja z RFEM 6 do Tekla|RFEM 6|Tekla wyrażenie regularne|L (\d+)x(\1)x(\d+).*$|L$1*$3 opis przekroju|L 100x100x8|L100*8

  1. /

(\d+) wychwytuje pierwszą liczbę.

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

(\d+) wychwytuje 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ą zawarte w nazwie przekroju jako liczby dziesiętne (np. profile zamknięte CHS). Dla poniższego przykładu następujące przekroje mają zostać przekonwertowane jednym wyrażeniem:

  • 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 zatem opcjonalnie zawierać przecinek dziesiętny. Wyrażenie regularne dla tej reguły konstruuje się w następujący sposób:

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

\d* wychwytuje brak lub jedną liczbę.

\.? wychwytuje opcjonalnie kropkę dziesiętną (liczby całkowite bez kropki dziesiętnej są zatem również uwzględniane)

\d* wychwytuje brak lub jedną liczbę po kropce dziesiętnej.

.*$ oznaczenie normy w nazwie jest ignorowane.

  1. table.uni#

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

  1. /

Dlaczego przekrój KREIS_M1 500 nie jest konwertowany?

Dla kilku przekrojów oznaczenie do konwersji różni się z powodu WebServices 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 opisów przekrojów:

  • KREIS→CIRCLE
  • RRO→RHS
  • QRO→SHS
  • 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.



;