From abc7d5ab7718bcc146dcc4ad8ea960a60166e27b Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Mon, 22 Jun 2026 11:19:27 +0200 Subject: [PATCH] der Lisp Omniflo Test verwendet jetzt wirklich alle existierenden Omniflo Teile die da sind. --- tests/test_omniflo.lsp | 17 +- tests/test_omniflo.py | 80 +- tests/testdata/omniflo_tests.json | 1227 +++++++++++++++++++++++++++-- 3 files changed, 1236 insertions(+), 88 deletions(-) diff --git a/tests/test_omniflo.lsp b/tests/test_omniflo.lsp index c5c0d6b..eb2f25f 100644 --- a/tests/test_omniflo.lsp +++ b/tests/test_omniflo.lsp @@ -107,7 +107,7 @@ ;; exportiert CSV nach tests/output/. ;; ============================================================ (defun c:TEST_OMNIFLO (/ tests-json-pfad testfaelle - x-pos x-schritt + x-val y-val idx eintrag sivasnr hoehe-str drehung-str description insert-pt anzahl-ok anzahl-fehler results-list tests-out-dir old-results) @@ -148,8 +148,6 @@ (princ "\n================================================================") ;; Alle Bloecke einfuegen - (setq x-pos 0.0) - (setq x-schritt 200.0) (setq anzahl-ok 0) (setq anzahl-fehler 0) (setq results-list nil) @@ -170,11 +168,18 @@ ) (setq description (omni:val eintrag "description")) - (setq insert-pt (list x-pos 0.0 (atof hoehe-str))) + ;; x,y-Koordinaten aus JSON lesen (wie in omniflo_uebersicht.dxf) + (setq x-val (omni:val eintrag "x")) + (setq y-val (omni:val eintrag "y")) + (if (null x-val) (setq x-val 0.0)) + (if (null y-val) (setq y-val 0.0)) + (if (not (numberp x-val)) (setq x-val (atof x-val))) + (if (not (numberp y-val)) (setq y-val (atof y-val))) + (setq insert-pt (list x-val y-val (atof hoehe-str))) (princ (strcat "\n " (itoa idx) ". " (if description description (if sivasnr sivasnr "?")) - " -> (" (rtos x-pos 2 0) ", 0, " hoehe-str ")")) + " -> (" (rtos x-val 2 0) ", " (rtos y-val 2 0) ", " hoehe-str ")")) (if (omni:test-insert sivasnr insert-pt hoehe-str drehung-str) (progn @@ -193,9 +198,9 @@ ) ) - (setq x-pos (+ x-pos x-schritt)) ) + ;; Zusammenfassung (princ "\n================================================================") (princ (strcat "\n Eingefuegt: " (itoa anzahl-ok) diff --git a/tests/test_omniflo.py b/tests/test_omniflo.py index 7696efb..49db2b8 100644 --- a/tests/test_omniflo.py +++ b/tests/test_omniflo.py @@ -22,7 +22,7 @@ sys.path.insert(0, _LIB_DIR) from export_csv import ( build_lookup, process_blocks, build_bogen_merkmale, - build_weiche_merkmale, load_json + build_weiche_merkmale, load_json, format_csv_line ) @@ -100,6 +100,16 @@ class TestOmnifloExportUnit: )) self.items = process_blocks(self.blocks, self.lookup) + # CSV in output speichern + 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" + with open(csv_path, "w", encoding="utf-8") as f: + f.write(header + "\n") + for item in self.items: + f.write(format_csv_line(item) + "\n") + def test_item_count_matches_testcases(self): """Anzahl exportierter Elemente muss Anzahl Testfaelle entsprechen.""" assert len(self.items) == len(self.tests), ( @@ -348,3 +358,71 @@ class TestOmnifloExportCSV: assert not missing, ( f"Zeile {i + 2}: Fehlende Weichen-Felder: {missing}" ) + + +# --------------------------------------------------------------------------- +# Referenz-Tests: CSV gegen Referenzdatei vergleichen +# --------------------------------------------------------------------------- + +def _reference_dir(): + return os.path.join(os.path.dirname(os.path.abspath(__file__)), "reference") + + +def _normalize_row(line): + """Splittet eine CSV-Zeile und ersetzt die TeileId (UUID) durch Platzhalter.""" + cols = line.strip().split(";", 5) + if len(cols) >= 3: + cols[2] = "" + return cols + + +class TestOmnifloReferenceCSV: + """Vergleicht den erzeugten Unit-Test-CSV-Export mit einer Referenzdatei.""" + + @pytest.fixture(autouse=True) + def setup(self): + self.out_csv = os.path.join(_output_dir(), "omniflo_export.csv") + self.ref_csv = os.path.join(_reference_dir(), "omniflo_export_reference.csv") + if not os.path.exists(self.out_csv): + pytest.skip( + "omniflo_export.csv nicht vorhanden - " + "zuerst TestOmnifloExportUnit ausfuehren" + ) + if not os.path.exists(self.ref_csv): + pytest.skip("Referenzdatei nicht vorhanden: " + self.ref_csv) + with open(self.out_csv, "r", encoding="utf-8") as f: + self.out_lines = f.readlines() + with open(self.ref_csv, "r", encoding="utf-8") as f: + self.ref_lines = f.readlines() + + def test_header_matches_reference(self): + """Header muss mit Referenz uebereinstimmen.""" + assert self.out_lines[0].strip() == self.ref_lines[0].strip(), ( + f"Header abweichend:\n Ist: {self.out_lines[0].strip()}\n" + f" Soll: {self.ref_lines[0].strip()}" + ) + + def test_zeilenanzahl_matches_reference(self): + """Zeilenanzahl muss mit Referenz uebereinstimmen.""" + assert len(self.out_lines) == len(self.ref_lines), ( + f"Zeilenanzahl abweichend: Ist={len(self.out_lines)}, " + f"Soll={len(self.ref_lines)}" + ) + + def test_zeilen_matches_reference(self): + """Alle Zeilen muessen mit Referenz uebereinstimmen (TeileId wird ignoriert).""" + min_lines = min(len(self.out_lines), len(self.ref_lines)) + diffs = [] + for i in range(1, min_lines): + out_cols = _normalize_row(self.out_lines[i]) + ref_cols = _normalize_row(self.ref_lines[i]) + if out_cols != ref_cols: + diffs.append( + f"Zeile {i + 1}:\n" + f" Ist: {self.out_lines[i].strip()[:120]}\n" + f" Soll: {self.ref_lines[i].strip()[:120]}" + ) + assert not diffs, ( + f"{len(diffs)} abweichende Zeile(n) (erste 5):\n" + + "\n".join(diffs[:5]) + ) diff --git a/tests/testdata/omniflo_tests.json b/tests/testdata/omniflo_tests.json index df7d7fb..0fb5e1b 100644 --- a/tests/testdata/omniflo_tests.json +++ b/tests/testdata/omniflo_tests.json @@ -1,114 +1,1179 @@ [ { - "id": "OF_Bogen_225_R550", + "id": "821104025", "type": "bogen", "sivasnr": "821104025", + "x": -205.81, + "y": -114.16, "hoehe": 2000, "drehung": 0.0, - "description": "Omniflo Bogen 22,5 Grad R550" + "description": "APB 110 R 550/22,5° – 84/522", + "row": "Boegen 22.5" }, { - "id": "OF_Bogen_45_R400", + "id": "821104025_0_B10090", + "type": "bogen", + "sivasnr": "821104025+0_B10090", + "x": -10243.29, + "y": -2319.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/22,5° – 84/522 mit TEF Innen", + "row": "Boegen 22.5" + }, + { + "id": "821104025_0_B10091", + "type": "bogen", + "sivasnr": "821104025+0_B10091", + "x": -10311.78, + "y": -1403.94, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/22,5° – 84/522 mit TEF Aussen", + "row": "Boegen 22.5" + }, + { + "id": "821104021", "type": "bogen", "sivasnr": "821104021", - "hoehe": 2500, + "x": -1839.88, + "y": -2670.33, + "hoehe": 2000, "drehung": 0.0, - "description": "Omniflo Bogen 45 Grad R400" + "description": "APB 110 R 400/45° – 400/670", + "row": "Boegen 45" }, { - "id": "OF_Bogen_675_R400", + "id": "821104026", + "type": "bogen", + "sivasnr": "821104026", + "x": 769.72, + "y": -1758.38, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/45° – 232/610", + "row": "Boegen 45" + }, + { + "id": "821104026_0_B10071", + "type": "bogen", + "sivasnr": "821104026+0_B10071", + "x": -8789.06, + "y": -1910.31, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/45° – 232/610 mit TEF Innen", + "row": "Boegen 45" + }, + { + "id": "821104037", + "type": "bogen", + "sivasnr": "821104037", + "x": 2903.79, + "y": -1936.33, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/45° – 205/337", + "row": "Boegen 45" + }, + { + "id": "821104029", + "type": "bogen", + "sivasnr": "821104029", + "x": 3251.84, + "y": -1716.33, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/45° 191/552", + "row": "Boegen 45" + }, + { + "id": "821104031", + "type": "bogen", + "sivasnr": "821104031", + "x": 5323.26, + "y": -4810.33, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 630/45° – 400/825", + "row": "Boegen 45" + }, + { + "id": "821104031_0_B10060", + "type": "bogen", + "sivasnr": "821104031+0_B10060", + "x": -4725.96, + "y": -2401.36, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 630/45° – 400/825 mit TEF Aussen", + "row": "Boegen 45" + }, + { + "id": "821104031_0_B10070", + "type": "bogen", + "sivasnr": "821104031+0_B10070", + "x": -6823.98, + "y": -3702.69, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 630/45° – 400/825 mit TEF Innen", + "row": "Boegen 45" + }, + { + "id": "821104024", "type": "bogen", "sivasnr": "821104024", - "hoehe": 3000, + "x": 40.29, + "y": -3942.81, + "hoehe": 2000, "drehung": 0.0, - "description": "Omniflo Bogen 67,5 Grad R400" + "description": "APB 110 R 400/67,5° – 339/508", + "row": "Boegen 67.5" }, { - "id": "OF_Bogen_90_R630", + "id": "821104024_0_B10081", + "type": "bogen", + "sivasnr": "821104024+0_B10081", + "x": -7386.8, + "y": -5866.37, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 400/67,5° – 339/508 mit TEF Innen", + "row": "Boegen 67.5" + }, + { + "id": "821104027", + "type": "bogen", + "sivasnr": "821104027", + "x": -1365.48, + "y": -4657.56, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/67,5° – 488/778", + "row": "Boegen 67.5" + }, + { + "id": "821104027_0_B10080", + "type": "bogen", + "sivasnr": "821104027+0_B10080", + "x": -6115.19, + "y": -4826.33, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/67,5° – 488/778 mit TEF Innen", + "row": "Boegen 67.5" + }, + { + "id": "821104028", + "type": "bogen", + "sivasnr": "821104028", + "x": 5397.44, + "y": -3172.81, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/67,5° – 420/582", + "row": "Boegen 67.5" + }, + { + "id": "821104065", + "type": "bogen", + "sivasnr": "821104065", + "x": 3943.29, + "y": -3325.96, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/67,5° – 498/758", + "row": "Boegen 67.5" + }, + { + "id": "821104022", + "type": "bogen", + "sivasnr": "821104022", + "x": 740.0, + "y": -4576.22, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 400/90° – 500/500", + "row": "Boegen 90" + }, + { + "id": "821104030", + "type": "bogen", + "sivasnr": "821104030", + "x": 21.04, + "y": -5496.22, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 500/90° – 550/550", + "row": "Boegen 90" + }, + { + "id": "821104033", "type": "bogen", "sivasnr": "821104033", - "hoehe": 3500, + "x": 12.08, + "y": -3846.22, + "hoehe": 2000, "drehung": 0.0, - "description": "Omniflo Bogen 90 Grad R630" + "description": "APB 110 R 630/90° – 800/800", + "row": "Boegen 90" }, { - "id": "OF_Bogen_180_R650", + "id": "821104033_0_B10040", + "type": "bogen", + "sivasnr": "821104033+0_B10040", + "x": -4472.83, + "y": -5267.07, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 630/90° – 800/800 mit TEF Aussen", + "row": "Boegen 90" + }, + { + "id": "821104033_0_B10050", + "type": "bogen", + "sivasnr": "821104033+0_B10050", + "x": 1917.57, + "y": -4877.07, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 630/90° – 800/800 mit TEF Innen", + "row": "Boegen 90" + }, + { + "id": "821104035", + "type": "bogen", + "sivasnr": "821104035", + "x": 5565.46, + "y": -4166.22, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 630/90° – 850/870", + "row": "Boegen 90" + }, + { + "id": "821104041", + "type": "bogen", + "sivasnr": "821104041", + "x": 4826.5, + "y": -4256.22, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 630/90° – 850/690", + "row": "Boegen 90" + }, + { + "id": "821104034", + "type": "bogen", + "sivasnr": "821104034", + "x": 5157.53, + "y": -4116.22, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 630/90° – 850/890", + "row": "Boegen 90" + }, + { + "id": "821104066", + "type": "bogen", + "sivasnr": "821104066", + "x": 8438.57, + "y": -4186.22, + "hoehe": 2000, + "drehung": 0.0, + "description": "APB 110 R 550/90° – 900/605", + "row": "Boegen 90" + }, + { + "id": "821104043", "type": "bogen", "sivasnr": "821104043", - "hoehe": 4000, - "drehung": 0.0, - "description": "Omniflo Bogen 180 Grad R650" - }, - { - "id": "OF_Weiche_Einzel_45L", - "type": "weiche", - "sivasnr": "834372001", + "x": -103.03, + "y": -5585.68, "hoehe": 2000, "drehung": 0.0, - "description": "Omniflo Einzelweiche 45 Grad Links" + "description": "APB 110 R 630/180° – 1300/800", + "row": "Boegen 180" }, { - "id": "OF_Weiche_Einzel_90L", - "type": "weiche", - "sivasnr": "834372021", - "hoehe": 2500, - "drehung": 0.0, - "description": "Omniflo Einzelweiche 90 Grad Links" - }, - { - "id": "OF_Weiche_Doppel_45", - "type": "weiche", - "sivasnr": "834372100", - "hoehe": 3000, - "drehung": 0.0, - "description": "Omniflo Doppelweiche 45 Grad" - }, - { - "id": "OF_Weiche_Doppel_90", - "type": "weiche", - "sivasnr": "834372109", - "hoehe": 3500, - "drehung": 0.0, - "description": "Omniflo Doppelweiche 90 Grad" - }, - { - "id": "OF_Weiche_Dreiwege_45", - "type": "weiche", - "sivasnr": "834372200", - "hoehe": 4000, - "drehung": 0.0, - "description": "Omniflo Dreiwegeweiche 45 Grad" - }, - { - "id": "OF_Weiche_Dreifach_90", - "type": "weiche", - "sivasnr": "834372404", - "hoehe": 2000, - "drehung": 0.0, - "description": "Omniflo Dreifachweiche 90 Grad" - }, - { - "id": "OF_Weiche_Delta_90", - "type": "weiche", - "sivasnr": "834372401", - "hoehe": 2500, - "drehung": 0.0, - "description": "Omniflo Deltaweiche 90 Grad" - }, - { - "id": "OF_Weiche_Stern", - "type": "weiche", - "sivasnr": "834372420", - "hoehe": 3000, - "drehung": 0.0, - "description": "Omniflo Sternweiche" - }, - { - "id": "OF_Weichenkoerper_L", + "id": "834342011", "type": "weiche", "sivasnr": "834342011", - "hoehe": 3500, + "x": 1385.81, + "y": -8594.38, + "hoehe": 2000, "drehung": 0.0, - "description": "Omniflo Weichenkoerper Links" + "description": "WEICHENKOERPER S L, KPL. MIT M", + "row": "Weichenkoerper Einzel" + }, + { + "id": "834342001", + "type": "weiche", + "sivasnr": "834342001", + "x": 1177.09, + "y": -8664.38, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHENKOERPER S R, KPL. MIT M", + "row": "Weichenkoerper Einzel" + }, + { + "id": "834342012", + "type": "weiche", + "sivasnr": "834342012", + "x": 2134.78, + "y": -8594.38, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHENKOERPER S L, KPL. MIT P", + "row": "Weichenkoerper Einzel" + }, + { + "id": "834342002", + "type": "weiche", + "sivasnr": "834342002", + "x": 1926.05, + "y": -8664.38, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHENKOERPER S R, KPL. MIT P", + "row": "Weichenkoerper Einzel" + }, + { + "id": "834342100", + "type": "weiche", + "sivasnr": "834342100", + "x": -70.0, + "y": -9624.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHENKOERPER S D, KPL. MIT M", + "row": "Weichenkoerper Doppel" + }, + { + "id": "834342101", + "type": "weiche", + "sivasnr": "834342101", + "x": 371.88, + "y": -9624.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHENKOERPER S D, KPL. MIT P", + "row": "Weichenkoerper Doppel" + }, + { + "id": "834342200", + "type": "weiche", + "sivasnr": "834342200", + "x": 2358.0, + "y": -10598.2, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHENKOERPER S T, KPL. MIT M", + "row": "Weichenkoerper Dreiwege" + }, + { + "id": "834342201", + "type": "weiche", + "sivasnr": "834342201", + "x": 2799.88, + "y": -10598.2, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHENKOERPER S T, KPL. MIT P", + "row": "Weichenkoerper Dreiwege" + }, + { + "id": "834372001", + "type": "weiche", + "sivasnr": "834372001", + "x": -2240.0, + "y": -9862.59, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-L-350/700, KPL. MIT M", + "row": "Einzelweiche 45" + }, + { + "id": "834372002", + "type": "weiche", + "sivasnr": "834372002", + "x": -1621.45, + "y": -9862.59, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-L-350/700, KPL. MIT P", + "row": "Einzelweiche 45" + }, + { + "id": "834372002_0_BG090090", + "type": "weiche", + "sivasnr": "834372002+0_BG090090", + "x": -14436.07, + "y": -12347.28, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-L-350/700, KPL. MIT P mit TEF Innen", + "row": "Einzelweiche 45" + }, + { + "id": "834372004", + "type": "weiche", + "sivasnr": "834372004", + "x": 375.94, + "y": -9742.59, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-R-350/700, KPL. MIT M", + "row": "Einzelweiche 45" + }, + { + "id": "834372005", + "type": "weiche", + "sivasnr": "834372005", + "x": 994.49, + "y": -9742.59, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-R-350/700, KPL. MIT P", + "row": "Einzelweiche 45" + }, + { + "id": "834372005_0_BG090090", + "type": "weiche", + "sivasnr": "834372005+0_BG090090", + "x": -13487.7, + "y": -12775.08, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-R-350/700, KPL. MIT P mit TEF Innen", + "row": "Einzelweiche 45" + }, + { + "id": "834372007", + "type": "weiche", + "sivasnr": "834372007", + "x": 1085.4, + "y": -9951.54, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-L-400/750, KPL. MIT M", + "row": "Einzelweiche 45" + }, + { + "id": "834372008", + "type": "weiche", + "sivasnr": "834372008", + "x": 1753.82, + "y": -9951.54, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-L-400/750, KPL. MIT P", + "row": "Einzelweiche 45" + }, + { + "id": "834372008_0_BG190090", + "type": "weiche", + "sivasnr": "834372008+0_BG190090", + "x": -6446.36, + "y": -12065.52, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-L-400/750, KPL. MIT P mit TEF Ihnen", + "row": "Einzelweiche 45" + }, + { + "id": "834372010", + "type": "weiche", + "sivasnr": "834372010", + "x": 4460.87, + "y": -9713.5, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-R-400/750, KPL. MIT M", + "row": "Einzelweiche 45" + }, + { + "id": "834372011", + "type": "weiche", + "sivasnr": "834372011", + "x": 5129.29, + "y": -9713.5, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-R-400/750, KPL. MIT P", + "row": "Einzelweiche 45" + }, + { + "id": "834372011_0_BG190090", + "type": "weiche", + "sivasnr": "834372011+0_BG190090", + "x": -3447.43, + "y": -12197.62, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 45°-R-400/750, KPL. MIT P mit TEF Ihnen", + "row": "Einzelweiche 45" + }, + { + "id": "834372021", + "type": "weiche", + "sivasnr": "834372021", + "x": -810.0, + "y": -12045.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-L-500/600, KPL. MIT M", + "row": "Einzelweiche 90" + }, + { + "id": "834372022", + "type": "weiche", + "sivasnr": "834372022", + "x": -56.23, + "y": -12045.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-L-500/600, KPL. MIT P", + "row": "Einzelweiche 90" + }, + { + "id": "834372024", + "type": "weiche", + "sivasnr": "834372024", + "x": -69.14, + "y": -11965.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-R-500/600, KPL. MIT M", + "row": "Einzelweiche 90" + }, + { + "id": "834372025", + "type": "weiche", + "sivasnr": "834372025", + "x": 684.63, + "y": -11965.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-R-500/600, KPL. MIT P", + "row": "Einzelweiche 90" + }, + { + "id": "834372027", + "type": "weiche", + "sivasnr": "834372027", + "x": 4135.1, + "y": -11305.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-L-700/700, KPL. MIT M", + "row": "Einzelweiche 90" + }, + { + "id": "834372028", + "type": "weiche", + "sivasnr": "834372028", + "x": 5089.01, + "y": -11305.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-L-700/700, KPL. MIT P", + "row": "Einzelweiche 90" + }, + { + "id": "834372028_0_BG080090", + "type": "weiche", + "sivasnr": "834372028+0_BG080090", + "x": -3672.36, + "y": -13445.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-L-700/700, KPL. MIT P mit TEF Innen", + "row": "Einzelweiche 90" + }, + { + "id": "834372030", + "type": "weiche", + "sivasnr": "834372030", + "x": 3590.02, + "y": -11925.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-R-700/700, KPL. MIT M", + "row": "Einzelweiche 90" + }, + { + "id": "834372031", + "type": "weiche", + "sivasnr": "834372031", + "x": 4543.93, + "y": -11925.93, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-R-700/700, KPL. MIT P", + "row": "Einzelweiche 90" + }, + { + "id": "834372031_0_BG080090", + "type": "weiche", + "sivasnr": "834372031+0_BG080090", + "x": 643.54, + "y": -13468.33, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S 90°-R-700/700, KPL. MIT P mit TEF Innen", + "row": "Einzelweiche 90" + }, + { + "id": "834372047", + "type": "weiche", + "sivasnr": "834372047", + "x": -2040.0, + "y": -12984.99, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S PARALLEL-L-200/750, KPL. MIT M", + "row": "Einzelweiche Parallel" + }, + { + "id": "834372048", + "type": "weiche", + "sivasnr": "834372048", + "x": -1565.41, + "y": -12984.99, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S PARALLEL-L-200/750, KPL. MIT P", + "row": "Einzelweiche Parallel" + }, + { + "id": "834372050", + "type": "weiche", + "sivasnr": "834372050", + "x": -1948.32, + "y": -12894.99, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S PARALLEL-R-200/750, KPL. MIT M", + "row": "Einzelweiche Parallel" + }, + { + "id": "834372051", + "type": "weiche", + "sivasnr": "834372051", + "x": -1473.73, + "y": -12894.99, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S PARALLEL-R-200/750, KPL. MIT P", + "row": "Einzelweiche Parallel" + }, + { + "id": "834372100", + "type": "weiche", + "sivasnr": "834372100", + "x": -883.58, + "y": -14084.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-350/700, KPL. MIT M", + "row": "Doppelweiche 45" + }, + { + "id": "834372101", + "type": "weiche", + "sivasnr": "834372101", + "x": 46.43, + "y": -14084.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-350/700, KPL. MIT P", + "row": "Doppelweiche 45" + }, + { + "id": "0_BG090090_834372101", + "type": "weiche", + "sivasnr": "0_BG090090+834372101", + "x": -15658.96, + "y": -16984.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF links", + "row": "Doppelweiche 45" + }, + { + "id": "834372101_0_BG090090", + "type": "weiche", + "sivasnr": "834372101+0_BG090090", + "x": -14728.95, + "y": -16984.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF rechts", + "row": "Doppelweiche 45" + }, + { + "id": "0_BG090090_834372101_0_BG090090", + "type": "weiche", + "sivasnr": "0_BG090090+834372101+0_BG090090", + "x": -13154.66, + "y": -16984.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF beideseitig", + "row": "Doppelweiche 45" + }, + { + "id": "834372103", + "type": "weiche", + "sivasnr": "834372103", + "x": 4521.62, + "y": -13995.32, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-400/750, KPL. MIT M", + "row": "Doppelweiche 45" + }, + { + "id": "834372104", + "type": "weiche", + "sivasnr": "834372104", + "x": 5551.37, + "y": -13995.32, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-400/750, KPL. MIT P", + "row": "Doppelweiche 45" + }, + { + "id": "0_BG190090_834372104", + "type": "weiche", + "sivasnr": "0_BG190090+834372104", + "x": -4300.65, + "y": -16334.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF links", + "row": "Doppelweiche 45" + }, + { + "id": "834372104_0_BG190090", + "type": "weiche", + "sivasnr": "834372104+0_BG190090", + "x": -3270.9, + "y": -16334.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF rechts", + "row": "Doppelweiche 45" + }, + { + "id": "0_BG190090_834372104_0_BG190090", + "type": "weiche", + "sivasnr": "0_BG190090+834372104+0_BG190090", + "x": -1696.6, + "y": -16334.18, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF beideseitig", + "row": "Doppelweiche 45" + }, + { + "id": "834372106", + "type": "weiche", + "sivasnr": "834372106", + "x": -1690.0, + "y": -14497.51, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 90°-500/600, KPL. MIT M", + "row": "Doppelweiche 90" + }, + { + "id": "834372107", + "type": "weiche", + "sivasnr": "834372107", + "x": -489.54, + "y": -14497.51, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 90°-500/600, KPL. MIT P", + "row": "Doppelweiche 90" + }, + { + "id": "834372109", + "type": "weiche", + "sivasnr": "834372109", + "x": -4039.08, + "y": -14177.51, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 90°-700/700, KPL. MIT M", + "row": "Doppelweiche 90" + }, + { + "id": "834372110", + "type": "weiche", + "sivasnr": "834372110", + "x": -2438.34, + "y": -14177.51, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 90°-700/700, KPL. MIT P", + "row": "Doppelweiche 90" + }, + { + "id": "0_BG080090_834372110", + "type": "weiche", + "sivasnr": "0_BG080090+834372110", + "x": -2633.38, + "y": -17647.89, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF links", + "row": "Doppelweiche 90" + }, + { + "id": "834372110_0_BG080090", + "type": "weiche", + "sivasnr": "834372110+0_BG080090", + "x": -1032.64, + "y": -17647.51, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF rechts", + "row": "Doppelweiche 90" + }, + { + "id": "0_BG080090_834372110_0_BG080090", + "type": "weiche", + "sivasnr": "0_BG080090+834372110+0_BG080090", + "x": 568.1, + "y": -17647.51, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF beideseitig", + "row": "Doppelweiche 90" + }, + { + "id": "834372115", + "type": "weiche", + "sivasnr": "834372115", + "x": -1360.0, + "y": -17666.57, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D PARALLEL-200/750, KPL. MIT M", + "row": "Doppelweiche Parallel" + }, + { + "id": "834372116", + "type": "weiche", + "sivasnr": "834372116", + "x": -717.91, + "y": -17666.57, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S D PARALLEL-200/750, KPL. MIT P", + "row": "Doppelweiche Parallel" + }, + { + "id": "834372200", + "type": "weiche", + "sivasnr": "834372200", + "x": -1829.93, + "y": -18125.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-350/700, KPL. MIT M", + "row": "Dreiwegeweiche 45" + }, + { + "id": "834372201", + "type": "weiche", + "sivasnr": "834372201", + "x": -899.92, + "y": -18125.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-350/700, KPL. MIT P", + "row": "Dreiwegeweiche 45" + }, + { + "id": "0_BG090090_834372201", + "type": "weiche", + "sivasnr": "0_BG090090+834372201", + "x": -17168.96, + "y": -21185.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF links", + "row": "Dreiwegeweiche 45" + }, + { + "id": "834372201_0_BG090090", + "type": "weiche", + "sivasnr": "834372201+0_BG090090", + "x": -16238.95, + "y": -21185.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF rechts", + "row": "Dreiwegeweiche 45" + }, + { + "id": "0_BG090090_834372201_0_BG090090", + "type": "weiche", + "sivasnr": "0_BG090090+834372201+0_BG090090", + "x": -14664.66, + "y": -21185.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF beideseitig", + "row": "Dreiwegeweiche 45" + }, + { + "id": "834372203", + "type": "weiche", + "sivasnr": "834372203", + "x": 6093.12, + "y": -17552.06, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-400/750, KPL. MIT M", + "row": "Dreiwegeweiche 45" + }, + { + "id": "834372204", + "type": "weiche", + "sivasnr": "834372204", + "x": 7122.88, + "y": -17552.06, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-400/750, KPL. MIT P", + "row": "Dreiwegeweiche 45" + }, + { + "id": "0_BG190090_834372204", + "type": "weiche", + "sivasnr": "0_BG190090+834372204", + "x": -5885.65, + "y": -20615.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF links", + "row": "Dreiwegeweiche 45" + }, + { + "id": "834372204_0_BG190090", + "type": "weiche", + "sivasnr": "834372204+0_BG190090", + "x": -4855.9, + "y": -20615.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF rechts", + "row": "Dreiwegeweiche 45" + }, + { + "id": "0_BG190090_834372204_0_BG190090", + "type": "weiche", + "sivasnr": "0_BG190090+834372204+0_BG190090", + "x": -3281.6, + "y": -20615.76, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF beideseitig", + "row": "Dreiwegeweiche 45" + }, + { + "id": "834372206", + "type": "weiche", + "sivasnr": "834372206", + "x": -7010.77, + "y": -18849.1, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 90°-500/600, KPL. MIT M", + "row": "Dreiwegeweiche 90" + }, + { + "id": "834372207", + "type": "weiche", + "sivasnr": "834372207", + "x": -5810.31, + "y": -18849.1, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 90°-500/600, KPL. MIT P", + "row": "Dreiwegeweiche 90" + }, + { + "id": "834372209", + "type": "weiche", + "sivasnr": "834372209", + "x": -6838.34, + "y": -18239.01, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 90°-700/700, KPL. MIT M", + "row": "Dreiwegeweiche 90" + }, + { + "id": "834372210", + "type": "weiche", + "sivasnr": "834372210", + "x": -5237.6, + "y": -18239.01, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 90°-700/700, KPL. MIT P", + "row": "Dreiwegeweiche 90" + }, + { + "id": "0_BG080090_834372210", + "type": "weiche", + "sivasnr": "0_BG080090+834372210", + "x": -4367.6, + "y": -21819.47, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF links", + "row": "Dreiwegeweiche 90" + }, + { + "id": "834372210_0_BG080090", + "type": "weiche", + "sivasnr": "834372210+0_BG080090", + "x": -2766.86, + "y": -21819.1, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF rechts", + "row": "Dreiwegeweiche 90" + }, + { + "id": "0_BG080090_834372210_0_BG080090", + "type": "weiche", + "sivasnr": "0_BG080090+834372210+0_BG080090", + "x": -1166.12, + "y": -21819.1, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF beideseitig", + "row": "Dreiwegeweiche 90" + }, + { + "id": "834372215", + "type": "weiche", + "sivasnr": "834372215", + "x": -1539.95, + "y": -21968.15, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T PARALLEL-200/750, KPL. MIT M", + "row": "Dreiwegeweiche Parallel" + }, + { + "id": "834372216", + "type": "weiche", + "sivasnr": "834372216", + "x": -897.86, + "y": -21968.15, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S T PARALLEL-200/750, KPL. MIT P", + "row": "Dreiwegeweiche Parallel" + }, + { + "id": "834372400", + "type": "weiche", + "sivasnr": "834372400", + "x": -8605.84, + "y": -21362.15, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S C DELTA 1400/700, KPL. M", + "row": "Dreifachweiche" + }, + { + "id": "834372403", + "type": "weiche", + "sivasnr": "834372403", + "x": -11343.24, + "y": -20756.57, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S C DELTA 1600/800, KPL. M", + "row": "Dreifachweiche" + }, + { + "id": "834372404", + "type": "weiche", + "sivasnr": "834372404", + "x": -9542.85, + "y": -20756.57, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S C DELTA 1600/800, KPL. P", + "row": "Dreifachweiche" + }, + { + "id": "0_BG071090_834372404_0_BG071090", + "type": "weiche", + "sivasnr": "0_BG071090+834372404+0_BG071090", + "x": -15020.31, + "y": -24647.68, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S C DELTA 1600/800, KPL. MIT P mit TEF beideseitig", + "row": "Dreifachweiche" + }, + { + "id": "0_BG071090_834372404", + "type": "weiche", + "sivasnr": "0_BG071090+834372404", + "x": -12941.37, + "y": -24647.68, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S C DELTA 1600/800, KPL. MIT P mit TEF links", + "row": "Dreifachweiche" + }, + { + "id": "834372404_0_BG071090", + "type": "weiche", + "sivasnr": "834372404+0_BG071090", + "x": -13599.45, + "y": -24609.02, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S C DELTA 1600/800, KPL. MIT P mit TEF rechts", + "row": "Dreifachweiche" + }, + { + "id": "834372401", + "type": "weiche", + "sivasnr": "834372401", + "x": -8605.84, + "y": -22915.58, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S C DELTA 1400/700, KPL. P", + "row": "Deltaweiche" + }, + { + "id": "834372420", + "type": "weiche", + "sivasnr": "834372420", + "x": -9971.54, + "y": -24402.34, + "hoehe": 2000, + "drehung": 0.0, + "description": "WEICHE S C STAR 1400/1400, KPL. M", + "row": "Sternweiche" } -] +] \ No newline at end of file