From bb7e3b15868dcfbf6d65ee111884c160c4180965 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 12:25:08 +0200 Subject: [PATCH 1/9] =?UTF-8?q?Grenzen=20und=20Ids=20von=20Omniflo=20und?= =?UTF-8?q?=20ILS=20als=20.json=20Files=20hinzugef=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/json/ILS_KurveFoerderer.json | 109 +++ data/json/objekteigenschaften_ILS.json | 99 +++ data/json/omniflo_boegen.json | 275 ++++++++ data/json/omniflo_weichen.json | 919 +++++++++++++++++++++++++ data/json/systemgrenzen.json | 54 ++ data/json/tef_Antriebst_Spannst.json | 30 + data/json/tef_boegen.json | 65 ++ data/json/tef_weichen.json | 72 ++ 8 files changed, 1623 insertions(+) create mode 100644 data/json/ILS_KurveFoerderer.json create mode 100644 data/json/objekteigenschaften_ILS.json create mode 100644 data/json/omniflo_boegen.json create mode 100644 data/json/omniflo_weichen.json create mode 100644 data/json/systemgrenzen.json create mode 100644 data/json/tef_Antriebst_Spannst.json create mode 100644 data/json/tef_boegen.json create mode 100644 data/json/tef_weichen.json diff --git a/data/json/ILS_KurveFoerderer.json b/data/json/ILS_KurveFoerderer.json new file mode 100644 index 0000000..bb9c673 --- /dev/null +++ b/data/json/ILS_KurveFoerderer.json @@ -0,0 +1,109 @@ +[ + { + "ID": "s_Kurve_30_L_Aussen_F", + "KurvenWinkel": 30, + "Breite": 161.197, + "Laenge": 311.186, + "KurvenRichtung" : "links", + "AntriebNebenStrecke": "Aussen" + }, + { + "ID": "s_Kurve_60_L_Aussen_F", + "KurvenWinkel": 60, + "Breite": 335.902, + "Laenge": 527.586, + "KurvenRichtung" : "links", + "AntriebNebenStrecke": "Aussen" + }, + { + + "ID": "s_Kurve_90_L_Aussen_F", + "KurvenWinkel": 90, + "Breite": 604.384, + "Laenge": 604.384, + "KurvenRichtung" : "links", + "AntriebNebenStrecke": "Aussen" + + }, + { + + "ID": "s_Kurve_30_R_Aussen_F", + "KurvenWinkel": 30, + "Breite": 161.197, + "Laenge": 311.186, + "KurvenRichtung" : "rechts", + "AntriebNebenStrecke": "Aussen" + }, + { + + "ID": "s_Kurve_60_R_Aussen_F", + "KurvenWinkel": 60, + "Breite": 335.902, + "Laenge": 527.586, + "KurvenRichtung" : "rechts", + "AntriebNebenStrecke": "Aussen" + }, + { + + "ID": "s_Kurve_90_R_Aussen_F", + "KurvenWinkel": 90, + "Breite": 604.384, + "Laenge": 604.384, + "KurvenRichtung" : "rechts", + "AntriebNebenStrecke": "Aussen" + }, + { + + "ID": "s_Kurve_30_L_Innen_F", + "KurvenWinkel": 30, + "Breite": 215.295, + "Laenge": 283.195, + "KurvenRichtung" : "links", + "AntriebNebenStrecke": "Innen" + }, + { + + "ID": "s_Kurve_60_L_Innen_F", + "KurvenWinkel": 60, + "Breite": 372.474, + "Laenge": 456.644, + "KurvenRichtung" : "links", + "AntriebNebenStrecke": "Innen" + }, + { + + "ID": "s_Kurve_90_L_Innen_F", + "KurvenWinkel": 90, + "Breite": 577.221, + "Laenge": 577.221, + "KurvenRichtung" : "links", + "AntriebNebenStrecke": "Innen" + }, + { + + "ID": "s_Kurve_30_R_Innen_F", + "KurvenWinkel": 30, + "Breite": 215.295, + "Laenge": 283.195, + "KurvenRichtung" : "rechts", + "AntriebNebenStrecke": "Innen" + }, + { + + "ID": "s_Kurve_60_R_Innen_F", + "KurvenWinkel": 60, + "Breite": 372.474, + "Laenge": 456.644, + "KurvenRichtung" : "rechts", + "AntriebNebenStrecke": "Innen" + }, + { + + "ID": "s_Kurve_90_R_Innen_F", + "KurvenWinkel": 90, + "Breite": 577.221, + "Laenge": 577.221, + "KurvenRichtung" : "rechts", + "AntriebNebenStrecke": "Innen" + } +] \ No newline at end of file diff --git a/data/json/objekteigenschaften_ILS.json b/data/json/objekteigenschaften_ILS.json new file mode 100644 index 0000000..c43571a --- /dev/null +++ b/data/json/objekteigenschaften_ILS.json @@ -0,0 +1,99 @@ +{ + "comment": "Die folgenden Einträge werden in Verbindung mit Förderern und/oder Gefällestrecken verwendet. Im Programm werden die Summen der Werte delta_h (Einschleuselement) und delta_h(Ausschleuselement) als L_SEA und/oder H_SEA (index S=Strecke) bzw. L_FEA und/oder H_FEA (index F=Förderer) verwendet.", + "Einschleuselement":{ + "comment": "Höhen- und Längendifferenz zwischen Laufprofil des Kreisels und Ende einer angebundenen Gefällestrecke in Millimetern", + "delta_h": 0, + "delta_s": 0 + }, + "Ausschleuselement":{ + "comment": "Höhen- und Längendifferenz zwischen Laufprofil des Kreisels und Ende einer angebundenen Gefällestrecke in Millimetern", + "delta_h": 0, + "delta_s": 0 + }, + "Einschleusung_Kreiselkopf":{ + "comment": "Höhen- und Längendifferenz zwischen Kreiselkopf des Kreisels und Ende einer angebundenen Gefällestrecke in Millimetern", + "delta_h": 0, + "delta_s": 0 + }, + "Ausschleusung_Kreiselkopf":{ + "comment": "Höhen- und Längendifferenz zwischen Kreiselkopf des Kreisels und Ende einer angebundenen Gefällestrecke in Millimetern", + "delta_h": 0, + "delta_s": 0 + }, + "Vario_auf":[ + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei 9° Steigung aufwärts", + "delta_h_min": 30.37, + "delta_s_min": 579.4, + "winkel": 9 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei 12° Steigung aufwärts", + "delta_h_min": 45.05, + "delta_s_min": 572.47, + "winkel": 12 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei 15° Steigung aufwärts", + "delta_h_min": 122.08, + "delta_s_min": 1161.5, + "winkel": 15 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei 24° Steigung aufwärts", + "delta_h_min": 195.36, + "delta_s_min": 1129.67, + "winkel": 24 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei 36° Steigung aufwärts", + "delta_h_min": 454.54, + "delta_s_min": 1644.49, + "winkel": 36 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei 48° Steigung aufwärts", + "delta_h_min": 871.79, + "delta_s_min": 2063.64, + "winkel": 48 + } + ], + "Vario_ab":[ + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei -9° Steigung abwärts", + "delta_h_min": 82.7, + "delta_s_min": 786.85, + "winkel": 9 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei -12° Steigung abwärts", + "delta_h_min": 76.46, + "delta_s_min": 580.74, + "winkel": 12 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei -15° Steigung abwärts", + "delta_h_min": 137.79, + "delta_s_min": 970.45, + "winkel": 15 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei -24° Steigung abwärts", + "delta_h_min": 255.75, + "delta_s_min": 1132.54, + "winkel": 24 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei -36° Steigung abwärts", + "delta_h_min": 545.85, + "delta_s_min": 1635.01, + "winkel": 36 + }, + { + "comment": "Mindestlänge und -höhe für den Varioförderer bei -48° Steigung abwärts", + "delta_h_min": 724.81, + "delta_s_min": 1519.59, + "winkel": 48 + } + ] +} diff --git a/data/json/omniflo_boegen.json b/data/json/omniflo_boegen.json new file mode 100644 index 0000000..873b492 --- /dev/null +++ b/data/json/omniflo_boegen.json @@ -0,0 +1,275 @@ +[ + { + "Sivasnr": 821104025, + "ProfilTyp": "APB 110 R 550/22,5° – 84/522", + "Radius": 550, + "KurvenWinkel": 22.5, + "Breite": 84, + "Länge": 522, + "SivasnrTEF": null, + "Antriebsart": 0 + + }, + { + "Sivasnr": "821104025+0_B10090", + "ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Innen", + "Radius": 550, + "KurvenWinkel": 22.5, + "Breite": 84, + "Länge": 522, + "SivasnrTEF": "0_B10090", + "Antriebsart":1 + + }, + { + "Sivasnr": "821104025+0_B10091", + "ProfilTyp": "APB 110 R 550/22,5° – 84/522 mit TEF Aussen", + "Radius": 550, + "KurvenWinkel": 22.5, + "Breite": 84, + "Länge": 522, + "SivasnrTEF": "0_B10091", + "Antriebsart":2 + + }, + { + "Sivasnr": 821104021, + "ProfilTyp": "APB 110 R 400/45° – 400/670", + "Radius": 400, + "KurvenWinkel": 45, + "Breite": 400, + "Länge": 670, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104026, + "ProfilTyp": "APB 110 R 550/45° – 232/610", + "Radius": 550, + "KurvenWinkel": 45, + "Breite": 232, + "Länge": 610, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": "821104026+0_B10071", + "ProfilTyp": "APB 110 R 550/45° – 232/610 mit TEF Innen", + "Radius": 550, + "KurvenWinkel": 45, + "Breite": 232, + "Länge": 610, + "SivasnrTEF": "0_B10071", + "Antriebsart":1 + }, + { + "Sivasnr": 821104037, + "ProfilTyp": "APB 110 R 550/45° – 205/337", + "Radius": 550, + "KurvenWinkel": 45, + "Breite": 205, + "Länge": 337, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104029, + "ProfilTyp": "APB 110 R 550/45° 191/552", + "Radius": 550, + "KurvenWinkel": 45, + "Breite": 191, + "Länge": 552, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104031, + "ProfilTyp": "APB 110 R 630/45° – 400/825", + "Radius": 630, + "KurvenWinkel": 45, + "Breite": 400, + "Länge": 825, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": "821104031+0_B10060", + "ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Aussen", + "Radius": 630, + "KurvenWinkel": 45, + "Breite": 400, + "Länge": 825, + "SivasnrTEF": "0_B10060", + "Antriebsart":2 + }, + { + "Sivasnr": "821104031+0_B10070", + "ProfilTyp": "APB 110 R 630/45° – 400/825 mit TEF Innen", + "Radius": 630, + "KurvenWinkel": 45, + "Breite": 400, + "Länge": 825, + "SivasnrTEF": "0_B10070", + "Antriebsart":1 + }, + { + "Sivasnr": 821104024, + "ProfilTyp": "APB 110 R 400/67,5° – 339/508", + "Radius": 400, + "KurvenWinkel": 67.5, + "Breite": 339, + "Länge": 508, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": "821104024+0_B10081", + "ProfilTyp": "APB 110 R 400/67,5° – 339/508 mit TEF Innen", + "Radius": 400, + "KurvenWinkel": 67.5, + "Breite": 339, + "Länge": 508, + "SivasnrTEF": "0_B10081", + "Antriebsart":1 + }, + { + "Sivasnr": 821104027, + "ProfilTyp": "APB 110 R 550/67,5° – 488/778", + "Radius": 550, + "KurvenWinkel": 67.5, + "Breite": 448, + "Länge": 778, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": "821104027+0_B10080", + "ProfilTyp": "APB 110 R 550/67,5° – 488/778 mit TEF Innen", + "Radius": 550, + "KurvenWinkel": 67.5, + "Breite": 448, + "Länge": 778, + "SivasnrTEF": "0_B10080", + "Antriebsart":1 + }, + { + "Sivasnr": 821104028, + "ProfilTyp": "APB 110 R 550/67,5° – 420/582", + "Radius": 550, + "KurvenWinkel": 67.5, + "Breite": 420, + "Länge": 582, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104065, + "ProfilTyp": "APB 110 R 550/67,5° – 498/758", + "Radius": 550, + "KurvenWinkel": 67.5, + "Breite": 498, + "Länge": 758, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104022, + "ProfilTyp": "APB 110 R 400/90° – 500/500", + "Radius": 400, + "KurvenWinkel": 90, + "Breite": 500, + "Länge": 500, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104030, + "ProfilTyp": "APB 110 R 500/90° – 550/550", + "Radius": 500, + "KurvenWinkel": 90, + "Breite": 550, + "Länge": 550, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104033, + "ProfilTyp": "APB 110 R 630/90° – 800/800", + "Radius": 630, + "KurvenWinkel": 90, + "Breite": 800, + "Länge": 800, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": "821104033+0_B10040", + "ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Aussen", + "Radius": 630, + "KurvenWinkel": 90, + "Breite": 800, + "Länge": 800, + "SivasnrTEF": "0_B10040", + "Antriebsart":1 + }, + { + "Sivasnr": "821104033+0_B10050", + "ProfilTyp": "APB 110 R 630/90° – 800/800 mit TEF Innen", + "Radius": 630, + "KurvenWinkel": 90, + "Breite": 800, + "Länge": 800, + "SivasnrTEF": "0_B10050", + "Antriebsart":1 + }, + { + "Sivasnr": 821104035, + "ProfilTyp": "APB 110 R 630/90° – 850/870", + "Radius": 630, + "KurvenWinkel": 90, + "Breite": 850, + "Länge": 870, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104041, + "ProfilTyp": "APB 110 R 630/90° – 850/690", + "Radius": 630, + "KurvenWinkel": 90, + "Breite": 850, + "Länge": 690, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104034, + "ProfilTyp": "APB 110 R 630/90° – 850/890", + "Radius": 630, + "KurvenWinkel": 90, + "Breite": 850, + "Länge": 890, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104066, + "ProfilTyp": "APB 110 R 550/90° – 900/605", + "Radius": 550, + "KurvenWinkel": 90, + "Breite": 900, + "Länge": 605, + "SivasnrTEF": null, + "Antriebsart": 0 + }, + { + "Sivasnr": 821104043, + "ProfilTyp": "APB 110 R 630/180° – 1300/800", + "Radius": 650, + "KurvenWinkel": 180, + "Breite": 1300, + "Länge": 800, + "SivasnrTEF": null, + "Antriebsart": 0 + } +] diff --git a/data/json/omniflo_weichen.json b/data/json/omniflo_weichen.json new file mode 100644 index 0000000..7b4b09f --- /dev/null +++ b/data/json/omniflo_weichen.json @@ -0,0 +1,919 @@ +[ + { + "Sivasnr": 834372001, + "ProfilTyp": "WEICHE S 45°-L-350/700, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "M", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372002, + "ProfilTyp": "WEICHE S 45°-L-350/700, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": "834372002+0_BG090090", + "ProfilTyp": "WEICHE S 45°-L-350/700, KPL. MIT P mit TEF Innen", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 1, + "SivasnrTEF": "0_B10090+0_B10090", + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372004, + "ProfilTyp": "WEICHE S 45°-R-350/700, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "M", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372005, + "ProfilTyp": "WEICHE S 45°-R-350/700, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": "834372005+0_BG090090", + "ProfilTyp": "WEICHE S 45°-R-350/700, KPL. MIT P mit TEF Innen", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 2, + "SivasnrTEF": "0_B10090+0_B10090", + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372007, + "ProfilTyp": "WEICHE S 45°-L-400/750, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "M", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372008, + "ProfilTyp": "WEICHE S 45°-L-400/750, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": "834372008+0_BG190090", + "ProfilTyp": "WEICHE S 45°-L-400/750, KPL. MIT P mit TEF Ihnen", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 1, + "SivasnrTEF": "0_B10090+0_B10090", + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372010, + "ProfilTyp": "WEICHE S 45°-R-400/750, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "M", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372011, + "ProfilTyp": "WEICHE S 45°-R-400/750, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": "834372011+0_BG190090", + "ProfilTyp": "WEICHE S 45°-R-400/750, KPL. MIT P mit TEF Ihnen", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 2, + "SivasnrTEF": "0_B10090+0_B10090", + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372021, + "ProfilTyp": "WEICHE S 90°-L-500/600, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 500, + "Länge": 600, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372022, + "ProfilTyp": "WEICHE S 90°-L-500/600, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 500, + "Länge": 600, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372024, + "ProfilTyp": "WEICHE S 90°-R-500/600, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 500, + "Länge": 600, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372025, + "ProfilTyp": "WEICHE S 90°-R-500/600, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 500, + "Länge": 600, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372027, + "ProfilTyp": "WEICHE S 90°-L-700/700, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372028, + "ProfilTyp": "WEICHE S 90°-L-700/700, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": "834372028+0_BG080090", + "ProfilTyp": "WEICHE S 90°-L-700/700, KPL. MIT P mit TEF Innen", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 1, + "SivasnrTEF": "0_B10080+0_B10090", + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372030, + "ProfilTyp": "WEICHE S 90°-R-700/700, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372031, + "ProfilTyp": "WEICHE S 90°-R-700/700, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": "834372031+0_BG080090", + "ProfilTyp": "WEICHE S 90°-R-700/700, KPL. MIT P mit TEF Innen", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 2, + "SivasnrTEF": "0_B10080+0_B10090", + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372047, + "ProfilTyp": "WEICHE S PARALLEL-L-200/750, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "M", + "Breite": 200, + "Länge": 750, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372048, + "ProfilTyp": "WEICHE S PARALLEL-L-200/750, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "P", + "Breite": 200, + "Länge": 750, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372050, + "ProfilTyp": "WEICHE S PARALLEL-R-200/750, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "M", + "Breite": 200, + "Länge": 750, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372051, + "ProfilTyp": "WEICHE S PARALLEL-R-200/750, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "P", + "Breite": 200, + "Länge": 750, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834372100, + "ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT M", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "M", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372101, + "ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": "0_BG090090+834372101", + "ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF links", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10090+0_B10090" + }, + { + "Sivasnr": "834372101+0_BG090090", + "ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF rechts", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10090+0_B10090" + }, + { + "Sivasnr": "0_BG090090+834372101+0_BG090090", + "ProfilTyp": "WEICHE S D 45°-350/700, KPL. MIT P mit TEF beideseitig", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10090+0_B10090+0_B10090+0_B10090" + }, + { + "Sivasnr": 834372103, + "ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT M", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "M", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372104, + "ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT P", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": "0_BG190090+834372104", + "ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF links", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10090+0_B10090" + }, + { + "Sivasnr": "834372104+0_BG190090", + "ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF rechts", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10090+0_B10090" + }, + { + "Sivasnr": "0_BG190090+834372104+0_BG190090", + "ProfilTyp": "WEICHE S D 45°-400/750, KPL. MIT P mit TEF beideseitig", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10090+0_B10090+0_B10090+0_B10090" + }, + { + "Sivasnr": 834372106, + "ProfilTyp": "WEICHE S D 90°-500/600, KPL. MIT M", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 500, + "Länge": 600, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372107, + "ProfilTyp": "WEICHE S D 90°-500/600, KPL. MIT P", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 500, + "Länge": 600, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372109, + "ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT M", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372110, + "ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": "0_BG080090+834372110", + "ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF links", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10080+0_B10090" + }, + { + "Sivasnr": "834372110+0_BG080090", + "ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF rechts", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10090+0_B10080" + }, + { + "Sivasnr": "0_BG080090+834372110+0_BG080090", + "ProfilTyp": "WEICHE S D 90°-700/700, KPL. MIT P mit TEF beideseitig", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10080+0_B10090+0_B10080+0_B10090" + }, + { + "Sivasnr": 834372115, + "ProfilTyp": "WEICHE S D PARALLEL-200/750, KPL. MIT M", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "M", + "Breite": 200, + "Länge": 750, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372116, + "ProfilTyp": "WEICHE S D PARALLEL-200/750, KPL. MIT P", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "P", + "Breite": 200, + "Länge": 750, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372200, + "ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT M", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "M", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372201, + "ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": "0_BG090090+834372201", + "ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF links", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10090+0_B10090" + }, + { + "Sivasnr": "834372201+0_BG090090", + "ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF rechts", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10090+0_B10090" + }, + { + "Sivasnr": "0_BG090090+834372201+0_BG090090", + "ProfilTyp": "WEICHE S T 45°-350/700, KPL. MIT P mit TEF beideseitig", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 350, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10090+0_B10090+0_B10090+0_B10090" + }, + { + "Sivasnr": 834372203, + "ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT M", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "M", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372204, + "ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT P", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": "0_BG190090+834372204", + "ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF links", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10090+0_B10090" + }, + { + "Sivasnr": "834372204+0_BG190090", + "ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF rechts", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10090+0_B10090" + }, + { + "Sivasnr": "0_BG190090+834372204+0_BG190090", + "ProfilTyp": "WEICHE S T 45°-400/750, KPL. MIT P mit TEF beideseitig", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 45, + "Schaltungstyp": "P", + "Breite": 400, + "Länge": 750, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10090+0_B10090+0_B10090+0_B10090" + }, + { + "Sivasnr": 834372206, + "ProfilTyp": "WEICHE S T 90°-500/600, KPL. MIT M", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 500, + "Länge": 600, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372207, + "ProfilTyp": "WEICHE S T 90°-500/600, KPL. MIT P", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 500, + "Länge": 600, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372209, + "ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT M", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372210, + "ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": "0_BG080090+834372210", + "ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF links", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10080+0_B10090" + }, + { + "Sivasnr": "834372210+0_BG080090", + "ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF rechts", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10090+0_B10080" + }, + { + "Sivasnr": "0_BG080090+834372210+0_BG080090", + "ProfilTyp": "WEICHE S T 90°-700/700, KPL. MIT P mit TEF beideseitig", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 700, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": "0_B10080+0_B10090+0_B10080+0_B10090" + }, + { + "Sivasnr": 834372215, + "ProfilTyp": "WEICHE S T PARALLEL-200/750, KPL. MIT M", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "M", + "Breite": 200, + "Länge": 750, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372216, + "ProfilTyp": "WEICHE S T PARALLEL-200/750, KPL. MIT P", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "P", + "Breite": 200, + "Länge": 750, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": 834372400, + "ProfilTyp": "WEICHE S C DELTA 1400/700, KPL. M", + "WeichenTyp": "Dreifachweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 1400, + "Länge": 700, + "KurvenRichtung": 3, + "SivasnrTEF": null, + "WeichenkörperLänge": 1400.4619 + }, + { + "Sivasnr": 834372401, + "ProfilTyp": "WEICHE S C DELTA 1400/700, KPL. P", + "WeichenTyp": "Deltaweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 1400, + "Länge": 700, + "KurvenRichtung": 7, + "SivasnrTEF": null, + "WeichenkörperLänge": 1400.4619 + }, + { + "Sivasnr": 834372403, + "ProfilTyp": "WEICHE S C DELTA 1600/800, KPL. M", + "WeichenTyp": "Dreifachweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "M", + "Breite": 1600, + "Länge": 800, + "KurvenRichtung": 3, + "SivasnrTEF": null, + "WeichenkörperLänge": 1600.3844 + }, + { + "Sivasnr": 834372404, + "ProfilTyp": "WEICHE S C DELTA 1600/800, KPL. P", + "WeichenTyp": "Dreifachweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 1600, + "Länge": 800, + "KurvenRichtung": 3, + "SivasnrTEF": null, + "WeichenkörperLänge": 1600.3844 + }, + { + "Sivasnr": "0_BG071090+834372404+0_BG071090", + "ProfilTyp": "WEICHE S C DELTA 1600/800, KPL. MIT P mit TEF beideseitig", + "WeichenTyp": "Dreifachweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 1600, + "Länge": 800, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10071+0_B10090+0_B10090+0_B10071+0_B10090+0_B10090", + "WeichenkörperLänge": 1600.3844 + }, + { + "Sivasnr": "0_BG071090+834372404", + "ProfilTyp": "WEICHE S C DELTA 1600/800, KPL. MIT P mit TEF links", + "WeichenTyp": "Dreifachweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 1600, + "Länge": 800, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10071+0_B10090+0_B10090", + "WeichenkörperLänge": 1600.3844 + }, + { + "Sivasnr": "834372404+0_BG071090", + "ProfilTyp": "WEICHE S C DELTA 1600/800, KPL. MIT P mit TEF rechts", + "WeichenTyp": "Dreifachweiche", + "KurvenWinkel": 90, + "Schaltungstyp": "P", + "Breite": 1600, + "Länge": 800, + "KurvenRichtung": 3, + "SivasnrTEF": "0_B10090+0_B10090+0_B10071", + "WeichenkörperLänge": 1600.3844 + }, + { + "Sivasnr": 834372420, + "ProfilTyp": "WEICHE S C STAR 1400/1400, KPL. M", + "WeichenTyp": "Sternweiche", + "KurvenWinkel": 0, + "Schaltungstyp": "M", + "Breite": 1400, + "Länge": 1400, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834342011, + "ProfilTyp": "WEICHENKOERPER S L, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 22.5, + "Schaltungstyp": "M", + "Breite": 101.5, + "Länge": 360, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834342001, + "ProfilTyp": "WEICHENKOERPER S R, KPL. MIT M", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 22.5, + "Schaltungstyp": "M", + "Breite": 101.5, + "Länge": 360, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834342012, + "ProfilTyp": "WEICHENKOERPER S L, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 22.5, + "Schaltungstyp": "P", + "Breite": 101.5, + "Länge": 360, + "KurvenRichtung": 1, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834342002, + "ProfilTyp": "WEICHENKOERPER S R, KPL. MIT P", + "WeichenTyp": "Einzelweiche", + "KurvenWinkel": 22.5, + "Schaltungstyp": "P", + "Breite": 101.5, + "Länge": 360, + "KurvenRichtung": 2, + "SivasnrTEF": null, + "WeichenkörperLänge": 360 + }, + { + "Sivasnr": 834342100, + "ProfilTyp": "WEICHENKOERPER S D, KPL. MIT M", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 22.5, + "Schaltungstyp": "M", + "Breite": 203, + "Länge": 340, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834342101, + "ProfilTyp": "WEICHENKOERPER S D, KPL. MIT P", + "WeichenTyp": "Doppelweiche", + "KurvenWinkel": 22.5, + "Schaltungstyp": "P", + "Breite": 203, + "Länge": 340, + "KurvenRichtung": 3, + "SivasnrTEF": null + }, + { + "Sivasnr": 834342200, + "ProfilTyp": "WEICHENKOERPER S T, KPL. MIT M", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 22.5, + "Schaltungstyp": "M", + "Breite": 203, + "Länge": 360, + "KurvenRichtung": 7, + "SivasnrTEF": null + }, + { + "Sivasnr": 834342201, + "ProfilTyp": "WEICHENKOERPER S T, KPL. MIT P", + "WeichenTyp": "Dreiwegeweiche", + "KurvenWinkel": 22.5, + "Schaltungstyp": "P", + "Breite": 203, + "Länge": 360, + "KurvenRichtung": 7, + "SivasnrTEF": null + } +] diff --git a/data/json/systemgrenzen.json b/data/json/systemgrenzen.json new file mode 100644 index 0000000..6d8ca41 --- /dev/null +++ b/data/json/systemgrenzen.json @@ -0,0 +1,54 @@ +{ + "Systemgrenzen":{ + "Kreisel":{ + "ObereGrenze":{ + "AbstandMS": 40000 + }, + "UntereGrenze":{ + "AbstandMS": 2000 + } + }, + "Gefaellestrecke":{ + "ObereGrenze":{ + "L1": 20000, + "winkel": 5 + }, + "UntereGrenze":{ + "L1": 500, + "winkel": 0.01 + } + }, + "Förderer":{ + "Auf":{ + "ObereGrenze":{ + "L1": 15000, + "winkel_f": 35 + }, + "UntereGrenze":{ + "L1": 4121, + "winkel_f": 25 + } + }, + "Ab":{ + "ObereGrenze":{ + "L1": 15000, + "winkel_f": 35 + }, + "UntereGrenze":{ + "L1": 3564, + "winkel_f": 25 + } + } + }, + "VarioFoerderer":{ + "ObereGrenze":{ + "L1": 20000, + "winkel": 49 + }, + "UntereGrenze":{ + "L1": 1000, + "winkel": 11 + } + } + } +} \ No newline at end of file diff --git a/data/json/tef_Antriebst_Spannst.json b/data/json/tef_Antriebst_Spannst.json new file mode 100644 index 0000000..63a844c --- /dev/null +++ b/data/json/tef_Antriebst_Spannst.json @@ -0,0 +1,30 @@ +[ + { + "Sivasnr": 0_B10001, + "Beschreibung": "Antribestation links für TEF links", + "Radius": , + "KurvenWinkel": , + "innen": + }, + { + "Sivasnr": 0_B10020, + "Beschreibung": "Antribestation rechts für TEF rechts", + "Radius": , + "KurvenWinkel": , + "innen": + }, + { + "Sivasnr": YYYYY, + "Beschreibung": "Umlenkspannstation links für TEF links", + "Radius": , + "KurvenWinkel": , + "innen": + }, + { + "Sivasnr": YYYYY, + "Beschreibung": "Umlenkspannstation rechts für TEF rechts", + "Radius": , + "KurvenWinkel": , + "innen": + } +] diff --git a/data/json/tef_boegen.json b/data/json/tef_boegen.json new file mode 100644 index 0000000..edf59c2 --- /dev/null +++ b/data/json/tef_boegen.json @@ -0,0 +1,65 @@ +[ + { + "Sivasnr": 0_B10040, + "Beschreibung": "TEF Bogen 90° R725", + "Radius": 725, + "KurvenWinkel": 90, + "innen": false + }, + { + "Sivasnr": 0_B10050, + "Beschreibung": "TEF Bogen 90° R535", + "Radius": 535, + "KurvenWinkel": 90, + "innen": true + }, + { + "Sivasnr": 0_B10060, + "Beschreibung": "TEF Bogen 45° R725", + "Radius": 725, + "KurvenWinkel": 45, + "innen": false + }, + { + "Sivasnr": 0_B10070, + "Beschreibung": "TEF Bogen 45° R535", + "Radius": 535, + "KurvenWinkel": 45, + "innen": true + }, + { + "Sivasnr": 0_B10071, + "Beschreibung": "TEF Bogen 45° R450 für S C Delta 1600", + "Radius": 450, + "KurvenWinkel": 45, + "innen": true + }, + { + "Sivasnr": 0_B10080, + "Beschreibung": "TEF Bogen 67.5° R400", + "Radius": 400, + "KurvenWinkel": 67.5, + "innen": true + }, + { + "Sivasnr": 0_B10081, + "Beschreibung": "TEF Bogen 67.5° R250", + "Radius": 250, + "KurvenWinkel": 67.5, + "innen": true + }, + { + "Sivasnr": 0_B10090, + "Beschreibung": "TEF Bogen 22.5° R450", + "Radius": 450, + "KurvenWinkel": 22.5, + "innen": true + }, + { + "Sivasnr": 0_B10091, + "Beschreibung": "TEF Bogen 22.5° R650", + "Radius": 650, + "KurvenWinkel": 22.5, + "innen": false + } +] diff --git a/data/json/tef_weichen.json b/data/json/tef_weichen.json new file mode 100644 index 0000000..f60e447 --- /dev/null +++ b/data/json/tef_weichen.json @@ -0,0 +1,72 @@ +[ + { + "Sivasnr": _BG080090, + "Beschreibung": "TEF Bogen für Weiche S 90° 700/700 links", + "Radius": , + "KurvenWinkel": 90, + "innen": true + }, + { + "Sivasnr": _BG080090, + "Beschreibung": "TEF Bogen für Weiche S 90° 700/700 rechts", + "Radius": , + "KurvenWinkel": 90, + "innen": true + }, + { + "Sivasnr": _BG081090, + "Beschreibung": "TEF Bogen für Weiche S 90° 500/600 links", + "Radius": , + "KurvenWinkel": 90, + "innen": true + }, + { + "Sivasnr": _BG081090, + "Beschreibung": "TEF Bogen für Weiche S 90° 500/600 rechts", + "Radius": , + "KurvenWinkel": 90, + "innen": true + }, + { + "Sivasnr": _BG190090, + "Beschreibung": "TEF Bogen für Weiche S 45° 400/750 links", + "Radius": , + "KurvenWinkel": 45, + "innen": true + }, + { + "Sivasnr": _BG190090, + "Beschreibung": "TEF Bogen für Weiche S 45° 400/750 rechts", + "Radius": , + "KurvenWinkel": 45, + "innen": true + }, + { + "Sivasnr": _BG090090, + "Beschreibung": "TEF Bogen für Weiche S 45° 350/700 links", + "Radius": , + "KurvenWinkel": 45, + "innen": true + }, + { + "Sivasnr": _BG090090, + "Beschreibung": "TEF Bogen für Weiche S 45° 350/700 rechts", + "Radius": , + "KurvenWinkel": 45, + "innen": true + }, + { + "Sivasnr": _BG071090, + "Beschreibung": "TEF Bogen für Weiche S C Delta 1600/800 links", + "Radius": , + "KurvenWinkel": 90, + "innen": true + }, + { + "Sivasnr": _BG071090, + "Beschreibung": "TEF Bogen für Weiche S C Delta 1600/800 rechts", + "Radius": , + "KurvenWinkel": 90, + "innen": true + } +] From cc229617a53629c53ca301a9cc4c7962d0c5ff91 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 12:55:07 +0200 Subject: [PATCH 2/9] =?UTF-8?q?Parser=20f=C3=BCr=20die=20.json=20Datei=20i?= =?UTF-8?q?n=20der=20aktuellen=20Form=20als=20key:value=20geschrieben=20um?= =?UTF-8?q?=20Omniflo=20B=C3=B6gen=20und=20Weichen=20einzulesen.=20Schnitt?= =?UTF-8?q?stellenfunktionen=20zum=20Filtern=20dazu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lisp/OmniModulInsert.lsp | 413 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 413 insertions(+) diff --git a/Lisp/OmniModulInsert.lsp b/Lisp/OmniModulInsert.lsp index 61b68a8..00a4273 100644 --- a/Lisp/OmniModulInsert.lsp +++ b/Lisp/OmniModulInsert.lsp @@ -1,3 +1,416 @@ +;; ============================================================ +;; OMNIFLO JSON-DATEN LADEN UND ABFRAGEN +;; Liest omniflo_boegen.json und omniflo_weichen.json ein. +;; Daten werden als Listen von Assoziationslisten gespeichert. +;; +;; Globale Variablen: +;; *OMNI-BOEGEN* - Liste aller Boegen-Eintraege +;; *OMNI-WEICHEN* - Liste aller Weichen-Eintraege +;; +;; Funktionen: +;; (omni:load-data) - Beide JSON-Dateien laden +;; (omni:get-bogen sivasid) - Bogen-Info zu einer SivasId +;; (omni:get-weiche sivasid) - Weichen-Info zu einer SivasId +;; (omni:filter lst key wert) - Eintraege nach Key/Wert filtern +;; ============================================================ + + +;; --- Datei zeilenweise einlesen --- +(defun omni:read-file-lines (datei / f zeile ergebnis) + (setq f (open datei "r")) + (if (null f) + (progn + (princ (strcat "\n[OMNI] FEHLER: Datei nicht gefunden: " datei)) + nil + ) + (progn + (setq ergebnis nil) + (while (setq zeile (read-line f)) + (setq ergebnis (cons zeile ergebnis)) + ) + (close f) + (reverse ergebnis) + ) + ) +) + + +;; --- Whitespace und Komma am Ende einer Zeile entfernen --- +(defun omni:trim (s / len ch) + (setq s (vl-string-trim " \t\r\n" s)) + (setq len (strlen s)) + (if (and (> len 0) (= (substr s len 1) ",")) + (setq s (substr s 1 (1- len))) + ) + (vl-string-trim " \t\r\n" s) +) + + +;; --- JSON-Wert parsen (String, Zahl, null) --- +(defun omni:parse-value (val-str / len) + (setq val-str (omni:trim val-str)) + (cond + ((= val-str "null") nil) + ((= (substr val-str 1 1) "\"") + ;; String: Anfuehrungszeichen entfernen + (setq len (strlen val-str)) + (if (and (> len 1) (= (substr val-str len 1) "\"")) + (substr val-str 2 (- len 2)) + val-str + ) + ) + (T + ;; Zahl + (if (vl-string-search "." val-str) + (atof val-str) + (atoi val-str) + ) + ) + ) +) + + +;; --- Eine Key-Value-Zeile parsen -> dotted pair oder nil --- +(defun omni:parse-kv-line (zeile / pos key rest val) + (setq zeile (omni:trim zeile)) + ;; Muss mit " beginnen (Key) + (if (and (> (strlen zeile) 0) (= (substr zeile 1 1) "\"")) + (progn + ;; Key extrahieren: zweites Anfuehrungszeichen finden + (setq pos (vl-string-search "\"" zeile 1)) + (if pos + (progn + (setq key (substr zeile 2 pos)) + ;; Nach dem ":" den Wert extrahieren + (setq rest (substr zeile (+ pos 3))) + (setq pos (vl-string-search ":" rest)) + (if pos + (progn + (setq val (substr rest (+ pos 2))) + (cons key (omni:parse-value val)) + ) + ) + ) + ) + ) + ) +) + + +;; --- JSON-Array von flachen Objekten parsen --- +(defun omni:parse-json-array (zeilen / in-obj obj ergebnis zeile kv trimmed) + (setq in-obj nil + obj nil + ergebnis nil + ) + (foreach zeile zeilen + (setq trimmed (omni:trim zeile)) + (cond + ;; Objekt-Start + ((= trimmed "{") + (setq in-obj T + obj nil + ) + ) + ;; Objekt-Ende + ((or (= trimmed "}") (= trimmed "},")) + (if (and in-obj obj) + (setq ergebnis (cons (reverse obj) ergebnis)) + ) + (setq in-obj nil) + ) + ;; Key-Value-Zeile innerhalb eines Objekts + (in-obj + (setq kv (omni:parse-kv-line zeile)) + (if kv (setq obj (cons kv obj))) + ) + ) + ) + (reverse ergebnis) +) + + +;; --- JSON-Datei laden und als Liste von Alists zurueckgeben --- +(defun omni:load-json (datei / zeilen) + (setq zeilen (omni:read-file-lines datei)) + (if zeilen + (omni:parse-json-array zeilen) + ) +) + + +;; --- Beide Datensaetze laden --- +(defun omni:load-data ( / data-pfad f-boegen f-weichen) + (setq data-pfad (getenv "DXFM_DATA")) + (if (null data-pfad) + (progn + (princ "\n[OMNI] FEHLER: DXFM_DATA nicht gesetzt!") + nil + ) + (progn + ;; Boegen laden + (setq f-boegen (strcat data-pfad "/json/omniflo_boegen.json")) + (setq *OMNI-BOEGEN* (omni:load-json f-boegen)) + (if *OMNI-BOEGEN* + (princ (strcat "\n[OMNI] " (itoa (length *OMNI-BOEGEN*)) " Boegen geladen.")) + (princ (strcat "\n[OMNI] WARNUNG: Keine Boegen geladen aus " f-boegen)) + ) + ;; Weichen laden + (setq f-weichen (strcat data-pfad "/json/omniflo_weichen.json")) + (setq *OMNI-WEICHEN* (omni:load-json f-weichen)) + (if *OMNI-WEICHEN* + (princ (strcat "\n[OMNI] " (itoa (length *OMNI-WEICHEN*)) " Weichen geladen.")) + (princ (strcat "\n[OMNI] WARNUNG: Keine Weichen geladen aus " f-weichen)) + ) + T + ) + ) +) + + +;; --- SivasId zu String konvertieren (fuer Vergleich) --- +(defun omni:sivasid-to-str (id) + (cond + ((= (type id) 'STR) id) + ((= (type id) 'INT) (itoa id)) + ((= (type id) 'REAL) (itoa (fix id))) + (T "") + ) +) + + +;; --- Eintrag anhand SivasId in einer Liste suchen --- +(defun omni:get-by-sivasid (lst sivasid / such-str eintrag sivasnr gefunden) + (setq such-str (omni:sivasid-to-str sivasid)) + (setq gefunden nil) + (foreach eintrag lst + (if (null gefunden) + (progn + (setq sivasnr (cdr (assoc "Sivasnr" eintrag))) + (if (= (omni:sivasid-to-str sivasnr) such-str) + (setq gefunden eintrag) + ) + ) + ) + ) + gefunden +) + + +;; --- Bogen anhand SivasId abfragen --- +;; Rueckgabe: Assoziationsliste mit allen Eigenschaften oder nil +;; Beispiel: (omni:get-bogen 821104025) +;; -> (("Sivasnr" . 821104025) ("ProfilTyp" . "APB 110 R 550/22,5...") ...) +(defun omni:get-bogen (sivasid) + (if (null *OMNI-BOEGEN*) (omni:load-data)) + (omni:get-by-sivasid *OMNI-BOEGEN* sivasid) +) + + +;; --- Weiche anhand SivasId abfragen --- +;; Rueckgabe: Assoziationsliste mit allen Eigenschaften oder nil +;; Beispiel: (omni:get-weiche 834372001) +;; -> (("Sivasnr" . 834372001) ("ProfilTyp" . "WEICHE S 45...") ...) +(defun omni:get-weiche (sivasid) + (if (null *OMNI-WEICHEN*) (omni:load-data)) + (omni:get-by-sivasid *OMNI-WEICHEN* sivasid) +) + + +;; --- Eintraege nach beliebigem Key/Wert filtern --- +;; lst = *OMNI-BOEGEN* oder *OMNI-WEICHEN* +;; key = Schluesselname z.B. "KurvenWinkel" +;; wert = Gesuchter Wert z.B. 45 +;; Rueckgabe: Liste aller passenden Eintraege +;; +;; Beispiel: (omni:filter *OMNI-BOEGEN* "KurvenWinkel" 45) +;; -> Liste aller 45-Grad-Boegen +;; Beispiel: (omni:filter *OMNI-WEICHEN* "WeichenTyp" "Doppelweiche") +;; -> Liste aller Doppelweichen +(defun omni:filter (lst key wert / eintrag val ergebnis) + (setq ergebnis nil) + (foreach eintrag lst + (setq val (cdr (assoc key eintrag))) + (if (equal val wert) + (setq ergebnis (cons eintrag ergebnis)) + ) + ) + (reverse ergebnis) +) + + +;; --- Einzelnen Wert aus einem Eintrag lesen --- +;; eintrag = Assoziationsliste (Rueckgabe von omni:get-bogen etc.) +;; key = Schluesselname z.B. "Radius" +;; Beispiel: (omni:val (omni:get-bogen 821104025) "Radius") -> 550 +(defun omni:val (eintrag key) + (cdr (assoc key eintrag)) +) + + +;; --- SivasNummern aller Boegen fuer einen bestimmten Winkel --- +;; winkel = KurvenWinkel z.B. 90, 45, 22.5 +;; Rueckgabe: Liste von SivasIds (gemischt INT/STR) +;; Beispiel: (omni:boegen-ids 45) -> (821104021 821104026 "821104026+0_B10071" ...) +(defun omni:boegen-ids (winkel / lst eintrag ergebnis) + (if (null *OMNI-BOEGEN*) (omni:load-data)) + (setq ergebnis nil) + (foreach eintrag *OMNI-BOEGEN* + (if (equal (cdr (assoc "KurvenWinkel" eintrag)) winkel) + (setq ergebnis (cons (cdr (assoc "Sivasnr" eintrag)) ergebnis)) + ) + ) + (reverse ergebnis) +) + + +;; --- SivasNummern aller Boegen, gruppiert nach Winkel --- +;; Rueckgabe: Assoziationsliste ((180 . (id ...)) (90 . (id ...)) ...) +;; Beispiel: (omni:boegen-ids-alle) +;; -> ((180 821104043) (90 821104022 821104030 ...) (67.5 ...) (45 ...) (22.5 ...)) +(defun omni:boegen-ids-alle () + (list + (cons 180 (omni:boegen-ids 180)) + (cons 90 (omni:boegen-ids 90)) + (cons 67.5 (omni:boegen-ids 67.5)) + (cons 45 (omni:boegen-ids 45)) + (cons 22.5 (omni:boegen-ids 22.5)) + ) +) + + +;; --- SivasNummern von Weichen nach Winkel und WeichenTyp --- +;; winkel = KurvenWinkel z.B. 90, 45 +;; weichentyp = "Einzelweiche", "Doppelweiche", "Dreiwegeweiche" +;; Beispiel: (omni:weichen-ids 90 "Einzelweiche") +(defun omni:weichen-ids (winkel weichentyp / eintrag ergebnis) + (if (null *OMNI-WEICHEN*) (omni:load-data)) + (setq ergebnis nil) + (foreach eintrag *OMNI-WEICHEN* + (if (and (equal (cdr (assoc "KurvenWinkel" eintrag)) winkel) + (= (cdr (assoc "WeichenTyp" eintrag)) weichentyp) + ) + (setq ergebnis (cons (cdr (assoc "Sivasnr" eintrag)) ergebnis)) + ) + ) + (reverse ergebnis) +) + + +;; --- SivasNummern von Weichenkombinationen (Delta/Star) --- +;; typ = "DELTA" oder "STAR" +;; Filtert anhand ProfilTyp-Inhalt +(defun omni:weichen-kombi-ids (typ / eintrag ergebnis profil) + (if (null *OMNI-WEICHEN*) (omni:load-data)) + (setq ergebnis nil) + (foreach eintrag *OMNI-WEICHEN* + (setq profil (cdr (assoc "ProfilTyp" eintrag))) + (if (and profil (vl-string-search typ profil)) + (setq ergebnis (cons (cdr (assoc "Sivasnr" eintrag)) ergebnis)) + ) + ) + (reverse ergebnis) +) + + +;; --- Alle Weichen-SivasNummern gruppiert --- +;; Rueckgabe: Assoziationsliste nach Kategorie +;; Beispiel: (omni:weichen-ids-alle) +;; -> (("W90-Einfach" id1 id2 ...) +;; ("W90-Doppel" ...) +;; ... +;; ("WKomb-Delta" ...) +;; ("WKomb-Star" ...)) +(defun omni:weichen-ids-alle () + (list + ;; 90 Grad + (cons "W90-Einfach" (omni:weichen-ids 90 "Einzelweiche")) + (cons "W90-Doppel" (omni:weichen-ids 90 "Doppelweiche")) + (cons "W90-Dreiwege" (omni:weichen-ids 90 "Dreiwegeweiche")) + ;; 45 Grad + (cons "W45-Einfach" (omni:weichen-ids 45 "Einzelweiche")) + (cons "W45-Doppel" (omni:weichen-ids 45 "Doppelweiche")) + (cons "W45-Dreiwege" (omni:weichen-ids 45 "Dreiwegeweiche")) + ;; Parallel (KurvenWinkel = 0) + (cons "WP-Einfach" (omni:weichen-ids 0 "Einzelweiche")) + (cons "WP-Doppel" (omni:weichen-ids 0 "Doppelweiche")) + (cons "WP-Dreiwege" (omni:weichen-ids 0 "Dreiwegeweiche")) + ;; Weichenkoerper (KurvenWinkel = 22.5) + (cons "WK-Einfach" (omni:weichen-ids 22.5 "Einzelweiche")) + (cons "WK-Doppel" (omni:weichen-ids 22.5 "Doppelweiche")) + (cons "WK-Dreiwege" (omni:weichen-ids 22.5 "Dreiwegeweiche")) + ;; Weichenkombinationen + (cons "WKomb-Delta" (omni:weichen-kombi-ids "DELTA")) + (cons "WKomb-Star" (omni:weichen-kombi-ids "STAR")) + ) +) + + +;; --- BricsCAD-Befehl: Daten laden --- +(defun c:OMNI_LOAD () + (omni:load-data) + (princ) +) + + +;; --- BricsCAD-Befehl: Bogen-Info anzeigen --- +(defun c:OMNI_INFO_BOGEN ( / id eintrag) + (if (null *OMNI-BOEGEN*) (omni:load-data)) + (setq id (getstring T "\nSivasId des Bogens eingeben: ")) + (if (= id "") (princ "\nAbgebrochen.") + (progn + ;; Versuch als Zahl, dann als String + (setq eintrag (omni:get-bogen (if (/= (atoi id) 0) (atoi id) id))) + (if eintrag + (progn + (princ (strcat "\n ProfilTyp: " (omni:sivasid-to-str (omni:val eintrag "ProfilTyp")))) + (princ (strcat "\n Radius: " (itoa (fix (omni:val eintrag "Radius"))))) + (princ (strcat "\n KurvenWinkel: " (rtos (omni:val eintrag "KurvenWinkel") 2 1))) + (princ (strcat "\n Breite: " (itoa (fix (omni:val eintrag "Breite"))))) + (princ (strcat "\n Laenge: " (itoa (fix (omni:val eintrag "Länge"))))) + (princ (strcat "\n Antriebsart: " (itoa (fix (omni:val eintrag "Antriebsart"))))) + ) + (princ (strcat "\nKein Bogen mit SivasId '" id "' gefunden.")) + ) + ) + ) + (princ) +) + + +;; --- BricsCAD-Befehl: Weichen-Info anzeigen --- +(defun c:OMNI_INFO_WEICHE ( / id eintrag wkl) + (if (null *OMNI-WEICHEN*) (omni:load-data)) + (setq id (getstring T "\nSivasId der Weiche eingeben: ")) + (if (= id "") (princ "\nAbgebrochen.") + (progn + (setq eintrag (omni:get-weiche (if (/= (atoi id) 0) (atoi id) id))) + (if eintrag + (progn + (princ (strcat "\n ProfilTyp: " (omni:sivasid-to-str (omni:val eintrag "ProfilTyp")))) + (princ (strcat "\n WeichenTyp: " (omni:sivasid-to-str (omni:val eintrag "WeichenTyp")))) + (setq wkl (omni:val eintrag "KurvenWinkel")) + (princ (strcat "\n KurvenWinkel: " (if (= (type wkl) 'INT) (itoa wkl) (rtos wkl 2 1)))) + (princ (strcat "\n Schaltungstyp: " (omni:sivasid-to-str (omni:val eintrag "Schaltungstyp")))) + (princ (strcat "\n Breite: " (itoa (fix (omni:val eintrag "Breite"))))) + (princ (strcat "\n Laenge: " (itoa (fix (omni:val eintrag "Länge"))))) + (princ (strcat "\n KurvenRichtung: " (itoa (fix (omni:val eintrag "KurvenRichtung"))))) + (if (omni:val eintrag "WeichenkörperLänge") + (princ (strcat "\n WK-Laenge: " (rtos (omni:val eintrag "WeichenkörperLänge") 2 1))) + ) + ) + (princ (strcat "\nKeine Weiche mit SivasId '" id "' gefunden.")) + ) + ) + ) + (princ) +) + + +;; ============================================================ +;; OMNIFLO MODUL-BEFEHLE (Dummy-Implementierungen) +;; ============================================================ + ;; --- Omniflo / Boegen --- (defun c:OMNI_APB_630_90 () (princ "\n[DUMMY] APB 110 R 630/90 800/800 (821104033)") From 2c4b7082336c69518e800a3db3228e0641d0beeb Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 13:16:09 +0200 Subject: [PATCH 3/9] Omniflo Dialoge mit dcl Datei erzeugt --- Lisp/OmniModulInsert.lsp | 146 ++++++++++++++++++++++++++++++++++++--- bin/setenv.bat | 1 + dcl/omniflo_boegen.dcl | 54 +++++++++++++++ menu/SSG_LIB.mnu | 38 +++++----- 4 files changed, 209 insertions(+), 30 deletions(-) create mode 100644 dcl/omniflo_boegen.dcl diff --git a/Lisp/OmniModulInsert.lsp b/Lisp/OmniModulInsert.lsp index 00a4273..8378d99 100644 --- a/Lisp/OmniModulInsert.lsp +++ b/Lisp/OmniModulInsert.lsp @@ -408,32 +408,156 @@ ;; ============================================================ -;; OMNIFLO MODUL-BEFEHLE (Dummy-Implementierungen) +;; OMNIFLO BOGEN-DIALOG +;; Generischer Dialog fuer Bogen-Auswahl nach Winkel +;; ============================================================ + + +;; --- Detail-Felder im Dialog aktualisieren --- +;; Wird bei Dropdown-Aenderung aufgerufen (action_tile callback) +(defun omni:bogen-dlg-update (idx-str / idx eintrag wkl) + (setq idx (atoi idx-str)) + (setq eintrag (nth idx *OMNI-DLG-BOEGEN*)) + (if eintrag + (progn + (set_tile "val_sivasnr" + (omni:sivasid-to-str (omni:val eintrag "Sivasnr"))) + (setq wkl (omni:val eintrag "KurvenWinkel")) + (set_tile "val_winkel" + (if (= (type wkl) 'INT) (strcat (itoa wkl) " Grad") + (strcat (rtos wkl 2 1) " Grad") + ) + ) + (set_tile "val_radius" + (itoa (fix (omni:val eintrag "Radius")))) + (set_tile "val_breite" + (itoa (fix (omni:val eintrag "Breite")))) + (set_tile "val_laenge" + (itoa (fix (omni:val eintrag "Länge")))) + ) + ) +) + + +;; --- Bogen-Auswahl-Dialog oeffnen --- +;; winkel = KurvenWinkel (90, 67.5, 45, 22.5, 180) +;; Rueckgabe: gewaehlter Bogen-Eintrag (alist) oder nil bei Abbruch +(defun omni:bogen-dialog (winkel / dcl-pfad dat boegen-liste + profil-liste ergebnis) + (if (null *OMNI-BOEGEN*) (omni:load-data)) + + ;; Boegen nach Winkel filtern + (setq boegen-liste (omni:filter *OMNI-BOEGEN* "KurvenWinkel" winkel)) + (if (null boegen-liste) + (progn + (alert (strcat "Keine Boegen fuer " + (if (= (type winkel) 'INT) (itoa winkel) (rtos winkel 2 1)) + " Grad gefunden.")) + nil + ) + (progn + ;; In globaler Variable fuer Dialog-Callbacks speichern + (setq *OMNI-DLG-BOEGEN* boegen-liste) + + ;; ProfilTyp-Liste fuer Dropdown aufbauen + (setq profil-liste + (mapcar '(lambda (e) (cdr (assoc "ProfilTyp" e))) boegen-liste)) + + ;; DCL laden + (setq dcl-pfad (strcat (getenv "DXFM_DCL") "/omniflo_boegen.dcl")) + (setq dat (load_dialog dcl-pfad)) + (if (not (new_dialog "omniflo_boegen" dat)) + (progn (alert "Bogen-Dialog konnte nicht geladen werden.") nil) + (progn + ;; Dropdown befuellen + (start_list "bogenart") + (mapcar 'add_list profil-liste) + (end_list) + (set_tile "bogenart" "0") + + ;; Startwerte anzeigen + (omni:bogen-dlg-update "0") + + ;; Callback bei Dropdown-Aenderung + (action_tile "bogenart" "(omni:bogen-dlg-update $value)") + + ;; OK/Abbrechen + (action_tile "accept" + "(setq ergebnis (atoi (get_tile \"bogenart\"))) (done_dialog 1)") + (action_tile "cancel" "(done_dialog 0)") + + (start_dialog) + (unload_dialog dat) + + ;; Gewaehlten Eintrag zurueckgeben + (if ergebnis + (nth ergebnis *OMNI-DLG-BOEGEN*) + nil + ) + ) + ) + ) + ) +) + + +;; ============================================================ +;; OMNIFLO MODUL-BEFEHLE ;; ============================================================ ;; --- Omniflo / Boegen --- -(defun c:OMNI_APB_630_90 () - (princ "\n[DUMMY] APB 110 R 630/90 800/800 (821104033)") +(defun c:OMNI_APB_630_90 ( / eintrag) + (setq eintrag (omni:bogen-dialog 90)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_APB_550_675 () - (princ "\n[DUMMY] APB 110 R 550/67.5 432 (821104027)") +(defun c:OMNI_APB_550_675 ( / eintrag) + (setq eintrag (omni:bogen-dialog 67.5)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_APB_630_45 () - (princ "\n[DUMMY] APB 110 R 630/45 400 (821104031)") +(defun c:OMNI_APB_630_45 ( / eintrag) + (setq eintrag (omni:bogen-dialog 45)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_APB_550_225 () - (princ "\n[DUMMY] APB 110 R 550/22.5 84 (821104025)") +(defun c:OMNI_APB_550_225 ( / eintrag) + (setq eintrag (omni:bogen-dialog 22.5)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_APB_650_180 () - (princ "\n[DUMMY] APB 110 R 650/180 L=150 (821104043)") +(defun c:OMNI_APB_650_180 ( / eintrag) + (setq eintrag (omni:bogen-dialog 180)) + (if eintrag + (princ (strcat "\n[BOGEN] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[BOGEN] Abgebrochen.") + ) (princ) ) diff --git a/bin/setenv.bat b/bin/setenv.bat index efde649..ca21b64 100644 --- a/bin/setenv.bat +++ b/bin/setenv.bat @@ -19,6 +19,7 @@ set "DXFM_CFG=%DXFMAKRO%\cfg" set "DXFM_LOG=%DXFMAKRO%\log" set "DXFM_BLOCKS=%DXFMAKRO%\Blocks" set "DXFM_LISP=%DXFMAKRO%\Lisp" +set "DXFM_DCL=%DXFMAKRO%\dcl" set "DXFM_RESULTS=%DXFMAKRO%\results" set BRISCAD="C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe" diff --git a/dcl/omniflo_boegen.dcl b/dcl/omniflo_boegen.dcl new file mode 100644 index 0000000..c4830b1 --- /dev/null +++ b/dcl/omniflo_boegen.dcl @@ -0,0 +1,54 @@ +// ============================================================ +// omniflo_boegen.dcl - Bogen-Auswahl Dialog fuer Omniflo +// Zeigt gefilterte Boegen nach Winkel mit Details an. +// ============================================================ + +omniflo_boegen : dialog { + label = "Omniflo Bogen Auswahl"; + + : row { + : popup_list { + key = "bogenart"; + label = "Bogenart:"; + width = 42; + } + : edit_box { + key = "val_sivasnr"; + label = "SivasNr:"; + width = 22; + is_enabled = false; + } + } + + : row { + : edit_box { + key = "val_winkel"; + label = "Winkel:"; + width = 16; + is_enabled = false; + } + : edit_box { + key = "val_radius"; + label = "Radius:"; + width = 16; + is_enabled = false; + } + } + + : row { + : edit_box { + key = "val_breite"; + label = "Breite:"; + width = 16; + is_enabled = false; + } + : edit_box { + key = "val_laenge"; + label = "Laenge:"; + width = 16; + is_enabled = false; + } + } + + ok_cancel; +} diff --git a/menu/SSG_LIB.mnu b/menu/SSG_LIB.mnu index 42bcfb6..5684915 100644 --- a/menu/SSG_LIB.mnu +++ b/menu/SSG_LIB.mnu @@ -39,32 +39,32 @@ [<-ILS Schliessen]^C^C [->Omniflo] [->Boegen] -[APB 110 R 630/90 800/800 (821104033)]^C^COMNI_APB_630_90 -[APB 110 R 550/67.5 432 (821104027)]^C^COMNI_APB_550_675 -[APB 110 R 630/45 400 (821104031)]^C^COMNI_APB_630_45 -[APB 110 R 550/22.5 84 (821104025)]^C^COMNI_APB_550_225 -[<-APB 110 R 650/180 L=150 (821104043)]^C^COMNI_APB_650_180 +[90]^C^COMNI_APB_630_90 +[67.5]^C^COMNI_APB_550_675 +[45]^C^COMNI_APB_630_45 +[22.5]^C^COMNI_APB_550_225 +[<-180 ]^C^COMNI_APB_650_180 [->Aluprofil Gerade] [<-AP 110]^C^COMNI_AP110 [->Weiche 90 Grad] -[Einfach 90 700/700 links M (834372027)]^C^COMNI_W90_Einfach -[Doppel 90 700/700 M (834372109)]^C^COMNI_W90_Doppel -[<-Dreiwege 90 700/700 M (834372209)]^C^COMNI_W90_Dreiwege +[Einfach 90 700/700 links M]^C^COMNI_W90_Einfach +[Doppel 90 700/700 M]^C^COMNI_W90_Doppel +[<-Dreiwege 90 700/700 M]^C^COMNI_W90_Dreiwege [->Weiche 45 Grad] -[Einfach 45 350/700 links M (834372001)]^C^COMNI_W45_Einfach -[Doppel 45 350/700 M (834372100)]^C^COMNI_W45_Doppel -[<-Dreiwege 45 350/700 M (834372200)]^C^COMNI_W45_Dreiwege +[Einfach 45 350/700 links M]^C^COMNI_W45_Einfach +[Doppel 45 350/700 M]^C^COMNI_W45_Doppel +[<-Dreiwege 45 350/700 M]^C^COMNI_W45_Dreiwege [->Weichen Parallel] -[Einfach Parallel 200/750 links M (834372047)]^C^COMNI_WP_Einfach -[Doppel Parallel 200/750 M (834372115)]^C^COMNI_WP_Doppel -[<-Dreiwege Parallel 200/750 M (834372215)]^C^COMNI_WP_Dreiwege +[Einfach Parallel 200/750 links M]^C^COMNI_WP_Einfach +[Doppel Parallel 200/750 M]^C^COMNI_WP_Doppel +[<-Dreiwege Parallel 200/750 M]^C^COMNI_WP_Dreiwege [->Weichenkoerper] -[Weichenkoerper Einfach 22.5 links M (834342011)]^C^COMNI_WK_Einfach -[Weichenkoerper Doppel 22.5 M (834342100)]^C^COMNI_WK_Doppel -[<-Weichenkoerper Dreiwege 22.5 M (834342200)]^C^COMNI_WK_Dreiwege +[Weichenkoerper Einfach 22.5 links M]^C^COMNI_WK_Einfach +[Weichenkoerper Doppel 22.5 M]^C^COMNI_WK_Doppel +[<-Weichenkoerper Dreiwege 22.5 M]^C^COMNI_WK_Dreiwege [->Weichenkombinationen] -[Delta 1400/700 M (834372400)]^C^COMNI_WKomb_Delta -[<-Star 1400/1400 M (834372420)]^C^COMNI_WKomb_Star +[Delta 1400/700 M]^C^COMNI_WKomb_Delta +[<-Star 1400/1400 M]^C^COMNI_WKomb_Star [->TEF Elemente] [Umlenkspannst. rechts fuer TEF links]^C^COMNI_TEF_UmlenkR [Umlenkspannst. links fuer TEF rechts]^C^COMNI_TEF_UmlenkL From 8aa0e4e6afdb48608f03a30c1ae1f40b23cbae12 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 13:23:07 +0200 Subject: [PATCH 4/9] Omniflo Modul wurde nohc nicht geladen --- Lisp/ssg_load.lsp | 1 + 1 file changed, 1 insertion(+) diff --git a/Lisp/ssg_load.lsp b/Lisp/ssg_load.lsp index 02c7843..f5cf347 100644 --- a/Lisp/ssg_load.lsp +++ b/Lisp/ssg_load.lsp @@ -26,6 +26,7 @@ (load (strcat base-path "KreiselInsert.lsp") "KreiselInsert.lsp nicht gefunden") (load (strcat base-path "VarioFoerderer.lsp") "VarioFoerderer.lsp nicht gefunden") (load (strcat base-path "tests.lsp") "tests.lsp nicht gefunden") + (load (strcat base-path "OmniModulInsert.lsp") "OmniModulInsert.lsp nicht gefunden") (load (strcat base-path "SSG_LIB_Commands.lsp") "SSG_LIB_Commands.lsp nicht gefunden") (prompt "\nSSG-Bibliotheken geladen: ssg_core, ssg_dialog, ssg_layer") (princ) From 34700d30bab5faccdb28db1b28e4dfd5520f88f1 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 13:27:39 +0200 Subject: [PATCH 5/9] If Verzweigung hatte Fehler --- Lisp/KreiselInsert.lsp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/Lisp/KreiselInsert.lsp b/Lisp/KreiselInsert.lsp index 6aa2017..58b087f 100644 --- a/Lisp/KreiselInsert.lsp +++ b/Lisp/KreiselInsert.lsp @@ -10,17 +10,7 @@ (if (getenv "DXFM_BLOCKS") (setq modul-pfad (strcat (getenv "DXFM_BLOCKS") "/")) (progn - (alert "Umgebungsvariable DXFM_BLOCKS nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.") - (exit) - ) - - (progn - (alert - "DXFM_BLOCKS nicht gesetzt!\n\n" - "Bitte fuehren Sie zuerst bin\\setenv.bat aus,\n" - "oder setzen Sie den Pfad manuell mit:\n" - "(setenv \"DXFM_BLOCKS\" \"C:/Users/y.wang/Documents/dxfmakros/Blocks/")" - ) + (alert "DXFM_BLOCKS nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.") (exit) ) ) From cf17e9205601b7d20a3ebfc3d4a1b862ec5f82ec Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 13:32:05 +0200 Subject: [PATCH 6/9] =?UTF-8?q?Saveload=20deaktiviert.=20Beim=20Laden=20m?= =?UTF-8?q?=C3=B6chte=20ich=20Fehler=20sehen,=20wenn=20welche=20da=20sind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lisp/KreiselInsert.lsp | 2 +- bin/on_start.lsp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Lisp/KreiselInsert.lsp b/Lisp/KreiselInsert.lsp index 58b087f..eb11f14 100644 --- a/Lisp/KreiselInsert.lsp +++ b/Lisp/KreiselInsert.lsp @@ -17,7 +17,7 @@ ;; block-pfad neu setzen (setq *block-path* (getenv "DXFM_BLOCKS")) -(princ (strcat "\n✅ Block-Pfad: " block-pfad)) +(princ (strcat "\nBlock-Pfad: " *block-path*)) ;; Basispunkt: Linker Kreis, linkester Tangentenpunkt (links Mitte) ;; ============================================ diff --git a/bin/on_start.lsp b/bin/on_start.lsp index 7c11a0b..2336836 100644 --- a/bin/on_start.lsp +++ b/bin/on_start.lsp @@ -35,9 +35,10 @@ (setvar "SRCHPATH" (strcat curr-srch ";" lisp-pfad)) ) - ;; Library laden + ;; Library laden (direkt, damit Fehler sichtbar sind) (if (findfile (strcat lisp-pfad "/ssg_load.lsp")) - (if (ssg-lib-safe-load (strcat lisp-pfad "/ssg_load.lsp")) + (progn + (load (strcat lisp-pfad "/ssg_load.lsp")) (princ "\n[SSG_LIB] ssg_load.lsp geladen.") ) (princ "\n[SSG_LIB] WARNUNG: ssg_load.lsp nicht gefunden!") From 1deaa2e36101321bed3ca84bc32bd262ced05c60 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 13:35:33 +0200 Subject: [PATCH 7/9] Fix beim laden der json files --- Lisp/OmniModulInsert.lsp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Lisp/OmniModulInsert.lsp b/Lisp/OmniModulInsert.lsp index 8378d99..f4d09f8 100644 --- a/Lisp/OmniModulInsert.lsp +++ b/Lisp/OmniModulInsert.lsp @@ -77,12 +77,14 @@ (if (and (> (strlen zeile) 0) (= (substr zeile 1 1) "\"")) (progn ;; Key extrahieren: zweites Anfuehrungszeichen finden + ;; vl-string-search ist 0-basiert, substr ist 1-basiert (setq pos (vl-string-search "\"" zeile 1)) (if pos (progn - (setq key (substr zeile 2 pos)) - ;; Nach dem ":" den Wert extrahieren - (setq rest (substr zeile (+ pos 3))) + (setq key (substr zeile 2 (1- pos))) + ;; Rest nach dem schliessenden " extrahieren + (setq rest (substr zeile (+ pos 2))) + ;; ":" im Rest finden (setq pos (vl-string-search ":" rest)) (if pos (progn From a2cdc4e87b485cdb49a002ed847c00439152884a Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 14:36:42 +0200 Subject: [PATCH 8/9] Omniflo Weichen Interface gebaut --- Lisp/OmniModulInsert.lsp | 327 +++++++++++++++++++++++++++++++++++---- lib/testpycall.py | 29 ++++ 2 files changed, 328 insertions(+), 28 deletions(-) create mode 100644 lib/testpycall.py diff --git a/Lisp/OmniModulInsert.lsp b/Lisp/OmniModulInsert.lsp index f4d09f8..f338803 100644 --- a/Lisp/OmniModulInsert.lsp +++ b/Lisp/OmniModulInsert.lsp @@ -569,78 +569,349 @@ (princ) ) +;; ============================================================ +;; OMNIFLO WEICHEN-DIALOG +;; Generischer Dialog fuer Weichen-Auswahl nach Winkel/Typ +;; mit Filter fuer Schaltungstyp und Richtung +;; ============================================================ + + +;; --- Aktuelle Filterwerte aus Radio-Buttons lesen --- +(defun omni:weichen-get-filter ( / sch ri) + (setq sch "alle") + (if (= (get_tile "sch_m") "1") (setq sch "M")) + (if (= (get_tile "sch_p") "1") (setq sch "P")) + (setq ri "alle") + (if (= (get_tile "ri_links") "1") (setq ri "1")) + (if (= (get_tile "ri_rechts") "1") (setq ri "2")) + (list sch ri) +) + + +;; --- Gefilterte Weichen-Liste aufbauen --- +;; basis-liste = alle Weichen fuer den gewaehlten Winkel/Typ +;; sch-filter = "M", "P" oder "alle" +;; ri-filter = "1", "2" oder "alle" +(defun omni:weichen-filter-liste (basis-liste sch-filter ri-filter / eintrag sch kr ergebnis) + (setq ergebnis nil) + (foreach eintrag basis-liste + (setq sch (cdr (assoc "Schaltungstyp" eintrag))) + (setq kr (cdr (assoc "KurvenRichtung" eintrag))) + (if (and + (or (= sch-filter "alle") (= sch sch-filter)) + (or (= ri-filter "alle") + (= (omni:sivasid-to-str kr) ri-filter)) + ) + (setq ergebnis (cons eintrag ergebnis)) + ) + ) + (reverse ergebnis) +) + + +;; --- Dropdown mit gefilterter Liste neu befuellen --- +(defun omni:weichen-dlg-refresh ( / filter sch-f ri-f gefiltert profil-liste) + (setq filter (omni:weichen-get-filter)) + (setq sch-f (car filter)) + (setq ri-f (cadr filter)) + (setq gefiltert (omni:weichen-filter-liste *OMNI-DLG-WEICHEN-BASIS* sch-f ri-f)) + (setq *OMNI-DLG-WEICHEN* gefiltert) + + ;; Dropdown neu befuellen + (setq profil-liste + (mapcar '(lambda (e) (cdr (assoc "ProfilTyp" e))) gefiltert)) + (start_list "profiltyp") + (mapcar 'add_list profil-liste) + (end_list) + + ;; Ersten Eintrag anzeigen (falls vorhanden) + (if gefiltert + (progn + (set_tile "profiltyp" "0") + (omni:weichen-dlg-update "0") + ) + (progn + (set_tile "val_sivasnr" "---") + (set_tile "val_winkel" "---") + (set_tile "val_breite" "---") + (set_tile "val_laenge" "---") + ) + ) +) + + +;; --- Detail-Felder im Weichen-Dialog aktualisieren --- +(defun omni:weichen-dlg-update (idx-str / idx eintrag wkl) + (setq idx (atoi idx-str)) + (setq eintrag (nth idx *OMNI-DLG-WEICHEN*)) + (if eintrag + (progn + (set_tile "val_sivasnr" + (omni:sivasid-to-str (omni:val eintrag "Sivasnr"))) + (setq wkl (omni:val eintrag "KurvenWinkel")) + (set_tile "val_winkel" + (if (= (type wkl) 'INT) (strcat (itoa wkl) " Grad") + (strcat (rtos wkl 2 1) " Grad") + ) + ) + (set_tile "val_breite" + (itoa (fix (omni:val eintrag "Breite")))) + (set_tile "val_laenge" + (itoa (fix (omni:val eintrag "Länge")))) + ) + ) +) + + +;; --- Weichen-Auswahl-Dialog oeffnen --- +;; winkel = KurvenWinkel (90, 45, 0, 22.5) +;; weichentyp = "Einzelweiche", "Doppelweiche", "Dreiwegeweiche" oder nil fuer alle +;; Rueckgabe: gewaehlter Weichen-Eintrag (alist) oder nil bei Abbruch +(defun omni:weichen-dialog (winkel weichentyp / dcl-pfad dat basis-liste + profil-liste ergebnis) + (if (null *OMNI-WEICHEN*) (omni:load-data)) + + ;; Weichen nach Winkel filtern (nil = alle Winkel) + (if winkel + (setq basis-liste (omni:filter *OMNI-WEICHEN* "KurvenWinkel" winkel)) + (setq basis-liste *OMNI-WEICHEN*) + ) + + ;; Optional nach WeichenTyp filtern + (if weichentyp + (setq basis-liste + (vl-remove-if-not + '(lambda (e) (= (cdr (assoc "WeichenTyp" e)) weichentyp)) + basis-liste)) + ) + + (if (null basis-liste) + (progn + (alert (strcat "Keine Weichen fuer " + (cond + ((null winkel) "alle Winkel") + ((= (type winkel) 'INT) (strcat (itoa winkel) " Grad")) + (T (strcat (rtos winkel 2 1) " Grad")) + ) + (if weichentyp (strcat " / " weichentyp) "") + " gefunden.")) + nil + ) + (progn + ;; Basis-Liste und gefilterte Liste in globalen Variablen speichern + (setq *OMNI-DLG-WEICHEN-BASIS* basis-liste) + (setq *OMNI-DLG-WEICHEN* basis-liste) + + ;; ProfilTyp-Liste fuer Dropdown aufbauen + (setq profil-liste + (mapcar '(lambda (e) (cdr (assoc "ProfilTyp" e))) basis-liste)) + + ;; DCL laden + (setq dcl-pfad (strcat (getenv "DXFM_DCL") "/omniflo_weichen.dcl")) + (setq dat (load_dialog dcl-pfad)) + (if (not (new_dialog "omniflo_weichen" dat)) + (progn (alert "Weichen-Dialog konnte nicht geladen werden.") nil) + (progn + ;; Dropdown befuellen + (start_list "profiltyp") + (mapcar 'add_list profil-liste) + (end_list) + (set_tile "profiltyp" "0") + + ;; Startwerte anzeigen + (omni:weichen-dlg-update "0") + + ;; Callback bei Dropdown-Aenderung + (action_tile "profiltyp" "(omni:weichen-dlg-update $value)") + + ;; Callbacks fuer Filter-Radio-Buttons (alle loesen Refresh aus) + (action_tile "sch_alle" "(omni:weichen-dlg-refresh)") + (action_tile "sch_m" "(omni:weichen-dlg-refresh)") + (action_tile "sch_p" "(omni:weichen-dlg-refresh)") + (action_tile "ri_alle" "(omni:weichen-dlg-refresh)") + (action_tile "ri_links" "(omni:weichen-dlg-refresh)") + (action_tile "ri_rechts" "(omni:weichen-dlg-refresh)") + + ;; OK/Abbrechen + (action_tile "accept" + "(setq ergebnis (atoi (get_tile \"profiltyp\"))) (done_dialog 1)") + (action_tile "cancel" "(done_dialog 0)") + + (start_dialog) + (unload_dialog dat) + + ;; Gewaehlten Eintrag zurueckgeben + (if ergebnis + (nth ergebnis *OMNI-DLG-WEICHEN*) + nil + ) + ) + ) + ) + ) +) + + +;; ============================================================ +;; OMNIFLO WEICHEN-BEFEHLE +;; ============================================================ + ;; --- Omniflo / Weiche 90 Grad --- -(defun c:OMNI_W90_Einfach () - (princ "\n[DUMMY] Einfach 90 700/700 links M (834372027)") +(defun c:OMNI_W90_Einfach ( / eintrag) + (setq eintrag (omni:weichen-dialog 90 "Einzelweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_W90_Doppel () - (princ "\n[DUMMY] Doppel 90 700/700 M (834372109)") +(defun c:OMNI_W90_Doppel ( / eintrag) + (setq eintrag (omni:weichen-dialog 90 "Doppelweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_W90_Dreiwege () - (princ "\n[DUMMY] Dreiwege 90 700/700 M (834372209)") +(defun c:OMNI_W90_Dreiwege ( / eintrag) + (setq eintrag (omni:weichen-dialog 90 "Dreiwegeweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) ;; --- Omniflo / Weiche 45 Grad --- -(defun c:OMNI_W45_Einfach () - (princ "\n[DUMMY] Einfach 45 350/700 links M (834372001)") +(defun c:OMNI_W45_Einfach ( / eintrag) + (setq eintrag (omni:weichen-dialog 45 "Einzelweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_W45_Doppel () - (princ "\n[DUMMY] Doppel 45 350/700 M (834372100)") +(defun c:OMNI_W45_Doppel ( / eintrag) + (setq eintrag (omni:weichen-dialog 45 "Doppelweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_W45_Dreiwege () - (princ "\n[DUMMY] Dreiwege 45 350/700 M (834372200)") +(defun c:OMNI_W45_Dreiwege ( / eintrag) + (setq eintrag (omni:weichen-dialog 45 "Dreiwegeweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) ;; --- Omniflo / Weichen Parallel --- -(defun c:OMNI_WP_Einfach () - (princ "\n[DUMMY] Einfach Parallel 200/750 links M (834372047)") +(defun c:OMNI_WP_Einfach ( / eintrag) + (setq eintrag (omni:weichen-dialog 0 "Einzelweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_WP_Doppel () - (princ "\n[DUMMY] Doppel Parallel 200/750 M (834372115)") +(defun c:OMNI_WP_Doppel ( / eintrag) + (setq eintrag (omni:weichen-dialog 0 "Doppelweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_WP_Dreiwege () - (princ "\n[DUMMY] Dreiwege Parallel 200/750 M (834372215)") +(defun c:OMNI_WP_Dreiwege ( / eintrag) + (setq eintrag (omni:weichen-dialog 0 "Dreiwegeweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) ;; --- Omniflo / Weichenkoerper --- -(defun c:OMNI_WK_Einfach () - (princ "\n[DUMMY] Weichenkoerper Einfach 22.5 links M (834342011)") +(defun c:OMNI_WK_Einfach ( / eintrag) + (setq eintrag (omni:weichen-dialog 22.5 "Einzelweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_WK_Doppel () - (princ "\n[DUMMY] Weichenkoerper Doppel 22.5 M (834342100)") +(defun c:OMNI_WK_Doppel ( / eintrag) + (setq eintrag (omni:weichen-dialog 22.5 "Doppelweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_WK_Dreiwege () - (princ "\n[DUMMY] Weichenkoerper Dreiwege 22.5 M (834342200)") +(defun c:OMNI_WK_Dreiwege ( / eintrag) + (setq eintrag (omni:weichen-dialog 22.5 "Dreiwegeweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) ;; --- Omniflo / Weichenkombinationen --- -(defun c:OMNI_WKomb_Delta () - (princ "\n[DUMMY] Delta 1400/700 M (834372400)") +(defun c:OMNI_WKomb_Delta ( / eintrag) + (setq eintrag (omni:weichen-dialog nil "Deltaweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) -(defun c:OMNI_WKomb_Star () - (princ "\n[DUMMY] Star 1400/1400 M (834372420)") +(defun c:OMNI_WKomb_Star ( / eintrag) + (setq eintrag (omni:weichen-dialog nil "Sternweiche")) + (if eintrag + (princ (strcat "\n[WEICHE] Gewaehlt: " + (omni:val eintrag "ProfilTyp") " (SivasNr: " + (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (princ "\n[WEICHE] Abgebrochen.") + ) (princ) ) diff --git a/lib/testpycall.py b/lib/testpycall.py new file mode 100644 index 0000000..fe4b29a --- /dev/null +++ b/lib/testpycall.py @@ -0,0 +1,29 @@ +"""testpycall.py - Testskript fuer LISP-Python-Aufruf.""" + +import os +import sys +from datetime import datetime + + +def main(): + if len(sys.argv) > 1: + log_dir = sys.argv[1] + else: + log_dir = os.getenv("DXFM_LOG", ".") + + os.makedirs(log_dir, exist_ok=True) + log_file = os.path.join(log_dir, "testpycall.log") + return_file = os.path.join(log_dir, "testpycall_return.txt") + + timestamp = datetime.now().strftime("%y%m%d-%H:%M:%S") + + message = f"{timestamp} - been called from BricsCAD LISP via CALLPYTHON\n" + with open(log_file, "a", encoding="utf-8") as f: + f.write(message) + + with open(return_file, "w", encoding="utf-8") as f: + f.write(timestamp) + + +if __name__ == "__main__": + main() From 241d24c1d267b8c242b2d34409bde3b1abcc9d3d Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 8 May 2026 15:25:04 +0200 Subject: [PATCH 9/9] =?UTF-8?q?Oberfl=C3=A4che=20f=C3=BCr=20Weichen=20dazu?= =?UTF-8?q?.=20Funktion=20dahintergeh=C3=A4ngt=20das=20eventuell=20vorhand?= =?UTF-8?q?ene=20.dxf=20l=C3=A4dt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lisp/OmniModulInsert.lsp | 144 ++++++++++++++++++++------------- data/dxf/834372115_symbol.dwl | 3 - data/dxf/834372115_symbol.dwl2 | 7 -- dcl/omniflo_weichen.dcl | 65 +++++++++++++++ 4 files changed, 152 insertions(+), 67 deletions(-) delete mode 100644 data/dxf/834372115_symbol.dwl delete mode 100644 data/dxf/834372115_symbol.dwl2 create mode 100644 dcl/omniflo_weichen.dcl diff --git a/Lisp/OmniModulInsert.lsp b/Lisp/OmniModulInsert.lsp index f338803..1830da6 100644 --- a/Lisp/OmniModulInsert.lsp +++ b/Lisp/OmniModulInsert.lsp @@ -511,9 +511,7 @@ (defun c:OMNI_APB_630_90 ( / eintrag) (setq eintrag (omni:bogen-dialog 90)) (if eintrag - (princ (strcat "\n[BOGEN] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[BOGEN] Abgebrochen.") ) (princ) @@ -522,9 +520,7 @@ (defun c:OMNI_APB_550_675 ( / eintrag) (setq eintrag (omni:bogen-dialog 67.5)) (if eintrag - (princ (strcat "\n[BOGEN] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[BOGEN] Abgebrochen.") ) (princ) @@ -533,9 +529,7 @@ (defun c:OMNI_APB_630_45 ( / eintrag) (setq eintrag (omni:bogen-dialog 45)) (if eintrag - (princ (strcat "\n[BOGEN] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[BOGEN] Abgebrochen.") ) (princ) @@ -544,9 +538,7 @@ (defun c:OMNI_APB_550_225 ( / eintrag) (setq eintrag (omni:bogen-dialog 22.5)) (if eintrag - (princ (strcat "\n[BOGEN] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[BOGEN] Abgebrochen.") ) (princ) @@ -555,9 +547,7 @@ (defun c:OMNI_APB_650_180 ( / eintrag) (setq eintrag (omni:bogen-dialog 180)) (if eintrag - (princ (strcat "\n[BOGEN] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[BOGEN] Abgebrochen.") ) (princ) @@ -752,6 +742,74 @@ ) +;; ============================================================ +;; OMNIFLO DXF-BLOCK EINFUEGEN +;; Fuegt eine DXF-Datei aus data/omniflo/ als Block ein. +;; Der Benutzer waehlt den Einfuegepunkt und Drehwinkel. +;; ============================================================ + +;; --- DXF-Datei als Block einfuegen --- +;; sivasnr-str = SivasNr als String (Dateiname ohne .dxf) +;; Rueckgabe: Einfuegepunkt oder nil bei Abbruch +(defun omni:insert-dxf (sivasnr-str / dxf-pfad data-pfad pt + oldOsnap oldCmdEcho oldLayer) + (setq data-pfad (getenv "DXFM_DATA")) + (if (null data-pfad) + (progn + (princ "\n[OMNI] FEHLER: DXFM_DATA nicht gesetzt!") + nil + ) + (progn + (setq dxf-pfad (strcat data-pfad "/omniflo/" sivasnr-str ".dxf")) + (if (not (findfile dxf-pfad)) + (progn + (princ (strcat "\n[OMNI] FEHLER: DXF nicht gefunden: " dxf-pfad)) + nil + ) + (progn + (setq pt (getpoint "\nEinfuegepunkt waehlen: ")) + (if (null pt) + (progn (princ "\n[OMNI] Abgebrochen.") nil) + (progn + ;; Einstellungen sichern + (setq oldOsnap (getvar "OSMODE")) + (setq oldCmdEcho (getvar "CMDECHO")) + (setq oldLayer (getvar "CLAYER")) + (setvar "CMDECHO" 0) + + ;; Block einfuegen mit Winkelabfrage (pause) + (command "_.INSERT" dxf-pfad pt "" "" pause) + + ;; Einstellungen wiederherstellen + (setvar "OSMODE" oldOsnap) + (setvar "CMDECHO" oldCmdEcho) + (setvar "CLAYER" oldLayer) + + (princ (strcat "\n[OMNI] " sivasnr-str " eingefuegt.")) + pt + ) + ) + ) + ) + ) + ) +) + + +;; --- Eintrag aus Dialog-Ergebnis einfuegen --- +;; Nimmt einen Eintrag (alist) und fuegt die zugehoerige DXF ein. +(defun omni:insert-from-entry (eintrag / sivasnr-str) + (if eintrag + (progn + (setq sivasnr-str (omni:sivasid-to-str (omni:val eintrag "Sivasnr"))) + (princ (strcat "\n[OMNI] Einfuegen: " + (omni:val eintrag "ProfilTyp") " (" sivasnr-str ")")) + (omni:insert-dxf sivasnr-str) + ) + ) +) + + ;; ============================================================ ;; OMNIFLO WEICHEN-BEFEHLE ;; ============================================================ @@ -760,9 +818,7 @@ (defun c:OMNI_W90_Einfach ( / eintrag) (setq eintrag (omni:weichen-dialog 90 "Einzelweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -771,9 +827,7 @@ (defun c:OMNI_W90_Doppel ( / eintrag) (setq eintrag (omni:weichen-dialog 90 "Doppelweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -782,9 +836,7 @@ (defun c:OMNI_W90_Dreiwege ( / eintrag) (setq eintrag (omni:weichen-dialog 90 "Dreiwegeweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -794,9 +846,7 @@ (defun c:OMNI_W45_Einfach ( / eintrag) (setq eintrag (omni:weichen-dialog 45 "Einzelweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -805,9 +855,7 @@ (defun c:OMNI_W45_Doppel ( / eintrag) (setq eintrag (omni:weichen-dialog 45 "Doppelweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -816,9 +864,7 @@ (defun c:OMNI_W45_Dreiwege ( / eintrag) (setq eintrag (omni:weichen-dialog 45 "Dreiwegeweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -828,9 +874,7 @@ (defun c:OMNI_WP_Einfach ( / eintrag) (setq eintrag (omni:weichen-dialog 0 "Einzelweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -839,9 +883,7 @@ (defun c:OMNI_WP_Doppel ( / eintrag) (setq eintrag (omni:weichen-dialog 0 "Doppelweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -850,9 +892,7 @@ (defun c:OMNI_WP_Dreiwege ( / eintrag) (setq eintrag (omni:weichen-dialog 0 "Dreiwegeweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -862,9 +902,7 @@ (defun c:OMNI_WK_Einfach ( / eintrag) (setq eintrag (omni:weichen-dialog 22.5 "Einzelweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -873,9 +911,7 @@ (defun c:OMNI_WK_Doppel ( / eintrag) (setq eintrag (omni:weichen-dialog 22.5 "Doppelweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -884,9 +920,7 @@ (defun c:OMNI_WK_Dreiwege ( / eintrag) (setq eintrag (omni:weichen-dialog 22.5 "Dreiwegeweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -896,9 +930,7 @@ (defun c:OMNI_WKomb_Delta ( / eintrag) (setq eintrag (omni:weichen-dialog nil "Deltaweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) @@ -907,9 +939,7 @@ (defun c:OMNI_WKomb_Star ( / eintrag) (setq eintrag (omni:weichen-dialog nil "Sternweiche")) (if eintrag - (princ (strcat "\n[WEICHE] Gewaehlt: " - (omni:val eintrag "ProfilTyp") " (SivasNr: " - (omni:sivasid-to-str (omni:val eintrag "Sivasnr")) ")")) + (omni:insert-from-entry eintrag) (princ "\n[WEICHE] Abgebrochen.") ) (princ) diff --git a/data/dxf/834372115_symbol.dwl b/data/dxf/834372115_symbol.dwl deleted file mode 100644 index 048e2f7..0000000 --- a/data/dxf/834372115_symbol.dwl +++ /dev/null @@ -1,3 +0,0 @@ -m.stangl -ENTW-NB08 -Mittwoch, Mai 06, 2026 07:13:34 \ No newline at end of file diff --git a/data/dxf/834372115_symbol.dwl2 b/data/dxf/834372115_symbol.dwl2 deleted file mode 100644 index 3c9eb1a..0000000 --- a/data/dxf/834372115_symbol.dwl2 +++ /dev/null @@ -1,7 +0,0 @@ - - -m.stangl -ENTW-NB08 - -Mittwoch, Mai 06, 2026 07:13:34 - diff --git a/dcl/omniflo_weichen.dcl b/dcl/omniflo_weichen.dcl new file mode 100644 index 0000000..e629c70 --- /dev/null +++ b/dcl/omniflo_weichen.dcl @@ -0,0 +1,65 @@ +// ============================================================ +// omniflo_weichen.dcl - Weichen-Auswahl Dialog fuer Omniflo +// Zeigt gefilterte Weichen mit Details und Filteroptionen an. +// ============================================================ + +omniflo_weichen : dialog { + label = "Omniflo Weichen Auswahl"; + + : row { + : popup_list { + key = "profiltyp"; + label = "Profiltyp-Auswahl:"; + width = 50; + } + } + + : row { + : boxed_radio_column { + key = "schaltung"; + label = "Schaltungstyp"; + : radio_button { key = "sch_alle"; label = "Alle"; value = "1"; } + : radio_button { key = "sch_m"; label = "Mechanisch (M)"; } + : radio_button { key = "sch_p"; label = "Pneumatisch (P)"; } + } + : boxed_radio_column { + key = "richtung"; + label = "Richtung"; + : radio_button { key = "ri_alle"; label = "Alle"; value = "1"; } + : radio_button { key = "ri_links"; label = "Links"; } + : radio_button { key = "ri_rechts"; label = "Rechts"; } + } + } + + : row { + : edit_box { + key = "val_sivasnr"; + label = "SivasNr:"; + width = 22; + is_enabled = false; + } + : edit_box { + key = "val_winkel"; + label = "Winkel:"; + width = 12; + is_enabled = false; + } + } + + : row { + : edit_box { + key = "val_breite"; + label = "Breite:"; + width = 12; + is_enabled = false; + } + : edit_box { + key = "val_laenge"; + label = "Laenge:"; + width = 12; + is_enabled = false; + } + } + + ok_cancel; +}