Merge branch 'master' of https://gitea.schoenenberger.de/Schoenenberger_Systeme_GmbH/dxfmakros
This commit is contained in:
+76
-5
@@ -11,6 +11,7 @@
|
||||
;; Datei-/Skriptnamen sind fest im Code hinterlegt (*export-filenames*).
|
||||
;; ============================================================
|
||||
|
||||
(vl-load-com)
|
||||
|
||||
;; --- Export-Konfiguration aus cfg/export.cfg laden ---
|
||||
;; Nutzt den zentralen INI-Parser aus ssg_core.lsp (ssg-load-ini / ssg-ini-get /
|
||||
@@ -78,6 +79,47 @@
|
||||
)
|
||||
|
||||
|
||||
;; --- Safearray/Variant-Rueckgabe von vla-getboundingbox in Liste wandeln ---
|
||||
;; BricsCAD liefert ein Safearray, AutoCAD ein Variant mit Safearray.
|
||||
(defun csv:pt->list (v)
|
||||
(cond
|
||||
((= (type v) 'variant) (vlax-safearray->list (vlax-variant-value v)))
|
||||
((= (type v) 'safearray) (vlax-safearray->list v))
|
||||
((listp v) v)
|
||||
(t nil)
|
||||
)
|
||||
)
|
||||
|
||||
;; --- Bounding-Box (WCS, achsparallel) eines INSERT-Blocks ermitteln ---
|
||||
;; Erzwingt vorher ein vla-update (Regen), da vla-getboundingbox sonst auf
|
||||
;; nicht-regenerierten oder auf eingefrorenen Layern liegenden Bloecken scheitert.
|
||||
;; Rueckgabe: Liste (cx cy cz dx dy dz) -- Mittelpunkt + Ausdehnung, oder nil bei Fehler.
|
||||
(defun csv:get-bbox (ename / obj res minpt maxpt)
|
||||
(setq obj (vlax-ename->vla-object ename))
|
||||
(vl-catch-all-apply 'vla-update (list obj))
|
||||
(setq res
|
||||
(vl-catch-all-apply
|
||||
'(lambda ( / ll ur)
|
||||
(vla-getboundingbox obj 'll 'ur)
|
||||
(list (csv:pt->list ll) (csv:pt->list ur)))))
|
||||
(if (vl-catch-all-error-p res)
|
||||
nil
|
||||
(progn
|
||||
(setq minpt (car res))
|
||||
(setq maxpt (cadr res))
|
||||
(list
|
||||
(/ (+ (car minpt) (car maxpt)) 2.0)
|
||||
(/ (+ (cadr minpt) (cadr maxpt)) 2.0)
|
||||
(/ (+ (caddr minpt) (caddr maxpt)) 2.0)
|
||||
(- (car maxpt) (car minpt))
|
||||
(- (cadr maxpt) (cadr minpt))
|
||||
(- (caddr maxpt) (caddr minpt))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; --- Attribute eines INSERT-Blocks als JSON-Objekt lesen ---
|
||||
;; ename = Entity-Name des INSERT
|
||||
;; Rueckgabe: String wie {"TAG1":"Wert1","TAG2":"Wert2"}
|
||||
@@ -111,7 +153,9 @@
|
||||
|
||||
|
||||
;; --- Einen INSERT-Block als JSON-Objekt schreiben ---
|
||||
(defun csv:block-to-json (ename / ed blk-name layer pt rotation handle attribs)
|
||||
;; include-bbox = T -> zusaetzlich Bounding-Box (Mitte + Ausdehnung) ermitteln
|
||||
;; und als "bbox"-Objekt anhaengen (nur fuer EXPORTCSV, nicht fuer EXPORTSIVAS).
|
||||
(defun csv:block-to-json (ename include-bbox / ed blk-name layer pt rotation handle attribs bbox bbox-json)
|
||||
(setq ed (entget ename))
|
||||
(setq blk-name (cdr (assoc 2 ed)))
|
||||
(setq layer (cdr (assoc 8 ed)))
|
||||
@@ -120,6 +164,26 @@
|
||||
(setq handle (cdr (assoc 5 ed)))
|
||||
(if (null rotation) (setq rotation 0.0))
|
||||
(setq attribs (csv:read-attribs ename))
|
||||
(setq bbox-json "")
|
||||
(if include-bbox
|
||||
(progn
|
||||
(setq bbox (csv:get-bbox ename))
|
||||
(if bbox
|
||||
(setq bbox-json
|
||||
(strcat
|
||||
",\"bbox\":{"
|
||||
"\"cx\":" (rtos (nth 0 bbox) 2 4)
|
||||
",\"cy\":" (rtos (nth 1 bbox) 2 4)
|
||||
",\"cz\":" (rtos (nth 2 bbox) 2 4)
|
||||
",\"dx\":" (rtos (nth 3 bbox) 2 4)
|
||||
",\"dy\":" (rtos (nth 4 bbox) 2 4)
|
||||
",\"dz\":" (rtos (nth 5 bbox) 2 4)
|
||||
"}"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(strcat
|
||||
" {\"block_name\":\"" (csv:json-escape blk-name) "\""
|
||||
",\"layer\":\"" (csv:json-escape layer) "\""
|
||||
@@ -129,6 +193,7 @@
|
||||
",\"z\":" (rtos (if (caddr pt) (caddr pt) 0.0) 2 4)
|
||||
",\"rotation\":" (rtos (* (/ rotation pi) 180.0) 2 4)
|
||||
",\"attribs\":" attribs
|
||||
bbox-json
|
||||
"}"
|
||||
)
|
||||
)
|
||||
@@ -203,7 +268,9 @@
|
||||
;; label = Anzeigename (z.B. "EXPORTCSV")
|
||||
;; py-name = Python-Skript-Name (z.B. "export_csv.py")
|
||||
;; csv-name = Ergebnis-CSV-Name (z.B. "export.csv")
|
||||
(defun csv:run-export (label py-name csv-name / ss i ename fh out-pfad
|
||||
;; include-bbox = T -> Bounding-Box je Block ermitteln und mit exportieren
|
||||
;; (siehe csv:block-to-json); fuer EXPORTSIVAS nil.
|
||||
(defun csv:run-export (label py-name csv-name include-bbox / ss i ename fh out-pfad
|
||||
py-skript ergebnis-pfad cmd first-block count out-dir)
|
||||
;; Vor dem Export: IDs aller Bloecke sicherstellen und Duplikate korrigieren
|
||||
(princ (ssg-textf "exp-check-ids" (list label)))
|
||||
@@ -254,7 +321,7 @@
|
||||
(if (not first-block)
|
||||
(write-line "," fh)
|
||||
)
|
||||
(write-line (csv:block-to-json ename) fh)
|
||||
(write-line (csv:block-to-json ename include-bbox) fh)
|
||||
(setq first-block nil)
|
||||
(setq i (1+ i))
|
||||
)
|
||||
@@ -289,14 +356,18 @@
|
||||
(defun c:EXPORTSIVAS ()
|
||||
(csv:run-export "EXPORTSIVAS"
|
||||
(export:filename "sivas_script")
|
||||
(export:filename "sivas_csv"))
|
||||
(export:filename "sivas_csv")
|
||||
nil)
|
||||
)
|
||||
|
||||
;; --- EXPORTCSV: Einfache Item-Liste aller Bloecke (ohne Summierung) ---
|
||||
;; Ermittelt zusaetzlich je Block eine Bounding-Box (siehe csv:get-bbox),
|
||||
;; die im Python-Skript als Position/Boundingbox-Spalten ausgegeben wird.
|
||||
(defun c:EXPORTCSV ()
|
||||
(csv:run-export "EXPORTCSV"
|
||||
(export:filename "csv_script")
|
||||
(export:filename "csv_csv"))
|
||||
(export:filename "csv_csv")
|
||||
T)
|
||||
)
|
||||
|
||||
|
||||
|
||||
+86
-5
@@ -1,14 +1,19 @@
|
||||
@echo off
|
||||
setlocal EnableDelayedExpansion
|
||||
REM ================================================================
|
||||
REM run_tests.bat - Testausfuehrung fuer SSG_LIB
|
||||
REM
|
||||
REM Schalter:
|
||||
REM --check Fuehrt pytest-Validierung aus
|
||||
REM (ohne) Zeigt Hilfe an
|
||||
REM --check Fuehrt pytest-Validierung aus
|
||||
REM --diff_references Vergleicht CSVs in tests\reference und tests\output,
|
||||
REM ruft bei Unterschieden das Diff-Tool (meld) auf
|
||||
REM (ohne) Zeigt Hilfe an
|
||||
REM
|
||||
REM Beispiele:
|
||||
REM bin\run_tests.bat --check
|
||||
REM bin\run_tests.bat --check test_kreisel.py
|
||||
REM bin\run_tests.bat --diff_references
|
||||
REM bin\run_tests.bat --diff_references kreisel_tests_export.csv
|
||||
REM ================================================================
|
||||
|
||||
REM Umgebung setzen
|
||||
@@ -23,6 +28,8 @@ if exist "%DXFMAKRO%\.venv\Scripts\activate.bat" (
|
||||
|
||||
set DO_CHECK=0
|
||||
set CHECK_ARG=
|
||||
set DO_DIFF=0
|
||||
set DIFF_ARG=
|
||||
|
||||
REM Argumente parsen
|
||||
:parse_args
|
||||
@@ -36,11 +43,20 @@ if "%~1"=="--check" (
|
||||
shift
|
||||
goto :parse_args
|
||||
)
|
||||
if "%~1"=="--diff_references" (
|
||||
set DO_DIFF=1
|
||||
if not "%~2"=="" (
|
||||
set "DIFF_ARG=%~2"
|
||||
shift
|
||||
)
|
||||
shift
|
||||
goto :parse_args
|
||||
)
|
||||
echo Unbekannter Schalter: %~1
|
||||
goto :show_help
|
||||
|
||||
:after_args
|
||||
if %DO_CHECK%==0 goto :show_help
|
||||
if %DO_CHECK%==0 if %DO_DIFF%==0 goto :show_help
|
||||
|
||||
REM ================================================================
|
||||
REM --check: pytest-Validierung
|
||||
@@ -79,18 +95,83 @@ if %DO_CHECK%==1 (
|
||||
echo ================================================================
|
||||
)
|
||||
|
||||
REM ================================================================
|
||||
REM --diff_references: CSV-Referenzvergleich
|
||||
REM ================================================================
|
||||
if %DO_DIFF%==1 (
|
||||
echo.
|
||||
echo ================================================================
|
||||
echo REFERENZVERGLEICH ^(--diff_references^)
|
||||
echo ================================================================
|
||||
|
||||
if not defined DXFM_DIFFTOOL (
|
||||
echo.
|
||||
echo FEHLER: Kein Diff-Tool ^(meld^) gefunden - siehe setenv.bat.
|
||||
echo meld installieren: https://meldmerge.org
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
set DIFF_COUNT=0
|
||||
|
||||
if not "%DIFF_ARG%"=="" (
|
||||
if not exist "%DXFM_TESTREF%\%DIFF_ARG%" (
|
||||
echo FEHLER: Referenzdatei nicht gefunden: %DXFM_TESTREF%\%DIFF_ARG%
|
||||
exit /b 1
|
||||
)
|
||||
call :diff_one "%DXFM_TESTREF%\%DIFF_ARG%"
|
||||
) else (
|
||||
for %%F in ("%DXFM_TESTREF%\*.csv") do call :diff_one "%%F"
|
||||
)
|
||||
|
||||
echo.
|
||||
if !DIFF_COUNT!==0 (
|
||||
echo ================================================================
|
||||
echo ERGEBNIS: KEINE UNTERSCHIEDE GEFUNDEN
|
||||
echo ================================================================
|
||||
) else (
|
||||
echo ================================================================
|
||||
echo ERGEBNIS: !DIFF_COUNT! DATEI^(EN^) MIT UNTERSCHIEDEN
|
||||
echo ================================================================
|
||||
)
|
||||
)
|
||||
|
||||
exit /b 0
|
||||
|
||||
REM ----------------------------------------------------------------
|
||||
REM :diff_one <referenzdatei>
|
||||
REM Vergleicht eine Referenzdatei mit der gleichnamigen Output-Datei
|
||||
REM und ruft bei Unterschieden das Diff-Tool auf.
|
||||
REM ----------------------------------------------------------------
|
||||
:diff_one
|
||||
set "REF_FILE=%~1"
|
||||
set "OUT_FILE=%DXFM_TESTOUT%\%~nx1"
|
||||
if not exist "%OUT_FILE%" (
|
||||
echo WARNUNG: Keine Output-Datei fuer %~nx1 gefunden - uebersprungen.
|
||||
goto :eof
|
||||
)
|
||||
fc "%REF_FILE%" "%OUT_FILE%" >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
set /a DIFF_COUNT+=1
|
||||
echo Unterschied: %~nx1
|
||||
"%DXFM_DIFFTOOL%" "%REF_FILE%" "%OUT_FILE%"
|
||||
)
|
||||
goto :eof
|
||||
|
||||
:show_help
|
||||
echo.
|
||||
echo Aufruf: bin\run_tests.bat --check [testdatei]
|
||||
echo bin\run_tests.bat --diff_references [csv-datei]
|
||||
echo.
|
||||
echo Schalter:
|
||||
echo --check Fuehrt pytest-Validierung fuer alle Module aus
|
||||
echo --check test_kreisel.py Validiert nur Kreisel-Tests
|
||||
echo --check Fuehrt pytest-Validierung fuer alle Module aus
|
||||
echo --check test_kreisel.py Validiert nur Kreisel-Tests
|
||||
echo --diff_references Vergleicht alle CSVs in tests\reference/output,
|
||||
echo ruft bei Unterschieden meld auf
|
||||
echo --diff_references datei.csv Vergleicht nur die angegebene CSV-Datei
|
||||
echo.
|
||||
echo Workflow:
|
||||
echo 1. In BricsCAD: SSG_RUN_ALL_TESTS ausfuehren
|
||||
echo 2. bin\run_tests.bat --check
|
||||
echo 3. bin\run_tests.bat --diff_references
|
||||
echo.
|
||||
exit /b 1
|
||||
|
||||
@@ -41,6 +41,18 @@ if exist "C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe" (
|
||||
echo Keine BricsCAD-Installation gefunden.
|
||||
)
|
||||
|
||||
REM Diff-Tool fuer Referenzvergleich (run_tests.bat --diff_references) ermitteln
|
||||
set "DXFM_DIFFTOOL="
|
||||
for /f "delims=" %%D in ('where meld 2^>nul') do (
|
||||
if not defined DXFM_DIFFTOOL set "DXFM_DIFFTOOL=%%D"
|
||||
)
|
||||
if not defined DXFM_DIFFTOOL (
|
||||
if exist "C:\Program Files\Meld\Meld.exe" set "DXFM_DIFFTOOL=C:\Program Files\Meld\Meld.exe"
|
||||
)
|
||||
if not defined DXFM_DIFFTOOL (
|
||||
echo HINWEIS: Kein Diff-Tool ^(meld^) gefunden - run_tests.bat --diff_references steht nicht zur Verfuegung.
|
||||
)
|
||||
|
||||
REM Ueberladen von Umgebungsvariablen durch _setenv.bat (z.B. DXFM_DIM=3D)
|
||||
if exist "%~dp0_setenv.bat" (
|
||||
echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
|
||||
@@ -95,6 +107,7 @@ echo DXFMAKRO = %DXFMAKRO%
|
||||
echo DXFM_DIM = %DXFM_DIM%
|
||||
echo DXFM_BLOCKS = %DXFM_BLOCKS%
|
||||
echo DXFM_OMNIFLO = %DXFM_OMNIFLO%
|
||||
echo DXFM_DIFFTOOL = %DXFM_DIFFTOOL%
|
||||
echo ================================================================
|
||||
echo.
|
||||
|
||||
|
||||
@@ -27,3 +27,41 @@ pattern_variofoerderer= VF_*
|
||||
pattern_gefaellestrecke= GF_*
|
||||
pattern_strecke_module= Vario*, Staustrecke*, AUS_Element*, EIN_Element*
|
||||
pattern_ks_subblocks= KS_EIN, KS_AUS, K1, K2, K3, K4
|
||||
|
||||
[Planquadrate]
|
||||
section=Planquadrate_AN
|
||||
|
||||
# hier kann man im csv Export aus den Koordinaten der Bauteile die Planquadrate berechnen lassen, in denen sie liegen
|
||||
# Zählung ist numerisch oder Alphabetisch möglich, Schrittweite in m (z.B. 2m pro Spalte, 4m pro Zeile)
|
||||
# liegt man im ersten Quadrat, ist diese A/1, oder 1/1 oder 1/A, je nach Formatierung. Die Zählung beginnt immer bei 1
|
||||
[Planquadrate_NA]
|
||||
# z.B. 1/A
|
||||
x_step=2
|
||||
x_description=numerisch # zahlen, von links nach rechts, 2m pro Spalte
|
||||
y_step=4
|
||||
y_description=alphabetisch # Buchstaben von unten nach oben, 4m pro Zeile
|
||||
format= {x}/{y} # Formatierung der Planquadrate, {y} und {x} werden durch die berechneten gerundeten Werte der Objektkoordinaten ersetzt
|
||||
|
||||
[Planquadrate_AN]
|
||||
# z.B. A/1
|
||||
x_step=2
|
||||
x_description=alphabetisch # Buchstaben, von links nach rechts, 2m pro Spalte
|
||||
y_step=2
|
||||
y_description=alphabetisch # Zahlen von unten nach oben, 2m pro Zeile
|
||||
format= {x}/{y}
|
||||
|
||||
[Planquadrate_NN]
|
||||
# z.B. 2/5
|
||||
x_step=2
|
||||
x_description=numerisch # Zahlen, von links nach rechts, 2m pro Spalte
|
||||
y_step=4
|
||||
y_description=numerisch # Zahlen von unten nach oben, 4m pro Zeile
|
||||
format= {x}/{y}
|
||||
|
||||
[Nachbarschaft]
|
||||
# Toleranz fuer die Nachbarschaftserkennung beim CSV-Export (Spalte "Nachbarn").
|
||||
# Die Bounding-Box jedes Elements wird um die Haelfte dieses Werts nach allen
|
||||
# Seiten erweitert, bevor per STRtree (shapely) auf Ueberschneidung mit anderen
|
||||
# Elementen geprueft wird - zwei Elemente mit einem Abstand <= toleranz_mm
|
||||
# (z.B. zwei Kreisel) gelten dann ebenfalls als benachbart. Wert in mm.
|
||||
toleranz_mm=200
|
||||
@@ -1,7 +1,7 @@
|
||||
[
|
||||
{
|
||||
"Sivasnr": 821104025,
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522",
|
||||
"ProfilTyp": "APB 110 R 550/22,5 – 84/522",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Breite": 84,
|
||||
@@ -12,7 +12,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10090",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Innen",
|
||||
"ProfilTyp": "APB 110 R 550/22,5 – 84/522 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Breite": 84,
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104025+0_B10091",
|
||||
"ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Aussen",
|
||||
"ProfilTyp": "APB 110 R 550/22,5 – 84/522 mit TEF Aussen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 22.5,
|
||||
"Breite": 84,
|
||||
@@ -34,7 +34,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104021,
|
||||
"ProfilTyp": "APB 110 R 400/45° – 400/670",
|
||||
"ProfilTyp": "APB 110 R 400/45 – 400/670",
|
||||
"Radius": 400,
|
||||
"KurvenWinkel": 45,
|
||||
"Breite": 400,
|
||||
@@ -44,7 +44,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104026,
|
||||
"ProfilTyp": "APB 110 R 550/45° – 232/610",
|
||||
"ProfilTyp": "APB 110 R 550/45 – 232/610",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 45,
|
||||
"Breite": 232,
|
||||
@@ -54,7 +54,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104026+0_B10071",
|
||||
"ProfilTyp": "APB 110 R 550/45° – 232/610 mit TEF Innen",
|
||||
"ProfilTyp": "APB 110 R 550/45 – 232/610 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 45,
|
||||
"Breite": 232,
|
||||
@@ -64,7 +64,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104037,
|
||||
"ProfilTyp": "APB 110 R 550/45° – 205/337",
|
||||
"ProfilTyp": "APB 110 R 550/45 – 205/337",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 45,
|
||||
"Breite": 205,
|
||||
@@ -74,7 +74,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104029,
|
||||
"ProfilTyp": "APB 110 R 550/45° 191/552",
|
||||
"ProfilTyp": "APB 110 R 550/45 191/552",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 45,
|
||||
"Breite": 191,
|
||||
@@ -84,7 +84,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104031,
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825",
|
||||
"ProfilTyp": "APB 110 R 630/45 – 400/825",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 45,
|
||||
"Breite": 400,
|
||||
@@ -94,7 +94,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10060",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Aussen",
|
||||
"ProfilTyp": "APB 110 R 630/45 – 400/825 mit TEF Aussen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 45,
|
||||
"Breite": 400,
|
||||
@@ -104,7 +104,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104031+0_B10070",
|
||||
"ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Innen",
|
||||
"ProfilTyp": "APB 110 R 630/45 – 400/825 mit TEF Innen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 45,
|
||||
"Breite": 400,
|
||||
@@ -114,7 +114,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104024,
|
||||
"ProfilTyp": "APB 110 R 400/67,5° – 339/508",
|
||||
"ProfilTyp": "APB 110 R 400/67,5 – 339/508",
|
||||
"Radius": 400,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Breite": 339,
|
||||
@@ -124,7 +124,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104024+0_B10081",
|
||||
"ProfilTyp": "APB 110 R 400/67,5° – 339/508 mit TEF Innen",
|
||||
"ProfilTyp": "APB 110 R 400/67,5 – 339/508 mit TEF Innen",
|
||||
"Radius": 400,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Breite": 339,
|
||||
@@ -134,7 +134,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104027,
|
||||
"ProfilTyp": "APB 110 R 550/67,5° – 488/778",
|
||||
"ProfilTyp": "APB 110 R 550/67,5 – 488/778",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Breite": 448,
|
||||
@@ -144,7 +144,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104027+0_B10080",
|
||||
"ProfilTyp": "APB 110 R 550/67,5° – 488/778 mit TEF Innen",
|
||||
"ProfilTyp": "APB 110 R 550/67,5 – 488/778 mit TEF Innen",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Breite": 448,
|
||||
@@ -154,7 +154,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104028,
|
||||
"ProfilTyp": "APB 110 R 550/67,5° – 420/582",
|
||||
"ProfilTyp": "APB 110 R 550/67,5 – 420/582",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Breite": 420,
|
||||
@@ -164,7 +164,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104065,
|
||||
"ProfilTyp": "APB 110 R 550/67,5° – 498/758",
|
||||
"ProfilTyp": "APB 110 R 550/67,5 – 498/758",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 67.5,
|
||||
"Breite": 498,
|
||||
@@ -174,7 +174,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821094101,
|
||||
"ProfilTyp": "APB 60 R 515/90° – 135/135",
|
||||
"ProfilTyp": "APB 60 R 515/90 – 135/135",
|
||||
"Radius": 515,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 650,
|
||||
@@ -184,7 +184,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821094040,
|
||||
"ProfilTyp": "APB 60 R 515/90° – 295/295",
|
||||
"ProfilTyp": "APB 60 R 515/90 – 295/295",
|
||||
"Radius": 515,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 810,
|
||||
@@ -194,7 +194,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104022,
|
||||
"ProfilTyp": "APB 110 R 400/90° – 500/500",
|
||||
"ProfilTyp": "APB 110 R 400/90 – 500/500",
|
||||
"Radius": 400,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 500,
|
||||
@@ -204,7 +204,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104030,
|
||||
"ProfilTyp": "APB 110 R 500/90° – 550/550",
|
||||
"ProfilTyp": "APB 110 R 500/90 – 550/550",
|
||||
"Radius": 500,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 550,
|
||||
@@ -214,7 +214,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104033,
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800",
|
||||
"ProfilTyp": "APB 110 R 630/90 – 800/800",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 800,
|
||||
@@ -224,7 +224,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104033+0_B10040",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Aussen",
|
||||
"ProfilTyp": "APB 110 R 630/90 – 800/800 mit TEF Aussen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 800,
|
||||
@@ -234,7 +234,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "821104033+0_B10050",
|
||||
"ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Innen",
|
||||
"ProfilTyp": "APB 110 R 630/90 – 800/800 mit TEF Innen",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 800,
|
||||
@@ -244,7 +244,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104035,
|
||||
"ProfilTyp": "APB 110 R 630/90° – 850/870",
|
||||
"ProfilTyp": "APB 110 R 630/90 – 850/870",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 850,
|
||||
@@ -254,7 +254,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104041,
|
||||
"ProfilTyp": "APB 110 R 630/90° – 850/690",
|
||||
"ProfilTyp": "APB 110 R 630/90 – 850/690",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 850,
|
||||
@@ -264,7 +264,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104034,
|
||||
"ProfilTyp": "APB 110 R 630/90° – 850/890",
|
||||
"ProfilTyp": "APB 110 R 630/90 – 850/890",
|
||||
"Radius": 630,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 850,
|
||||
@@ -274,7 +274,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104066,
|
||||
"ProfilTyp": "APB 110 R 550/90° – 900/605",
|
||||
"ProfilTyp": "APB 110 R 550/90 – 900/605",
|
||||
"Radius": 550,
|
||||
"KurvenWinkel": 90,
|
||||
"Breite": 900,
|
||||
@@ -284,7 +284,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 821104043,
|
||||
"ProfilTyp": "APB 110 R 630/180° – 1300/800",
|
||||
"ProfilTyp": "APB 110 R 630/180 – 1300/800",
|
||||
"Radius": 650,
|
||||
"KurvenWinkel": 180,
|
||||
"Breite": 1300,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[
|
||||
{
|
||||
"Sivasnr": 834372001,
|
||||
"ProfilTyp": "WEICHE S 45°-L-350/700, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S 45-L-350/700, KPL. MIT M",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -13,7 +13,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372002,
|
||||
"ProfilTyp": "WEICHE S 45°-L-350/700, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S 45-L-350/700, KPL. MIT P",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -25,7 +25,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372002+0_BG090090",
|
||||
"ProfilTyp": "WEICHE S 45°-L-350/700, KPL. MIT P mit TEF Innen",
|
||||
"ProfilTyp": "WEICHE S 45-L-350/700, KPL. MIT P mit TEF Innen",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372004,
|
||||
"ProfilTyp": "WEICHE S 45°-R-350/700, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S 45-R-350/700, KPL. MIT M",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -49,7 +49,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372005,
|
||||
"ProfilTyp": "WEICHE S 45°-R-350/700, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S 45-R-350/700, KPL. MIT P",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -61,7 +61,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372005+0_BG090090",
|
||||
"ProfilTyp": "WEICHE S 45°-R-350/700, KPL. MIT P mit TEF Innen",
|
||||
"ProfilTyp": "WEICHE S 45-R-350/700, KPL. MIT P mit TEF Innen",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -73,7 +73,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372007,
|
||||
"ProfilTyp": "WEICHE S 45°-L-400/750, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S 45-L-400/750, KPL. MIT M",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -85,7 +85,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372008,
|
||||
"ProfilTyp": "WEICHE S 45°-L-400/750, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S 45-L-400/750, KPL. MIT P",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -97,7 +97,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372008+0_BG190090",
|
||||
"ProfilTyp": "WEICHE S 45°-L-400/750, KPL. MIT P mit TEF Ihnen",
|
||||
"ProfilTyp": "WEICHE S 45-L-400/750, KPL. MIT P mit TEF Ihnen",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -109,7 +109,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372010,
|
||||
"ProfilTyp": "WEICHE S 45°-R-400/750, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S 45-R-400/750, KPL. MIT M",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -121,7 +121,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372011,
|
||||
"ProfilTyp": "WEICHE S 45°-R-400/750, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S 45-R-400/750, KPL. MIT P",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -133,7 +133,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372011+0_BG190090",
|
||||
"ProfilTyp": "WEICHE S 45°-R-400/750, KPL. MIT P mit TEF Ihnen",
|
||||
"ProfilTyp": "WEICHE S 45-R-400/750, KPL. MIT P mit TEF Ihnen",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -145,7 +145,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372021,
|
||||
"ProfilTyp": "WEICHE S 90°-L-500/600, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S 90-L-500/600, KPL. MIT M",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -157,7 +157,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372022,
|
||||
"ProfilTyp": "WEICHE S 90°-L-500/600, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S 90-L-500/600, KPL. MIT P",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -169,7 +169,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372024,
|
||||
"ProfilTyp": "WEICHE S 90°-R-500/600, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S 90-R-500/600, KPL. MIT M",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -181,7 +181,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372025,
|
||||
"ProfilTyp": "WEICHE S 90°-R-500/600, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S 90-R-500/600, KPL. MIT P",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -193,7 +193,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372027,
|
||||
"ProfilTyp": "WEICHE S 90°-L-700/700, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S 90-L-700/700, KPL. MIT M",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -205,7 +205,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372028,
|
||||
"ProfilTyp": "WEICHE S 90°-L-700/700, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S 90-L-700/700, KPL. MIT P",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -217,7 +217,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372028+0_BG080090",
|
||||
"ProfilTyp": "WEICHE S 90°-L-700/700, KPL. MIT P mit TEF Innen",
|
||||
"ProfilTyp": "WEICHE S 90-L-700/700, KPL. MIT P mit TEF Innen",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -229,7 +229,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372030,
|
||||
"ProfilTyp": "WEICHE S 90°-R-700/700, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S 90-R-700/700, KPL. MIT M",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -241,7 +241,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372031,
|
||||
"ProfilTyp": "WEICHE S 90°-R-700/700, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S 90-R-700/700, KPL. MIT P",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -253,7 +253,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372031+0_BG080090",
|
||||
"ProfilTyp": "WEICHE S 90°-R-700/700, KPL. MIT P mit TEF Innen",
|
||||
"ProfilTyp": "WEICHE S 90-R-700/700, KPL. MIT P mit TEF Innen",
|
||||
"WeichenTyp": "Einzelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -313,7 +313,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372100,
|
||||
"ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S D 45-350/700, KPL. MIT M",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -324,7 +324,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372101,
|
||||
"ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S D 45-350/700, KPL. MIT P",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -335,7 +335,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG090090+834372101",
|
||||
"ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF links",
|
||||
"ProfilTyp": "WEICHE S D 45-350/700, KPL. MIT P mit TEF links",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -346,7 +346,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372101+0_BG090090",
|
||||
"ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF rechts",
|
||||
"ProfilTyp": "WEICHE S D 45-350/700, KPL. MIT P mit TEF rechts",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -357,7 +357,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG090090+834372101+0_BG090090",
|
||||
"ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF beideseitig",
|
||||
"ProfilTyp": "WEICHE S D 45-350/700, KPL. MIT P mit TEF beideseitig",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -368,7 +368,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372103,
|
||||
"ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S D 45-400/750, KPL. MIT M",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -379,7 +379,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372104,
|
||||
"ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S D 45-400/750, KPL. MIT P",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -390,7 +390,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG190090+834372104",
|
||||
"ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF links",
|
||||
"ProfilTyp": "WEICHE S D 45-400/750, KPL. MIT P mit TEF links",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -401,7 +401,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372104+0_BG190090",
|
||||
"ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF rechts",
|
||||
"ProfilTyp": "WEICHE S D 45-400/750, KPL. MIT P mit TEF rechts",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -412,7 +412,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG190090+834372104+0_BG190090",
|
||||
"ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF beideseitig",
|
||||
"ProfilTyp": "WEICHE S D 45-400/750, KPL. MIT P mit TEF beideseitig",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -423,7 +423,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372106,
|
||||
"ProfilTyp": "WEICHE S D 90°-500/600, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S D 90-500/600, KPL. MIT M",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -434,7 +434,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372107,
|
||||
"ProfilTyp": "WEICHE S D 90°-500/600, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S D 90-500/600, KPL. MIT P",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -445,7 +445,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372109,
|
||||
"ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S D 90-700/700, KPL. MIT M",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -456,7 +456,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372110,
|
||||
"ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S D 90-700/700, KPL. MIT P",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -467,7 +467,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG080090+834372110",
|
||||
"ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF links",
|
||||
"ProfilTyp": "WEICHE S D 90-700/700, KPL. MIT P mit TEF links",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -478,7 +478,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372110+0_BG080090",
|
||||
"ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF rechts",
|
||||
"ProfilTyp": "WEICHE S D 90-700/700, KPL. MIT P mit TEF rechts",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -489,7 +489,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG080090+834372110+0_BG080090",
|
||||
"ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF beideseitig",
|
||||
"ProfilTyp": "WEICHE S D 90-700/700, KPL. MIT P mit TEF beideseitig",
|
||||
"WeichenTyp": "Doppelweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -522,7 +522,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372200,
|
||||
"ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S T 45-350/700, KPL. MIT M",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -533,7 +533,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372201,
|
||||
"ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S T 45-350/700, KPL. MIT P",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -544,7 +544,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG090090+834372201",
|
||||
"ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF links",
|
||||
"ProfilTyp": "WEICHE S T 45-350/700, KPL. MIT P mit TEF links",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -555,7 +555,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372201+0_BG090090",
|
||||
"ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF rechts",
|
||||
"ProfilTyp": "WEICHE S T 45-350/700, KPL. MIT P mit TEF rechts",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -566,7 +566,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG090090+834372201+0_BG090090",
|
||||
"ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF beideseitig",
|
||||
"ProfilTyp": "WEICHE S T 45-350/700, KPL. MIT P mit TEF beideseitig",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -577,7 +577,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372203,
|
||||
"ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S T 45-400/750, KPL. MIT M",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -588,7 +588,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372204,
|
||||
"ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S T 45-400/750, KPL. MIT P",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -599,7 +599,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG190090+834372204",
|
||||
"ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF links",
|
||||
"ProfilTyp": "WEICHE S T 45-400/750, KPL. MIT P mit TEF links",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -610,7 +610,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372204+0_BG190090",
|
||||
"ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF rechts",
|
||||
"ProfilTyp": "WEICHE S T 45-400/750, KPL. MIT P mit TEF rechts",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -621,7 +621,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG190090+834372204+0_BG190090",
|
||||
"ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF beideseitig",
|
||||
"ProfilTyp": "WEICHE S T 45-400/750, KPL. MIT P mit TEF beideseitig",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 45,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -632,7 +632,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372206,
|
||||
"ProfilTyp": "WEICHE S T 90°-500/600, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S T 90-500/600, KPL. MIT M",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -643,7 +643,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372207,
|
||||
"ProfilTyp": "WEICHE S T 90°-500/600, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S T 90-500/600, KPL. MIT P",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -654,7 +654,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372209,
|
||||
"ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT M",
|
||||
"ProfilTyp": "WEICHE S T 90-700/700, KPL. MIT M",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "M",
|
||||
@@ -665,7 +665,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372210,
|
||||
"ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P",
|
||||
"ProfilTyp": "WEICHE S T 90-700/700, KPL. MIT P",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -676,7 +676,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG080090+834372210",
|
||||
"ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF links",
|
||||
"ProfilTyp": "WEICHE S T 90-700/700, KPL. MIT P mit TEF links",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -687,7 +687,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "834372210+0_BG080090",
|
||||
"ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF rechts",
|
||||
"ProfilTyp": "WEICHE S T 90-700/700, KPL. MIT P mit TEF rechts",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
@@ -698,7 +698,7 @@
|
||||
},
|
||||
{
|
||||
"Sivasnr": "0_BG080090+834372210+0_BG080090",
|
||||
"ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF beideseitig",
|
||||
"ProfilTyp": "WEICHE S T 90-700/700, KPL. MIT P mit TEF beideseitig",
|
||||
"WeichenTyp": "Dreiwegeweiche",
|
||||
"KurvenWinkel": 90,
|
||||
"Schaltungstyp": "P",
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
[
|
||||
{
|
||||
"Sivasnr": 0_B10001,
|
||||
"Beschreibung": "Antribestation links für TEF links",
|
||||
"Radius": ,
|
||||
"KurvenWinkel": ,
|
||||
"innen":
|
||||
"Sivasnr": "0_B10001",
|
||||
"Beschreibung": "Antriebstation links für TEF links",
|
||||
"Radius": "",
|
||||
"KurvenWinkel": "",
|
||||
"innen": ""
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10020,
|
||||
"Beschreibung": "Antribestation rechts für TEF rechts",
|
||||
"Radius": ,
|
||||
"KurvenWinkel": ,
|
||||
"innen":
|
||||
"Sivasnr": "0_B10020",
|
||||
"Beschreibung": "Antriebstation rechts für TEF rechts",
|
||||
"Radius": "",
|
||||
"KurvenWinkel": "",
|
||||
"innen": ""
|
||||
},
|
||||
{
|
||||
"Sivasnr": YYYYY,
|
||||
"Sivasnr": "-",
|
||||
"Beschreibung": "Umlenkspannstation links für TEF links",
|
||||
"Radius": ,
|
||||
"KurvenWinkel": ,
|
||||
"innen":
|
||||
"Radius": "",
|
||||
"KurvenWinkel": "",
|
||||
"innen": ""
|
||||
},
|
||||
{
|
||||
"Sivasnr": YYYYY,
|
||||
"Sivasnr": "-",
|
||||
"Beschreibung": "Umlenkspannstation rechts für TEF rechts",
|
||||
"Radius": ,
|
||||
"KurvenWinkel": ,
|
||||
"innen":
|
||||
"Radius": "",
|
||||
"KurvenWinkel": "",
|
||||
"innen": ""
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
[
|
||||
{
|
||||
"Sivasnr": 0_B10040,
|
||||
"Sivasnr": "0_B10040",
|
||||
"Beschreibung": "TEF Bogen 90° R725",
|
||||
"Radius": 725,
|
||||
"KurvenWinkel": 90,
|
||||
"innen": false
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10050,
|
||||
"Sivasnr": "0_B10050",
|
||||
"Beschreibung": "TEF Bogen 90° R535",
|
||||
"Radius": 535,
|
||||
"KurvenWinkel": 90,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10060,
|
||||
"Sivasnr": "0_B10060",
|
||||
"Beschreibung": "TEF Bogen 45° R725",
|
||||
"Radius": 725,
|
||||
"KurvenWinkel": 45,
|
||||
"innen": false
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10070,
|
||||
"Sivasnr": "0_B10070",
|
||||
"Beschreibung": "TEF Bogen 45° R535",
|
||||
"Radius": 535,
|
||||
"KurvenWinkel": 45,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10071,
|
||||
"Sivasnr": "0_B10071",
|
||||
"Beschreibung": "TEF Bogen 45° R450 für S C Delta 1600",
|
||||
"Radius": 450,
|
||||
"KurvenWinkel": 45,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10080,
|
||||
"Sivasnr": "0_B10080",
|
||||
"Beschreibung": "TEF Bogen 67.5° R400",
|
||||
"Radius": 400,
|
||||
"KurvenWinkel": 67.5,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10081,
|
||||
"Sivasnr": "0_B10081",
|
||||
"Beschreibung": "TEF Bogen 67.5° R250",
|
||||
"Radius": 250,
|
||||
"KurvenWinkel": 67.5,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10090,
|
||||
"Sivasnr": "0_B10090",
|
||||
"Beschreibung": "TEF Bogen 22.5° R450",
|
||||
"Radius": 450,
|
||||
"KurvenWinkel": 22.5,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": 0_B10091,
|
||||
"Sivasnr": "0_B10091",
|
||||
"Beschreibung": "TEF Bogen 22.5° R650",
|
||||
"Radius": 650,
|
||||
"KurvenWinkel": 22.5,
|
||||
|
||||
+20
-20
@@ -1,71 +1,71 @@
|
||||
[
|
||||
{
|
||||
"Sivasnr": _BG080090,
|
||||
"Sivasnr": "_BG080090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S 90° 700/700 links",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 90,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG080090,
|
||||
"Sivasnr": "_BG080090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S 90° 700/700 rechts",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 90,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG081090,
|
||||
"Sivasnr": "_BG081090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S 90° 500/600 links",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 90,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG081090,
|
||||
"Sivasnr": "_BG081090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S 90° 500/600 rechts",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 90,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG190090,
|
||||
"Sivasnr": "_BG190090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S 45° 400/750 links",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 45,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG190090,
|
||||
"Sivasnr": "_BG190090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S 45° 400/750 rechts",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 45,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG090090,
|
||||
"Sivasnr": "_BG090090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S 45° 350/700 links",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 45,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG090090,
|
||||
"Sivasnr": "_BG090090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S 45° 350/700 rechts",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 45,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG071090,
|
||||
"Sivasnr": "_BG071090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S C Delta 1600/800 links",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 90,
|
||||
"innen": true
|
||||
},
|
||||
{
|
||||
"Sivasnr": _BG071090,
|
||||
"Sivasnr": "_BG071090",
|
||||
"Beschreibung": "TEF Bogen für Weiche S C Delta 1600/800 rechts",
|
||||
"Radius": ,
|
||||
"Radius": "",
|
||||
"KurvenWinkel": 90,
|
||||
"innen": true
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ omniflo_weichen : dialog {
|
||||
: popup_list {
|
||||
key = "profiltyp";
|
||||
label = "Profiltyp-Auswahl:";
|
||||
width = 50;
|
||||
width = 65;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+83
-2
@@ -11,7 +11,19 @@ Aufruf:
|
||||
python export_csv.py <export_raw.json> <data_dir> <output.csv>
|
||||
|
||||
CSV-Format:
|
||||
Elementnummer;TeileArt;TeileId;NachbarIds;Bezeichnung;Planquadrat;rotation;Merkmale
|
||||
Elementnummer;TeileArt;TeileId;Bezeichnung;Planquadrat;Anzahl;Position;Boundingbox;Nachbarn;Merkmale
|
||||
|
||||
Position und Boundingbox stammen aus der von export.lsp (csv:get-bbox, per
|
||||
vla-getboundingbox) ermittelten Bounding-Box je Block:
|
||||
Position = Mittenkoordinate x, y, z
|
||||
Boundingbox = Ausdehnung (Laenge, Breite, Hoehe) in x, y, z
|
||||
Planquadrat wird aus der x/y-Koordinate des Blocks berechnet, siehe
|
||||
export_planquadrat.py ([Planquadrate] in cfg/export.cfg).
|
||||
Nachbarn = kommaseparierte TeileId-Liste ueberschneidender Elemente (Bounding-
|
||||
Box-Ueberschneidung in der x/y-Ebene per shapely-STRtree, Toleranz konfigurierbar
|
||||
ueber [Nachbarschaft] -> toleranz_mm in cfg/export.cfg), siehe export_neighbors.py.
|
||||
Position, Boundingbox, Planquadrat und Nachbarn sind nur fuer EXPORTCSV
|
||||
vorhanden (nicht EXPORTSIVAS) - siehe csv:run-export.
|
||||
"""
|
||||
|
||||
import json
|
||||
@@ -19,8 +31,12 @@ import sys
|
||||
import os
|
||||
|
||||
from export_blockpatterns import load_patterns, matches_any
|
||||
from export_planquadrat import load_planquadrat_config, compute_planquadrat
|
||||
from export_neighbors import load_neighbor_tolerance_mm, compute_neighbor_ids
|
||||
|
||||
BLOCKPATTERNS = load_patterns()
|
||||
PLANQUADRAT_CFG = load_planquadrat_config()
|
||||
NEIGHBOR_TOLERANCE_MM = load_neighbor_tolerance_mm()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -219,6 +235,44 @@ def build_kreisel_merkmale(block):
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Bounding-Box-Spalten (Position/Boundingbox)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def bbox_columns(block):
|
||||
"""Liest die von export.lsp (csv:get-bbox) ermittelte Bounding-Box.
|
||||
|
||||
Rueckgabe: dict mit "position" (Mittenkoordinate x,y,z) und "boundingbox"
|
||||
(Ausdehnung x,y,z) als Strings, oder leere Strings falls kein bbox-Feld
|
||||
vorhanden ist (z.B. EXPORTSIVAS oder die synthetische Omniflo-Sum-Zeile).
|
||||
"_bbox" enthaelt zusaetzlich die rohen Zahlenwerte fuer die Nachbarschafts-
|
||||
erkennung (siehe export_neighbors.py), wird nicht in die CSV geschrieben.
|
||||
"""
|
||||
bbox = block.get("bbox")
|
||||
if not bbox:
|
||||
return {"position": "", "boundingbox": "", "_bbox": None}
|
||||
return {
|
||||
"position": f'{bbox.get("cx", 0):.2f}, {bbox.get("cy", 0):.2f}, {bbox.get("cz", 0):.2f}',
|
||||
"boundingbox": f'{bbox.get("dx", 0):.2f}, {bbox.get("dy", 0):.2f}, {bbox.get("dz", 0):.2f}',
|
||||
"_bbox": bbox,
|
||||
}
|
||||
|
||||
|
||||
def planquadrat_column(block):
|
||||
"""Berechnet das Planquadrat aus x/y des Blocks (siehe export_planquadrat.py).
|
||||
|
||||
Leerer String, wenn keine Planquadrat-Konfiguration geladen werden konnte
|
||||
(fehlende/unvollstaendige [Planquadrate]-Sektion in cfg/export.cfg).
|
||||
"""
|
||||
if PLANQUADRAT_CFG is None:
|
||||
return ""
|
||||
x = block.get("x")
|
||||
y = block.get("y")
|
||||
if x is None or y is None:
|
||||
return ""
|
||||
return compute_planquadrat(float(x), float(y), PLANQUADRAT_CFG)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Bekannte Blocknamen
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -268,7 +322,9 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "Omniflo Kurve",
|
||||
"teileid": shape_id,
|
||||
"bezeichnung": f"OFBogen :{bogen_count}",
|
||||
"planquadrat": planquadrat_column(block),
|
||||
"merkmale": build_bogen_merkmale(block, eintrag),
|
||||
**bbox_columns(block),
|
||||
})
|
||||
|
||||
elif typ == "weiche":
|
||||
@@ -279,7 +335,9 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "Omniflo Weiche",
|
||||
"teileid": shape_id,
|
||||
"bezeichnung": f"OFWeiche :{weiche_count[wt]}",
|
||||
"planquadrat": planquadrat_column(block),
|
||||
"merkmale": build_weiche_merkmale(block, eintrag),
|
||||
**bbox_columns(block),
|
||||
})
|
||||
subtyp = weichensubtyp(block, eintrag)
|
||||
if subtyp == "weichenkoerper":
|
||||
@@ -304,7 +362,9 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "Omniflo Gerade",
|
||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||
"bezeichnung": f"OFGerade :{gerade_count}",
|
||||
"planquadrat": planquadrat_column(block),
|
||||
"merkmale": build_gerade_merkmale(block),
|
||||
**bbox_columns(block),
|
||||
})
|
||||
len_ap110_mm += get_laenge_mm(block)
|
||||
continue
|
||||
@@ -318,7 +378,9 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "ILS 2.0 Strecke",
|
||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||
"bezeichnung": f"VarioFoerderer :{vf_count}",
|
||||
"planquadrat": planquadrat_column(block),
|
||||
"merkmale": build_variofoerderer_merkmale(block),
|
||||
**bbox_columns(block),
|
||||
})
|
||||
continue
|
||||
|
||||
@@ -331,7 +393,9 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "ILS 2.0 Gefaellestrecke",
|
||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||
"bezeichnung": f"Gefaellestrecke :{gf_count}",
|
||||
"planquadrat": planquadrat_column(block),
|
||||
"merkmale": build_variofoerderer_merkmale(block),
|
||||
**bbox_columns(block),
|
||||
})
|
||||
continue
|
||||
|
||||
@@ -345,7 +409,9 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "ILS 2.0 Eckrad",
|
||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||
"bezeichnung": f"Eckrad :{eckrad_count}",
|
||||
"planquadrat": planquadrat_column(block),
|
||||
"merkmale": build_kreisel_merkmale(block),
|
||||
**bbox_columns(block),
|
||||
})
|
||||
continue
|
||||
|
||||
@@ -358,7 +424,9 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "ILS 2.0 Kreisel",
|
||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||
"bezeichnung": f"Kreisel :{kreisel_count}",
|
||||
"planquadrat": planquadrat_column(block),
|
||||
"merkmale": build_kreisel_merkmale(block),
|
||||
**bbox_columns(block),
|
||||
})
|
||||
continue
|
||||
|
||||
@@ -371,7 +439,9 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "ILS 2.0 Strecke - Modul",
|
||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||
"bezeichnung": f"Streckenmodul :{strecke_modul_count}",
|
||||
"planquadrat": planquadrat_column(block),
|
||||
"merkmale": {"Blockname": bname},
|
||||
**bbox_columns(block),
|
||||
})
|
||||
continue
|
||||
|
||||
@@ -382,11 +452,18 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "Omniflo Sum",
|
||||
"teileid": "autogenerated_of_json",
|
||||
"bezeichnung": "Omniflo sum",
|
||||
"planquadrat": "",
|
||||
"merkmale": build_omni_sum_merkmale(
|
||||
bogen_count, cnt_wk, cnt_einzel, cnt_delta, cnt_doppel, cnt_stern,
|
||||
len_ap110_mm, len_ap60_mm),
|
||||
"position": "",
|
||||
"boundingbox": "",
|
||||
})
|
||||
|
||||
neighbor_ids = compute_neighbor_ids(items, NEIGHBOR_TOLERANCE_MM)
|
||||
for item, nachbarn in zip(items, neighbor_ids):
|
||||
item["nachbarn"] = nachbarn
|
||||
|
||||
return items
|
||||
|
||||
|
||||
@@ -401,7 +478,11 @@ def format_csv_line(item):
|
||||
f';"{item["teileart"]}"'
|
||||
f';"{item["teileid"]}"'
|
||||
f';"{item["bezeichnung"]}"'
|
||||
f';"{item["planquadrat"]}"'
|
||||
f';1'
|
||||
f';"{item["position"]}"'
|
||||
f';"{item["boundingbox"]}"'
|
||||
f';"{item["nachbarn"]}"'
|
||||
f';{merkmale_json}'
|
||||
)
|
||||
|
||||
@@ -433,7 +514,7 @@ def main():
|
||||
|
||||
items = process_blocks(blocks, lookup)
|
||||
|
||||
header = "Elementnummer;TeileArt;TeileId;Bezeichnung;Anzahl;Merkmale"
|
||||
header = "Elementnummer;TeileArt;TeileId;Bezeichnung;Planquadrat;Anzahl;Position;Boundingbox;Nachbarn;Merkmale"
|
||||
with open(output_csv, "w", encoding="utf-8") as f:
|
||||
f.write(header + "\n")
|
||||
for item in items:
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
export_neighbors.py - Ermittelt benachbarte Elemente ueber die Bounding-Box (STRtree).
|
||||
|
||||
Zwei Elemente gelten als benachbart, wenn ihre Bounding-Boxes sich in der
|
||||
x/y-Ebene (Grundriss, Z/Hoehe wird ignoriert) ueberschneiden. Um auch nah
|
||||
beieinander liegende, aber nicht direkt beruehrende Elemente (z.B. Kreisel)
|
||||
als benachbart zu erkennen, wird jede Bounding-Box vor der Pruefung um die
|
||||
Haelfte der konfigurierten Toleranz nach allen Seiten erweitert - zwei
|
||||
Elemente mit einem Abstand <= toleranz_mm gelten dann ebenfalls als
|
||||
benachbart. Die Toleranz wird aus cfg/export.cfg ([Nachbarschaft] ->
|
||||
toleranz_mm) gelesen.
|
||||
|
||||
Nur von export_csv.py genutzt (EXPORTCSV), nicht von export_sivas.py.
|
||||
"""
|
||||
|
||||
import configparser
|
||||
|
||||
from shapely.geometry import box
|
||||
from shapely.strtree import STRtree
|
||||
|
||||
from export_blockpatterns import cfg_path_from_env
|
||||
|
||||
|
||||
def load_neighbor_tolerance_mm(cfg_path=None):
|
||||
"""Liest die Nachbarschafts-Toleranz (mm) aus export.cfg. Default: 0."""
|
||||
if cfg_path is None:
|
||||
cfg_path = cfg_path_from_env()
|
||||
parser = configparser.ConfigParser(inline_comment_prefixes=("#",))
|
||||
parser.read(cfg_path, encoding="utf-8")
|
||||
return parser.getfloat("Nachbarschaft", "toleranz_mm", fallback=0.0)
|
||||
|
||||
|
||||
def compute_neighbor_ids(items, tolerance_mm):
|
||||
"""Ermittelt je Item die IDs (item["teileid"]) ueberschneidender Nachbarn.
|
||||
|
||||
items = Liste von dict mit "teileid" und optional "_bbox"
|
||||
({"cx","cy","dx","dy",...}, siehe export.lsp csv:get-bbox / export_csv.py
|
||||
bbox_columns). Items ohne _bbox (z.B. die synthetische Omniflo-Sum-Zeile)
|
||||
haben keine Nachbarn.
|
||||
|
||||
Rueckgabe: Liste von kommaseparierten Nachbar-ID-Strings, positionsgleich
|
||||
zu items (nicht ueber die ID dedupliziert, da TeileId nicht zwingend
|
||||
eindeutig ist).
|
||||
"""
|
||||
idx_with_bbox = [i for i, it in enumerate(items) if it.get("_bbox")]
|
||||
result = [""] * len(items)
|
||||
if len(idx_with_bbox) < 2:
|
||||
return result
|
||||
|
||||
half_tol = tolerance_mm / 2.0
|
||||
geoms = []
|
||||
for i in idx_with_bbox:
|
||||
bb = items[i]["_bbox"]
|
||||
minx = bb["cx"] - bb["dx"] / 2.0 - half_tol
|
||||
maxx = bb["cx"] + bb["dx"] / 2.0 + half_tol
|
||||
miny = bb["cy"] - bb["dy"] / 2.0 - half_tol
|
||||
maxy = bb["cy"] + bb["dy"] / 2.0 + half_tol
|
||||
geoms.append(box(minx, miny, maxx, maxy))
|
||||
|
||||
tree = STRtree(geoms)
|
||||
for local_i, global_i in enumerate(idx_with_bbox):
|
||||
hits = tree.query(geoms[local_i], predicate="intersects")
|
||||
neighbor_ids = [
|
||||
items[idx_with_bbox[int(local_j)]]["teileid"]
|
||||
for local_j in hits
|
||||
if int(local_j) != local_i
|
||||
]
|
||||
result[global_i] = ", ".join(neighbor_ids)
|
||||
|
||||
return result
|
||||
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
export_planquadrat.py - Berechnet das Planquadrat eines Blocks aus x/y-Koordinate.
|
||||
|
||||
Liest die aktive Planquadrat-Konfiguration aus cfg/export.cfg
|
||||
([Planquadrate] -> section=<Name der Sub-Sektion>, z.B. Planquadrate_AN) und
|
||||
rundet die x/y-Koordinate eines Blocks (mm, wie im Roh-JSON von export.lsp)
|
||||
je Achse auf die konfigurierte Schrittweite (in Metern) herunter.
|
||||
|
||||
Nur von export_csv.py genutzt (EXPORTCSV), nicht von export_sivas.py.
|
||||
"""
|
||||
|
||||
import configparser
|
||||
|
||||
from export_blockpatterns import cfg_path_from_env
|
||||
|
||||
|
||||
def load_planquadrat_config(cfg_path=None):
|
||||
"""Liest die aktive Planquadrat-Konfiguration aus export.cfg.
|
||||
|
||||
Rueckgabe: dict mit x_step_mm, x_alpha, y_step_mm, y_alpha, format,
|
||||
oder None, wenn [Planquadrate] bzw. die referenzierte Sub-Sektion fehlt.
|
||||
"""
|
||||
if cfg_path is None:
|
||||
cfg_path = cfg_path_from_env()
|
||||
# inline_comment_prefixes noetig, da export.cfg Werte wie
|
||||
# "numerisch # zahlen, von links nach rechts, 2m pro Spalte" nutzt.
|
||||
parser = configparser.ConfigParser(inline_comment_prefixes=("#",))
|
||||
parser.read(cfg_path, encoding="utf-8")
|
||||
|
||||
if not parser.has_section("Planquadrate"):
|
||||
return None
|
||||
section_name = parser.get("Planquadrate", "section", fallback=None)
|
||||
if not section_name or not parser.has_section(section_name):
|
||||
return None
|
||||
|
||||
sec = parser[section_name]
|
||||
return {
|
||||
"x_step_mm": float(sec.get("x_step", "1")) * 1000.0,
|
||||
"x_alpha": sec.get("x_description", "numerisch").strip().lower().startswith("alpha"),
|
||||
"y_step_mm": float(sec.get("y_step", "1")) * 1000.0,
|
||||
"y_alpha": sec.get("y_description", "numerisch").strip().lower().startswith("alpha"),
|
||||
"format": sec.get("format", "{x}/{y}").strip(),
|
||||
}
|
||||
|
||||
|
||||
def _index_to_alpha(n):
|
||||
"""Wandelt einen 1-basierten Index in eine Buchstaben-Bezeichnung um.
|
||||
|
||||
1=A, 26=Z, 27=AA, 28=AB, ... (wie Excel-Spaltennamen).
|
||||
"""
|
||||
result = ""
|
||||
while n > 0:
|
||||
n, remainder = divmod(n - 1, 26)
|
||||
result = chr(65 + remainder) + result
|
||||
return result
|
||||
|
||||
|
||||
def _index_for(coord_mm, step_mm):
|
||||
"""1-basierter Planquadrat-Index einer Koordinate fuer eine Schrittweite."""
|
||||
return int(coord_mm // step_mm) + 1
|
||||
|
||||
|
||||
def compute_planquadrat(x_mm, y_mm, cfg):
|
||||
"""Berechnet die Planquadrat-Bezeichnung fuer eine x/y-Koordinate (mm)."""
|
||||
x_idx = _index_for(x_mm, cfg["x_step_mm"])
|
||||
y_idx = _index_for(y_mm, cfg["y_step_mm"])
|
||||
x_label = _index_to_alpha(x_idx) if cfg["x_alpha"] else str(x_idx)
|
||||
y_label = _index_to_alpha(y_idx) if cfg["y_alpha"] else str(y_idx)
|
||||
return cfg["format"].format(x=x_label, y=y_label)
|
||||
+7
-37
@@ -4,7 +4,7 @@
|
||||
export_sivas.py - Erzeugt Sivas-Export-CSV mit gruppierten Zeilen und Summierungszeilen.
|
||||
|
||||
Neues CSV-Format:
|
||||
Nr;TeileArt;SivasNummer;Bezeichnung;Dispogruppe;Anzahl;Laenge[mm];Hoehe[m];IDs;details
|
||||
Nr;TeileArt;SivasNummer;Bezeichnung;Dispogruppe;Anzahl;Laenge[mm];IDs;details
|
||||
|
||||
- Bezeichnung: Wert des Attributs "Bezeichnung" (Kreisel/Eckrad/VF/GF/Strecke).
|
||||
Bei gruppierten Zeilen (mehrere Bloecke je Zeile) kommasepariert.
|
||||
@@ -80,13 +80,6 @@ def classify_weiche(eintrag):
|
||||
return "einzelweiche"
|
||||
|
||||
|
||||
def get_hoehe_mm(block):
|
||||
"""Liest HOEHE aus Block-Attributen. Fallback: Z-Koordinate."""
|
||||
attribs = block.get("attribs", {})
|
||||
v = attribs.get("HOEHE") or str(int(block.get("z", 0) or 0)) or "2000"
|
||||
return v
|
||||
|
||||
|
||||
def get_id(block):
|
||||
"""Liest das eindeutige ID-Attribut eines Blocks (von ssg-id-check-all vergeben)."""
|
||||
return block.get("attribs", {}).get("ID", "")
|
||||
@@ -101,17 +94,6 @@ def format_sivasnr(sivasnr):
|
||||
return ", ".join(p.strip() for p in str(sivasnr).split("+") if p.strip())
|
||||
|
||||
|
||||
def format_hoehe_m(hoehe_mm_str):
|
||||
"""Konvertiert mm-String nach m mit deutschem Dezimaltrennzeichen."""
|
||||
try:
|
||||
m = float(hoehe_mm_str) / 1000.0
|
||||
if m == int(m):
|
||||
return str(int(m))
|
||||
return f"{m:.1f}".replace(".", ",")
|
||||
except (ValueError, TypeError):
|
||||
return ""
|
||||
|
||||
|
||||
def build_gefaellestrecke_details(block):
|
||||
"""Merkmale-Dict fuer eine einzelne ILS Gefaellestrecke (GF_N-Block)."""
|
||||
attribs = block.get("attribs", {})
|
||||
@@ -286,10 +268,10 @@ def process_blocks(blocks, lookup):
|
||||
items - Liste der CSV-Zeilen als Dicts
|
||||
counters - Zaehler fuer ILS-Automation-Summierungszeile
|
||||
"""
|
||||
# Gruppen: sivasnr_str -> {anzahl, hoehe_mm, ids}
|
||||
# Gruppen: sivasnr_str -> {anzahl, ids}
|
||||
bogen_groups = {} # sivasnr -> dict
|
||||
weiche_groups = {} # sivasnr -> dict
|
||||
# Gerade: artinr_str -> {anzahl, laenge_mm_total, hoehe_mm, ids}
|
||||
# Gerade: artinr_str -> {anzahl, laenge_mm_total, ids}
|
||||
gerade_groups = {}
|
||||
kreisel_list = [] # Liste von blocks
|
||||
eckrad_ids = [] # IDs aller Eckrad-Bloecke
|
||||
@@ -340,18 +322,17 @@ def process_blocks(blocks, lookup):
|
||||
if bname in lookup:
|
||||
typ, eintrag = lookup[bname]
|
||||
sivasnr = format_sivasnr(eintrag.get("Sivasnr", bname))
|
||||
hoehe = get_hoehe_mm(block)
|
||||
|
||||
if typ == "bogen":
|
||||
if sivasnr not in bogen_groups:
|
||||
bogen_groups[sivasnr] = {"anzahl": 0, "hoehe_mm": hoehe, "ids": []}
|
||||
bogen_groups[sivasnr] = {"anzahl": 0, "ids": []}
|
||||
bogen_groups[sivasnr]["anzahl"] += 1
|
||||
bogen_groups[sivasnr]["ids"].append(get_id(block))
|
||||
counters["anzahl_boegen"] += 1
|
||||
|
||||
elif typ == "weiche":
|
||||
if sivasnr not in weiche_groups:
|
||||
weiche_groups[sivasnr] = {"anzahl": 0, "hoehe_mm": hoehe, "ids": []}
|
||||
weiche_groups[sivasnr] = {"anzahl": 0, "ids": []}
|
||||
weiche_groups[sivasnr]["anzahl"] += 1
|
||||
weiche_groups[sivasnr]["ids"].append(get_id(block))
|
||||
subtyp = classify_weiche(eintrag)
|
||||
@@ -372,7 +353,6 @@ def process_blocks(blocks, lookup):
|
||||
attribs = block.get("attribs", {})
|
||||
artinr = attribs.get("ARTINR", "")
|
||||
key = artinr if artinr else "AP110"
|
||||
hoehe = get_hoehe_mm(block)
|
||||
laenge = 2000.0
|
||||
laenge_attr = attribs.get("LAENGE") or attribs.get("A")
|
||||
if laenge_attr:
|
||||
@@ -382,7 +362,7 @@ def process_blocks(blocks, lookup):
|
||||
pass
|
||||
if key not in gerade_groups:
|
||||
gerade_groups[key] = {
|
||||
"anzahl": 0, "laenge_mm": 0.0, "hoehe_mm": hoehe,
|
||||
"anzahl": 0, "laenge_mm": 0.0,
|
||||
"artinr": artinr, "ids": [],
|
||||
}
|
||||
gerade_groups[key]["anzahl"] += 1
|
||||
@@ -484,7 +464,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 10,
|
||||
"anzahl": g["anzahl"],
|
||||
"laenge_mm": "",
|
||||
"hoehe_m": format_hoehe_m(g["hoehe_mm"]),
|
||||
"ids": g["ids"],
|
||||
"details": {},
|
||||
})
|
||||
@@ -500,7 +479,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 10,
|
||||
"anzahl": g["anzahl"],
|
||||
"laenge_mm": "",
|
||||
"hoehe_m": format_hoehe_m(g["hoehe_mm"]),
|
||||
"ids": g["ids"],
|
||||
"details": {},
|
||||
})
|
||||
@@ -516,7 +494,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 10,
|
||||
"anzahl": g["anzahl"],
|
||||
"laenge_mm": int(g["laenge_mm"]),
|
||||
"hoehe_m": format_hoehe_m(g["hoehe_mm"]),
|
||||
"ids": g["ids"],
|
||||
"details": {},
|
||||
})
|
||||
@@ -544,7 +521,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 20,
|
||||
"anzahl": len(group["ids"]),
|
||||
"laenge_mm": "",
|
||||
"hoehe_m": "",
|
||||
"ids": group["ids"],
|
||||
"details": build_kreisel_details(group["block"]),
|
||||
})
|
||||
@@ -561,7 +537,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 20,
|
||||
"anzahl": counters["anzahl_eckraeder"],
|
||||
"laenge_mm": "",
|
||||
"hoehe_m": "",
|
||||
"ids": eckrad_ids,
|
||||
"details": {},
|
||||
})
|
||||
@@ -581,7 +556,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 20,
|
||||
"anzahl": len(strecke_ids),
|
||||
"laenge_mm": "",
|
||||
"hoehe_m": "",
|
||||
"ids": strecke_ids,
|
||||
"details": {},
|
||||
})
|
||||
@@ -600,7 +574,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 20,
|
||||
"anzahl": 1,
|
||||
"laenge_mm": "",
|
||||
"hoehe_m": "",
|
||||
"ids": [get_id(block)],
|
||||
"details": build_variofoerderer_details(block),
|
||||
})
|
||||
@@ -629,7 +602,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 20,
|
||||
"anzahl": len(group["ids"]),
|
||||
"laenge_mm": "",
|
||||
"hoehe_m": "",
|
||||
"ids": group["ids"],
|
||||
"details": details,
|
||||
})
|
||||
@@ -673,7 +645,6 @@ def process_blocks(blocks, lookup):
|
||||
"dispgruppe": 20,
|
||||
"anzahl": 1,
|
||||
"laenge_mm": "",
|
||||
"hoehe_m": "",
|
||||
"details": automation_details,
|
||||
})
|
||||
|
||||
@@ -693,7 +664,6 @@ def format_csv_line(item):
|
||||
f';{item["dispgruppe"]}'
|
||||
f';{item["anzahl"]}'
|
||||
f';{item["laenge_mm"]}'
|
||||
f';{item["hoehe_m"]}'
|
||||
f';"{ids_str}"'
|
||||
f';{details_json}'
|
||||
)
|
||||
@@ -722,7 +692,7 @@ def main():
|
||||
|
||||
items, _ = process_blocks(blocks, lookup)
|
||||
|
||||
header = "Nr;TeileArt;SivasNummer;Bezeichnung;Dispogruppe;Anzahl;Laenge[mm];Hoehe[m];IDs;details"
|
||||
header = "Nr;TeileArt;SivasNummer;Bezeichnung;Dispogruppe;Anzahl;Laenge[mm];IDs;details"
|
||||
with open(output_csv, "w", encoding="utf-8") as f:
|
||||
f.write(header + "\n")
|
||||
for item in items:
|
||||
|
||||
@@ -3,4 +3,5 @@
|
||||
|
||||
ezdxf==1.4.1
|
||||
pytest==9.0.2
|
||||
shapely==2.1.2
|
||||
|
||||
|
||||
@@ -1,109 +1,109 @@
|
||||
Elementnummer;TeileArt;TeileId;Bezeichnung;Anzahl;Merkmale
|
||||
1;"Omniflo Kurve";"0000";"OFBogen :1";1;{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025"}
|
||||
2;"Omniflo Kurve";"0000";"OFBogen :2";1;{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025+0_B10090"}
|
||||
3;"Omniflo Kurve";"0000";"OFBogen :3";1;{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025+0_B10091"}
|
||||
4;"Omniflo Kurve";"0000";"OFBogen :4";1;{"Kurvenwinkel": 45.0, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104021"}
|
||||
5;"Omniflo Kurve";"0000";"OFBogen :5";1;{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104026"}
|
||||
6;"Omniflo Kurve";"0000";"OFBogen :6";1;{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104026+0_B10071"}
|
||||
7;"Omniflo Kurve";"0000";"OFBogen :7";1;{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104037"}
|
||||
8;"Omniflo Kurve";"0000";"OFBogen :8";1;{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104029"}
|
||||
9;"Omniflo Kurve";"0000";"OFBogen :9";1;{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031"}
|
||||
10;"Omniflo Kurve";"0000";"OFBogen :10";1;{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031+0_B10060"}
|
||||
11;"Omniflo Kurve";"0000";"OFBogen :11";1;{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031+0_B10070"}
|
||||
12;"Omniflo Kurve";"0000";"OFBogen :12";1;{"Kurvenwinkel": 67.5, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104024"}
|
||||
13;"Omniflo Kurve";"0000";"OFBogen :13";1;{"Kurvenwinkel": 67.5, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104024+0_B10081"}
|
||||
14;"Omniflo Kurve";"0000";"OFBogen :14";1;{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104027"}
|
||||
15;"Omniflo Kurve";"0000";"OFBogen :15";1;{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104027+0_B10080"}
|
||||
16;"Omniflo Kurve";"0000";"OFBogen :16";1;{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104028"}
|
||||
17;"Omniflo Kurve";"0000";"OFBogen :17";1;{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104065"}
|
||||
18;"Omniflo Kurve";"0000";"OFBogen :18";1;{"Kurvenwinkel": 90.0, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104022"}
|
||||
19;"Omniflo Kurve";"0000";"OFBogen :19";1;{"Kurvenwinkel": 90.0, "Radius": 500.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104030"}
|
||||
20;"Omniflo Kurve";"0000";"OFBogen :20";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033"}
|
||||
21;"Omniflo Kurve";"0000";"OFBogen :21";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033+0_B10040"}
|
||||
22;"Omniflo Kurve";"0000";"OFBogen :22";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033+0_B10050"}
|
||||
23;"Omniflo Kurve";"0000";"OFBogen :23";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104035"}
|
||||
24;"Omniflo Kurve";"0000";"OFBogen :24";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104041"}
|
||||
25;"Omniflo Kurve";"0000";"OFBogen :25";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104034"}
|
||||
26;"Omniflo Kurve";"0000";"OFBogen :26";1;{"Kurvenwinkel": 90.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104066"}
|
||||
27;"Omniflo Kurve";"0000";"OFBogen :27";1;{"Kurvenwinkel": 180.0, "Radius": 650.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104043"}
|
||||
28;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342011"}
|
||||
29;"Omniflo Weiche";"0000";"OFWeiche :2";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342001"}
|
||||
30;"Omniflo Weiche";"0000";"OFWeiche :3";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342012"}
|
||||
31;"Omniflo Weiche";"0000";"OFWeiche :4";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342002"}
|
||||
32;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342100"}
|
||||
33;"Omniflo Weiche";"0000";"OFWeiche :2";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342101"}
|
||||
34;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342200"}
|
||||
35;"Omniflo Weiche";"0000";"OFWeiche :2";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342201"}
|
||||
36;"Omniflo Weiche";"0000";"OFWeiche :5";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372001"}
|
||||
37;"Omniflo Weiche";"0000";"OFWeiche :6";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372002"}
|
||||
38;"Omniflo Weiche";"0000";"OFWeiche :7";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372002+0_BG090090"}
|
||||
39;"Omniflo Weiche";"0000";"OFWeiche :8";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372004"}
|
||||
40;"Omniflo Weiche";"0000";"OFWeiche :9";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372005"}
|
||||
41;"Omniflo Weiche";"0000";"OFWeiche :10";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372005+0_BG090090"}
|
||||
42;"Omniflo Weiche";"0000";"OFWeiche :11";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372007"}
|
||||
43;"Omniflo Weiche";"0000";"OFWeiche :12";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372008"}
|
||||
44;"Omniflo Weiche";"0000";"OFWeiche :13";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372008+0_BG190090"}
|
||||
45;"Omniflo Weiche";"0000";"OFWeiche :14";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372010"}
|
||||
46;"Omniflo Weiche";"0000";"OFWeiche :15";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372011"}
|
||||
47;"Omniflo Weiche";"0000";"OFWeiche :16";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372011+0_BG190090"}
|
||||
48;"Omniflo Weiche";"0000";"OFWeiche :17";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372021"}
|
||||
49;"Omniflo Weiche";"0000";"OFWeiche :18";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372022"}
|
||||
50;"Omniflo Weiche";"0000";"OFWeiche :19";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372024"}
|
||||
51;"Omniflo Weiche";"0000";"OFWeiche :20";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372025"}
|
||||
52;"Omniflo Weiche";"0000";"OFWeiche :21";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372027"}
|
||||
53;"Omniflo Weiche";"0000";"OFWeiche :22";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372028"}
|
||||
54;"Omniflo Weiche";"0000";"OFWeiche :23";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372028+0_BG080090"}
|
||||
55;"Omniflo Weiche";"0000";"OFWeiche :24";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372030"}
|
||||
56;"Omniflo Weiche";"0000";"OFWeiche :25";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372031"}
|
||||
57;"Omniflo Weiche";"0000";"OFWeiche :26";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372031+0_BG080090"}
|
||||
58;"Omniflo Weiche";"0000";"OFWeiche :27";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372047"}
|
||||
59;"Omniflo Weiche";"0000";"OFWeiche :28";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372048"}
|
||||
60;"Omniflo Weiche";"0000";"OFWeiche :29";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372050"}
|
||||
61;"Omniflo Weiche";"0000";"OFWeiche :30";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372051"}
|
||||
62;"Omniflo Weiche";"0000";"OFWeiche :3";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372100"}
|
||||
63;"Omniflo Weiche";"0000";"OFWeiche :4";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372101"}
|
||||
64;"Omniflo Weiche";"0000";"OFWeiche :5";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372101"}
|
||||
65;"Omniflo Weiche";"0000";"OFWeiche :6";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372101+0_BG090090"}
|
||||
66;"Omniflo Weiche";"0000";"OFWeiche :7";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372101+0_BG090090"}
|
||||
67;"Omniflo Weiche";"0000";"OFWeiche :8";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372103"}
|
||||
68;"Omniflo Weiche";"0000";"OFWeiche :9";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372104"}
|
||||
69;"Omniflo Weiche";"0000";"OFWeiche :10";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372104"}
|
||||
70;"Omniflo Weiche";"0000";"OFWeiche :11";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372104+0_BG190090"}
|
||||
71;"Omniflo Weiche";"0000";"OFWeiche :12";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372104+0_BG190090"}
|
||||
72;"Omniflo Weiche";"0000";"OFWeiche :13";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372106"}
|
||||
73;"Omniflo Weiche";"0000";"OFWeiche :14";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372107"}
|
||||
74;"Omniflo Weiche";"0000";"OFWeiche :15";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372109"}
|
||||
75;"Omniflo Weiche";"0000";"OFWeiche :16";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372110"}
|
||||
76;"Omniflo Weiche";"0000";"OFWeiche :17";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372110"}
|
||||
77;"Omniflo Weiche";"0000";"OFWeiche :18";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372110+0_BG080090"}
|
||||
78;"Omniflo Weiche";"0000";"OFWeiche :19";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372110+0_BG080090"}
|
||||
79;"Omniflo Weiche";"0000";"OFWeiche :20";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372115"}
|
||||
80;"Omniflo Weiche";"0000";"OFWeiche :21";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372116"}
|
||||
81;"Omniflo Weiche";"0000";"OFWeiche :3";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372200"}
|
||||
82;"Omniflo Weiche";"0000";"OFWeiche :4";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372201"}
|
||||
83;"Omniflo Weiche";"0000";"OFWeiche :5";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372201"}
|
||||
84;"Omniflo Weiche";"0000";"OFWeiche :6";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372201+0_BG090090"}
|
||||
85;"Omniflo Weiche";"0000";"OFWeiche :7";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372201+0_BG090090"}
|
||||
86;"Omniflo Weiche";"0000";"OFWeiche :8";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372203"}
|
||||
87;"Omniflo Weiche";"0000";"OFWeiche :9";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372204"}
|
||||
88;"Omniflo Weiche";"0000";"OFWeiche :10";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372204"}
|
||||
89;"Omniflo Weiche";"0000";"OFWeiche :11";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372204+0_BG190090"}
|
||||
90;"Omniflo Weiche";"0000";"OFWeiche :12";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372204+0_BG190090"}
|
||||
91;"Omniflo Weiche";"0000";"OFWeiche :13";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372206"}
|
||||
92;"Omniflo Weiche";"0000";"OFWeiche :14";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372207"}
|
||||
93;"Omniflo Weiche";"0000";"OFWeiche :15";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372209"}
|
||||
94;"Omniflo Weiche";"0000";"OFWeiche :16";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372210"}
|
||||
95;"Omniflo Weiche";"0000";"OFWeiche :17";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372210"}
|
||||
96;"Omniflo Weiche";"0000";"OFWeiche :18";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372210+0_BG080090"}
|
||||
97;"Omniflo Weiche";"0000";"OFWeiche :19";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372210+0_BG080090"}
|
||||
98;"Omniflo Weiche";"0000";"OFWeiche :20";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372215"}
|
||||
99;"Omniflo Weiche";"0000";"OFWeiche :21";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372216"}
|
||||
100;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372400"}
|
||||
101;"Omniflo Weiche";"0000";"OFWeiche :2";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372403"}
|
||||
102;"Omniflo Weiche";"0000";"OFWeiche :3";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372404"}
|
||||
103;"Omniflo Weiche";"0000";"OFWeiche :4";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG071090+834372404+0_BG071090"}
|
||||
104;"Omniflo Weiche";"0000";"OFWeiche :5";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG071090+834372404"}
|
||||
105;"Omniflo Weiche";"0000";"OFWeiche :6";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372404+0_BG071090"}
|
||||
106;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Deltaweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372401"}
|
||||
107;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Sternweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372420"}
|
||||
108;"Omniflo Sum";"autogenerated_of_json";"Omniflo sum";1;{"Anzahl Bögen": 27, "Anzahl Weichengrundkörper": 0, "Anzahl Einwegweichen": 30, "Anzahl Deltaweichen": 7, "Anzahl Doppelweichen und Dreiwegeweichen": 42, "Anzahl Sternweichen": 1, "Gesamtlänge AP110": 0.0, "Gesamtlänge AP60": 0.0}
|
||||
Elementnummer;TeileArt;TeileId;Bezeichnung;Planquadrat;Anzahl;Position;Boundingbox;Nachbarn;Merkmale
|
||||
1;"Omniflo Kurve";"0000";"OFBogen :1";"A/A";1;"";"";"";{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025"}
|
||||
2;"Omniflo Kurve";"0000";"OFBogen :2";"A/A";1;"";"";"";{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025+0_B10090"}
|
||||
3;"Omniflo Kurve";"0000";"OFBogen :3";"A/A";1;"";"";"";{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025+0_B10091"}
|
||||
4;"Omniflo Kurve";"0000";"OFBogen :4";"A/A";1;"";"";"";{"Kurvenwinkel": 45.0, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104021"}
|
||||
5;"Omniflo Kurve";"0000";"OFBogen :5";"A/A";1;"";"";"";{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104026"}
|
||||
6;"Omniflo Kurve";"0000";"OFBogen :6";"A/A";1;"";"";"";{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104026+0_B10071"}
|
||||
7;"Omniflo Kurve";"0000";"OFBogen :7";"A/A";1;"";"";"";{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104037"}
|
||||
8;"Omniflo Kurve";"0000";"OFBogen :8";"A/A";1;"";"";"";{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104029"}
|
||||
9;"Omniflo Kurve";"0000";"OFBogen :9";"A/A";1;"";"";"";{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031"}
|
||||
10;"Omniflo Kurve";"0000";"OFBogen :10";"A/A";1;"";"";"";{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031+0_B10060"}
|
||||
11;"Omniflo Kurve";"0000";"OFBogen :11";"B/A";1;"";"";"";{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031+0_B10070"}
|
||||
12;"Omniflo Kurve";"0000";"OFBogen :12";"B/A";1;"";"";"";{"Kurvenwinkel": 67.5, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104024"}
|
||||
13;"Omniflo Kurve";"0000";"OFBogen :13";"B/A";1;"";"";"";{"Kurvenwinkel": 67.5, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104024+0_B10081"}
|
||||
14;"Omniflo Kurve";"0000";"OFBogen :14";"B/A";1;"";"";"";{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104027"}
|
||||
15;"Omniflo Kurve";"0000";"OFBogen :15";"B/A";1;"";"";"";{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104027+0_B10080"}
|
||||
16;"Omniflo Kurve";"0000";"OFBogen :16";"B/A";1;"";"";"";{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104028"}
|
||||
17;"Omniflo Kurve";"0000";"OFBogen :17";"B/A";1;"";"";"";{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104065"}
|
||||
18;"Omniflo Kurve";"0000";"OFBogen :18";"B/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104022"}
|
||||
19;"Omniflo Kurve";"0000";"OFBogen :19";"B/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 500.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104030"}
|
||||
20;"Omniflo Kurve";"0000";"OFBogen :20";"B/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033"}
|
||||
21;"Omniflo Kurve";"0000";"OFBogen :21";"C/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033+0_B10040"}
|
||||
22;"Omniflo Kurve";"0000";"OFBogen :22";"C/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033+0_B10050"}
|
||||
23;"Omniflo Kurve";"0000";"OFBogen :23";"C/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104035"}
|
||||
24;"Omniflo Kurve";"0000";"OFBogen :24";"C/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104041"}
|
||||
25;"Omniflo Kurve";"0000";"OFBogen :25";"C/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104034"}
|
||||
26;"Omniflo Kurve";"0000";"OFBogen :26";"C/A";1;"";"";"";{"Kurvenwinkel": 90.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104066"}
|
||||
27;"Omniflo Kurve";"0000";"OFBogen :27";"C/A";1;"";"";"";{"Kurvenwinkel": 180.0, "Radius": 650.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104043"}
|
||||
28;"Omniflo Weiche";"0000";"OFWeiche :1";"C/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342011"}
|
||||
29;"Omniflo Weiche";"0000";"OFWeiche :2";"C/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342001"}
|
||||
30;"Omniflo Weiche";"0000";"OFWeiche :3";"C/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342012"}
|
||||
31;"Omniflo Weiche";"0000";"OFWeiche :4";"D/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342002"}
|
||||
32;"Omniflo Weiche";"0000";"OFWeiche :1";"D/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342100"}
|
||||
33;"Omniflo Weiche";"0000";"OFWeiche :2";"D/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342101"}
|
||||
34;"Omniflo Weiche";"0000";"OFWeiche :1";"D/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342200"}
|
||||
35;"Omniflo Weiche";"0000";"OFWeiche :2";"D/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342201"}
|
||||
36;"Omniflo Weiche";"0000";"OFWeiche :5";"D/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372001"}
|
||||
37;"Omniflo Weiche";"0000";"OFWeiche :6";"D/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372002"}
|
||||
38;"Omniflo Weiche";"0000";"OFWeiche :7";"D/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372002+0_BG090090"}
|
||||
39;"Omniflo Weiche";"0000";"OFWeiche :8";"D/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372004"}
|
||||
40;"Omniflo Weiche";"0000";"OFWeiche :9";"D/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372005"}
|
||||
41;"Omniflo Weiche";"0000";"OFWeiche :10";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372005+0_BG090090"}
|
||||
42;"Omniflo Weiche";"0000";"OFWeiche :11";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372007"}
|
||||
43;"Omniflo Weiche";"0000";"OFWeiche :12";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372008"}
|
||||
44;"Omniflo Weiche";"0000";"OFWeiche :13";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372008+0_BG190090"}
|
||||
45;"Omniflo Weiche";"0000";"OFWeiche :14";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372010"}
|
||||
46;"Omniflo Weiche";"0000";"OFWeiche :15";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372011"}
|
||||
47;"Omniflo Weiche";"0000";"OFWeiche :16";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372011+0_BG190090"}
|
||||
48;"Omniflo Weiche";"0000";"OFWeiche :17";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372021"}
|
||||
49;"Omniflo Weiche";"0000";"OFWeiche :18";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372022"}
|
||||
50;"Omniflo Weiche";"0000";"OFWeiche :19";"E/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372024"}
|
||||
51;"Omniflo Weiche";"0000";"OFWeiche :20";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372025"}
|
||||
52;"Omniflo Weiche";"0000";"OFWeiche :21";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372027"}
|
||||
53;"Omniflo Weiche";"0000";"OFWeiche :22";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372028"}
|
||||
54;"Omniflo Weiche";"0000";"OFWeiche :23";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372028+0_BG080090"}
|
||||
55;"Omniflo Weiche";"0000";"OFWeiche :24";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372030"}
|
||||
56;"Omniflo Weiche";"0000";"OFWeiche :25";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372031"}
|
||||
57;"Omniflo Weiche";"0000";"OFWeiche :26";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372031+0_BG080090"}
|
||||
58;"Omniflo Weiche";"0000";"OFWeiche :27";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372047"}
|
||||
59;"Omniflo Weiche";"0000";"OFWeiche :28";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372048"}
|
||||
60;"Omniflo Weiche";"0000";"OFWeiche :29";"F/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372050"}
|
||||
61;"Omniflo Weiche";"0000";"OFWeiche :30";"G/A";1;"";"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372051"}
|
||||
62;"Omniflo Weiche";"0000";"OFWeiche :3";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372100"}
|
||||
63;"Omniflo Weiche";"0000";"OFWeiche :4";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372101"}
|
||||
64;"Omniflo Weiche";"0000";"OFWeiche :5";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372101"}
|
||||
65;"Omniflo Weiche";"0000";"OFWeiche :6";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372101+0_BG090090"}
|
||||
66;"Omniflo Weiche";"0000";"OFWeiche :7";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372101+0_BG090090"}
|
||||
67;"Omniflo Weiche";"0000";"OFWeiche :8";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372103"}
|
||||
68;"Omniflo Weiche";"0000";"OFWeiche :9";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372104"}
|
||||
69;"Omniflo Weiche";"0000";"OFWeiche :10";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372104"}
|
||||
70;"Omniflo Weiche";"0000";"OFWeiche :11";"G/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372104+0_BG190090"}
|
||||
71;"Omniflo Weiche";"0000";"OFWeiche :12";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372104+0_BG190090"}
|
||||
72;"Omniflo Weiche";"0000";"OFWeiche :13";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372106"}
|
||||
73;"Omniflo Weiche";"0000";"OFWeiche :14";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372107"}
|
||||
74;"Omniflo Weiche";"0000";"OFWeiche :15";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372109"}
|
||||
75;"Omniflo Weiche";"0000";"OFWeiche :16";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372110"}
|
||||
76;"Omniflo Weiche";"0000";"OFWeiche :17";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372110"}
|
||||
77;"Omniflo Weiche";"0000";"OFWeiche :18";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372110+0_BG080090"}
|
||||
78;"Omniflo Weiche";"0000";"OFWeiche :19";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372110+0_BG080090"}
|
||||
79;"Omniflo Weiche";"0000";"OFWeiche :20";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372115"}
|
||||
80;"Omniflo Weiche";"0000";"OFWeiche :21";"H/A";1;"";"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372116"}
|
||||
81;"Omniflo Weiche";"0000";"OFWeiche :3";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372200"}
|
||||
82;"Omniflo Weiche";"0000";"OFWeiche :4";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372201"}
|
||||
83;"Omniflo Weiche";"0000";"OFWeiche :5";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372201"}
|
||||
84;"Omniflo Weiche";"0000";"OFWeiche :6";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372201+0_BG090090"}
|
||||
85;"Omniflo Weiche";"0000";"OFWeiche :7";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372201+0_BG090090"}
|
||||
86;"Omniflo Weiche";"0000";"OFWeiche :8";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372203"}
|
||||
87;"Omniflo Weiche";"0000";"OFWeiche :9";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372204"}
|
||||
88;"Omniflo Weiche";"0000";"OFWeiche :10";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372204"}
|
||||
89;"Omniflo Weiche";"0000";"OFWeiche :11";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372204+0_BG190090"}
|
||||
90;"Omniflo Weiche";"0000";"OFWeiche :12";"I/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372204+0_BG190090"}
|
||||
91;"Omniflo Weiche";"0000";"OFWeiche :13";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372206"}
|
||||
92;"Omniflo Weiche";"0000";"OFWeiche :14";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372207"}
|
||||
93;"Omniflo Weiche";"0000";"OFWeiche :15";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372209"}
|
||||
94;"Omniflo Weiche";"0000";"OFWeiche :16";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372210"}
|
||||
95;"Omniflo Weiche";"0000";"OFWeiche :17";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372210"}
|
||||
96;"Omniflo Weiche";"0000";"OFWeiche :18";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372210+0_BG080090"}
|
||||
97;"Omniflo Weiche";"0000";"OFWeiche :19";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372210+0_BG080090"}
|
||||
98;"Omniflo Weiche";"0000";"OFWeiche :20";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372215"}
|
||||
99;"Omniflo Weiche";"0000";"OFWeiche :21";"J/A";1;"";"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372216"}
|
||||
100;"Omniflo Weiche";"0000";"OFWeiche :1";"J/A";1;"";"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372400"}
|
||||
101;"Omniflo Weiche";"0000";"OFWeiche :2";"K/A";1;"";"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372403"}
|
||||
102;"Omniflo Weiche";"0000";"OFWeiche :3";"K/A";1;"";"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372404"}
|
||||
103;"Omniflo Weiche";"0000";"OFWeiche :4";"K/A";1;"";"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG071090+834372404+0_BG071090"}
|
||||
104;"Omniflo Weiche";"0000";"OFWeiche :5";"K/A";1;"";"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG071090+834372404"}
|
||||
105;"Omniflo Weiche";"0000";"OFWeiche :6";"K/A";1;"";"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372404+0_BG071090"}
|
||||
106;"Omniflo Weiche";"0000";"OFWeiche :1";"K/A";1;"";"";"";{"Weichentyp": "Deltaweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372401"}
|
||||
107;"Omniflo Weiche";"0000";"OFWeiche :1";"K/A";1;"";"";"";{"Weichentyp": "Sternweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372420"}
|
||||
108;"Omniflo Sum";"autogenerated_of_json";"Omniflo sum";"";1;"";"";"";{"Anzahl Bögen": 27, "Anzahl Weichengrundkörper": 0, "Anzahl Einwegweichen": 30, "Anzahl Deltaweichen": 7, "Anzahl Doppelweichen und Dreiwegeweichen": 42, "Anzahl Sternweichen": 1, "Gesamtlänge AP110": 0.0, "Gesamtlänge AP60": 0.0}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 42.
|
+10
-10
@@ -202,8 +202,8 @@ class TestFoerdererExportCSV:
|
||||
|
||||
def test_header_felder(self):
|
||||
"""CSV-Header muss korrekte Spaltenbezeichnungen haben."""
|
||||
expected = ["Elementnummer", "TeileArt", "TeileId",
|
||||
"Bezeichnung", "Anzahl", "Merkmale"]
|
||||
expected = ["Elementnummer", "TeileArt", "TeileId", "Bezeichnung",
|
||||
"Planquadrat", "Anzahl", "Position", "Boundingbox", "Nachbarn", "Merkmale"]
|
||||
for i, name in enumerate(expected):
|
||||
assert self.header[i] == name, (
|
||||
f"Header[{i}]: erwartet '{name}', ist '{self.header[i]}'"
|
||||
@@ -226,19 +226,19 @@ class TestFoerdererExportCSV:
|
||||
def test_anzahl_spalte_ist_eins(self):
|
||||
"""Anzahl-Spalte muss fuer alle Zeilen '1' sein."""
|
||||
for i, row in enumerate(self.rows):
|
||||
if len(row) < 5:
|
||||
if len(row) < 6:
|
||||
continue
|
||||
assert row[4] == "1", (
|
||||
f"Zeile {i + 2}: Anzahl={row[4]}, erwartet 1"
|
||||
assert row[5] == "1", (
|
||||
f"Zeile {i + 2}: Anzahl={row[5]}, erwartet 1"
|
||||
)
|
||||
|
||||
def test_merkmale_sind_valides_json(self):
|
||||
"""Merkmale-Spalte muss valides JSON enthalten."""
|
||||
for i, row in enumerate(self.rows):
|
||||
if len(row) < 6:
|
||||
if len(row) < 10:
|
||||
continue
|
||||
try:
|
||||
json.loads(row[5])
|
||||
json.loads(row[9])
|
||||
except json.JSONDecodeError as e:
|
||||
pytest.fail(f"Zeile {i + 2}: Merkmale ist kein valides JSON: {e}")
|
||||
|
||||
@@ -247,9 +247,9 @@ class TestFoerdererExportCSV:
|
||||
required = {"Typ", "Winkel", "DeltaH_mm", "DeltaL_mm",
|
||||
"L_VF_m", "Hoehe_Von_mm", "Hoehe_Bis_mm"}
|
||||
for i, row in enumerate(self.rows):
|
||||
if len(row) < 6:
|
||||
if len(row) < 10:
|
||||
continue
|
||||
merkmale = json.loads(row[5])
|
||||
merkmale = json.loads(row[9])
|
||||
missing = required - set(merkmale.keys())
|
||||
assert not missing, (
|
||||
f"Zeile {i + 2}: Fehlende Merkmale-Felder: {missing}"
|
||||
@@ -290,7 +290,7 @@ class TestFoerdererExportSivas:
|
||||
def test_header_felder(self):
|
||||
"""Sivas-CSV-Header muss korrekte Spalten haben."""
|
||||
expected = ["Nr", "TeileArt", "SivasNummer", "Bezeichnung",
|
||||
"Dispogruppe", "Anzahl", "Laenge[mm]", "Hoehe[m]", "details"]
|
||||
"Dispogruppe", "Anzahl", "Laenge[mm]", "details"]
|
||||
for i, name in enumerate(expected):
|
||||
assert self.header[i] == name, (
|
||||
f"Header[{i}]: erwartet '{name}', ist '{self.header[i]}'"
|
||||
|
||||
@@ -107,7 +107,7 @@ class TestOmnifloExportUnit:
|
||||
out_dir = _output_dir()
|
||||
os.makedirs(out_dir, exist_ok=True)
|
||||
csv_path = os.path.join(out_dir, "omniflo_export.csv")
|
||||
header = "Elementnummer;TeileArt;TeileId;Bezeichnung;Anzahl;Merkmale"
|
||||
header = "Elementnummer;TeileArt;TeileId;Bezeichnung;Planquadrat;Anzahl;Position;Boundingbox;Nachbarn;Merkmale"
|
||||
with open(csv_path, "w", encoding="utf-8") as f:
|
||||
f.write(header + "\n")
|
||||
for item in self.items:
|
||||
@@ -333,7 +333,7 @@ def _reference_dir():
|
||||
|
||||
def _normalize_row(line):
|
||||
"""Splittet eine CSV-Zeile und ersetzt die TeileId (UUID) durch Platzhalter."""
|
||||
cols = line.strip().split(";", 5)
|
||||
cols = line.strip().split(";", 9)
|
||||
if len(cols) >= 3:
|
||||
cols[2] = "<ID>"
|
||||
return cols
|
||||
|
||||
Reference in New Issue
Block a user