Compare commits

...

191 Commits

Author SHA1 Message Date
m.stangl aea8c5e029 Add CLAUDE.md for Claude Code guidance
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 23:22:47 +02:00
m.stangl eb04b9d73a Merge branch 'main' of https://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-05-06 19:16:53 +02:00
m.stangl 8e8ce9e676 Test der Grenzen impl. Doku erweitert 2026-05-06 19:16:13 +02:00
y.wang 9fa569e449 Die CP-Direction für Kurve 30 und 60 korrigiert. 2026-04-23 14:04:52 +02:00
y.wang b959208ddc Anpassung für Calculate Varioförderer 2026-04-10 11:29:48 +02:00
y.wang aeb34cd85a Merge branch 'main' of https://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-04-09 16:21:40 +02:00
y.wang a3715cd036 Die Funktion für CSV Export wurde angepasst. Der Varioförderer mit Gefällestrecke kann als Streckengruppe richtig exportiert Werden. 2026-04-09 16:21:37 +02:00
m.stangl 099630ca86 Schalter für minimiertes Laufen von SE dazu 2026-04-08 12:33:31 +02:00
m.stangl 0defdc24cc Pfadfeststellung ist nur noch in manage_interpreter.bat. Aufrufende Skripte etwas umgebaut 2026-04-08 12:17:16 +02:00
m.stangl fb25aca5ce Readme Doku aktualisiert. War veraltet. pip Abhängigkeiten in lib/requirements.txt ergänzt. Python Install Skript für venv dazu 2026-04-08 11:50:44 +02:00
m.stangl 901844fcb8 Alle Teile aus den Assemblies der Auf und Abwärtsbögen ausgeblendet, damit die Boundingboxen korrekt bestimmt werden 2026-04-08 11:11:48 +02:00
m.stangl a74f7e5e3a Verbinder für 12 Grad Elemente dazu 2026-04-07 14:04:10 +02:00
m.stangl af957c6ccd neue EInzelteile zur Verbindung und Abstandhalter hinzu 2026-04-07 14:00:43 +02:00
y.wang 6898a37570 die SVG Datei für Gefällebogen rechts korrigiert. 2026-04-02 15:27:22 +02:00
y.wang b72c792850 Merge branch 'main' of https://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-03-27 11:12:41 +01:00
y.wang b9a71ae07c Bug bei Funktion CalculateGefällestrecke behoben 2026-03-27 11:12:36 +01:00
m.stangl 8e36935c4e Gleichung korrigiert 2026-03-24 17:13:48 +01:00
m.stangl 8ad8297bce Gleichungen und Bilder zum Variofoerderer dazu 2026-03-24 16:56:56 +01:00
m.stangl 767883d406 categories und settings auch dazu. Geändert wegen Varioförderer 2026-03-17 14:21:34 +01:00
m.stangl b7bbee5429 Bogen Vario auf und ab dazu 2026-03-17 14:18:49 +01:00
m.stangl 48c0450fe8 Merge branch 'main' of https://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-03-16 17:44:27 +01:00
m.stangl cd1af92967 Abwärtsbogen der Varioförderer rein 2026-03-16 16:57:52 +01:00
y.wang 34135bcd28 Die Länge der TEF-Gerade wurde gerundet exportiert. 2026-03-16 14:57:44 +01:00
m.stangl cd318d4c0d Merge branch 'main' of https://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-03-16 14:56:47 +01:00
m.stangl 7287dad368 STL der Varioförderer Bögen aufwärts dazu 2026-03-16 14:03:10 +01:00
m.stangl b39442165e Abwärtsbägen dazu. Aufwärts mit Paarungen korrigiert 2026-03-13 18:41:10 +01:00
y.wang ff924b1e51 Ein Export von ILS Automation erfolgt nur, wenn ILS-Teile vorhanden sind. Ein Export von Omniflo Sum erfolgt nur, wenn Omniflo-Teile vorhanden sind 2026-03-10 11:37:22 +01:00
m.stangl 5b1eb66860 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-03-10 11:27:11 +01:00
y.wang de2e49cc96 Der Fehler beim Export des Varioförders mit Gefällestrecke wurde korrigiert. Ein einzelner Varioförderer mit Gefällestrecke wird nun als Streckengruppe exportiert. 2026-03-10 10:34:25 +01:00
m.stangl 478469780d Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-03-09 10:51:28 +01:00
m.stangl 70d7149683 Configs gelöscht. Aufwärtsbogen gebaut. Ein paar TEF Begleiter fehlen noch 2026-03-06 20:01:41 +01:00
y.wang 9d487dcba1 Das Export bei Variofoerderer mit Gefällestrecke wurde korrigiert. das Varario wurde nicht als ein einzelnes Objekt sonder als eine Streckengruppe exportiert. 2026-03-06 14:06:47 +01:00
y.wang 2af0c72cac Alle Verbindungmöglichkeiten mit TEF Polylinie sind eingepflegt. 2026-03-05 15:07:33 +01:00
y.wang 76d8829ef5 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-03-05 11:37:10 +01:00
y.wang bd951d2dd2 Die Linkclass für TEFWeichen sind korrigiert. 2026-03-05 11:37:04 +01:00
m.stangl 650cfadc71 Die Vario Bögen auf und ab als leere Assemblies hinzugefügt. Jetzt können die Componenten zusammengebaut werden 2026-03-04 16:59:17 +01:00
m.stangl 4c741a0783 Einzelteile für Variobogen hinzugefügt 2026-03-04 16:30:47 +01:00
y.wang 2ad5433503 Funktion getItemsConnectedNow wurde gebaut, Sollen OFBogen und OFGrade seine Höhe ändert, findet diese Funktion das aktuell mit OFBogen oder OF Grade verbundene Kettenförderer und passt dessen Höhenunterschied und Länge neu an. 2026-02-27 10:01:18 +01:00
y.wang 9f339a5495 merge aus der Fassung von mir, die aus der Historie gefixt wurde 2026-02-26 09:25:54 +01:00
m.stangl dad82b64f4 Sivasnummer für TEF Gerade wird im 2D Export mit raus geschrieben 2026-02-25 12:25:29 +01:00
m.stangl d5c58a65db 3er Bogen auf und Ab inklusive Umschliessung eingecheckt 2026-02-24 17:38:58 +01:00
m.stangl 0401d26d58 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-02-24 17:00:59 +01:00
m.stangl 58a70e1358 Bogen für 3 Grad modelliert, auf und ab 2026-02-24 16:59:19 +01:00
y.wang 51828ff7e6 Merge 2026-02-24 13:02:32 +01:00
y.wang de8c5112e0 Die Berechung des Kettenförderers wurde korrigiert. 2026-02-24 11:46:09 +01:00
s.hensch 1e16e4ab43 [Fix] Sivas Export für Automation korrigiert. Es werden nun die Motoren aller Varioförderer mitgezählt. 2026-02-24 11:15:29 +01:00
m.stangl ce007c080a Sivasnummer für TEF Gerade wird im 2D Export mit raus geschrieben 2026-02-23 11:52:12 +01:00
y.wang 747d08dd27 unnötige Datei sind bereinigt. 2026-02-17 11:19:14 +01:00
y.wang 3bf78f5d33 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-02-16 13:59:24 +01:00
y.wang bcb80a7ce2 Die Maße für TEF+Weichen, Weichen , TEf+Bogen sind korrigiert. 2026-02-16 13:59:10 +01:00
m.stangl 2315f9fc0b merge of main 2026-02-12 14:56:47 +01:00
m.stangl b7402fc043 Maße von TEF Motorstation links waren falsch. Aus rechts entnommen. Fix Create Prototype für TEF Gerade erzeugt jetzt eine Gerade der richtigen Länge 2026-02-12 14:55:05 +01:00
y.wang 60ca7ee656 Die Namen der init Json datei wurden angepasst. 2026-02-12 11:19:20 +01:00
m.stangl 8024aebf85 --add aus SaveSession entfernt und getestet 2026-02-12 10:37:28 +01:00
y.wang 732cb5d042 Motorseite für Variofoerder beim Export wurde angepasst 2026-02-06 11:11:58 +01:00
y.wang 68d4a074f2 Anpassung für Kettenförderer 2026-02-05 16:09:03 +01:00
y.wang 297dcd1a30 merge 2026-01-28 14:40:02 +01:00
y.wang f5dfec9276 Die Funktionen für Calculate KettenFoerderer wurden eingebaut und angepasst 2026-01-28 14:38:46 +01:00
m.stangl d7341f1140 Laden hatte auch ein Leerzeichenproblem 2026-01-27 14:32:30 +01:00
m.stangl 86519f20b3 Leerzeichen hinter SaveSession rausgeworfen. 2026-01-27 14:25:30 +01:00
m.stangl f66a63c4af merge 2026-01-27 14:24:00 +01:00
m.stangl e8d053ed48 Leerzeichen hinter SaveSession rausgeworfen. 2026-01-27 14:23:01 +01:00
P.wolok 91b5e0e5c9 Rechtschreibfehler behoben Eckradl zu Eckrad 2026-01-27 11:56:34 +01:00
stzeller 2d239606e9 Eine Fassung mit der in Param ergänzten Rückgabeliste der ehemals verbundenen Ids 2026-01-27 10:17:28 +01:00
Stefan Zeller 0ef3ae58ec Die Linked Shapes Liste wird jetzt angezeigt und ist durch Evaluate auch zu erkennen. 2026-01-27 10:06:16 +01:00
y.wang 7eedef7fcc der Exportfehler bei kopierten Gruppen korrigiert. 2026-01-26 09:06:00 +01:00
y.wang 8d9d70f2fc Merge 2026-01-21 13:47:38 +01:00
y.wang ed5b339a45 Einige Fehler beim Export korrigiert. 2026-01-21 13:46:47 +01:00
m.stangl ec89d5e380 Fix: Eckrad 2026-01-20 15:43:34 +01:00
m.stangl 76a7b32e1f Fix: Eckrad 2026-01-20 15:43:06 +01:00
m.stangl 346f416930 CSV Export ergänzt von BTMT-Be- und Entladung. UZS oder GUZS des Eckrades ebenfalls ins Csv File. 2026-01-20 15:14:21 +01:00
y.wang 97b78cb909 Die Funktion Calculate KettenFoerderer wurde gebaut 2026-01-20 10:49:06 +01:00
y.wang c1b66e0157 Der Interface für KF wurde angepasst. 2026-01-16 14:10:20 +01:00
y.wang c705407a33 Die FamilyKlasse für KF wurde korrigiert. 2026-01-16 13:28:36 +01:00
y.wang cb0c400963 Die fehlende Datei für KF sind hinzugefügt. 2026-01-16 13:13:16 +01:00
y.wang feb059ca8b Kettenförderer in 2D Wizard ist eingepflegt. 2026-01-16 12:41:28 +01:00
Stefan Zeller 23e9259873 Zip enthält keine .stl Dateien mehr. 2026-01-15 17:56:37 +01:00
y.wang 5f0cbf3c2e Merge 2026-01-15 15:27:51 +01:00
y.wang bbef3d1d1b den Fehler bei Verbindung GF-Kurven korrigiert. 2026-01-15 15:26:52 +01:00
Stefan Zeller 2cae74a943 Zip does not include .stl Files. The workaround with python script is not needed anymore. 2026-01-15 13:55:11 +01:00
s.hensch 6097190079 STL der TEF Gerade wird nun korrekt geladen 2026-01-15 12:10:43 +01:00
s.hensch 6167b57a7d merge 2026-01-15 11:59:22 +01:00
y.wang bb0e9b617f Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-01-15 11:53:24 +01:00
y.wang 9768ca1fae Fehler bei Sivas Export Funktion korrigiert. 2026-01-15 11:53:20 +01:00
s.hensch c7968ad6b3 Omniflo TEF Gerade mit 3D STL Darstellung eingefügt; Einfügen und Verbinden der CPs funktioniert nun. 2026-01-15 11:41:30 +01:00
m.stangl dff8bf443c eine Created...txt entfernt 2026-01-15 11:37:49 +01:00
m.stangl 8dc9e4e3b1 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-01-15 11:32:38 +01:00
m.stangl 1cf705da3b TEFOmniflo in OmniflowTEF als neuer Standard umbenannt 2026-01-15 11:32:12 +01:00
y.wang 8c9cd0e67c Merge 2026-01-15 11:14:02 +01:00
y.wang d57e9c7895 Die Gefällestrecken bei Vario(Berechnung mit Gefälle) können jetzt korrekt exportiert werden. 2026-01-15 11:11:43 +01:00
m.stangl c7855deb06 hat_Motor und hat_Umlenkung am Varioförderer rausgeworfen, da vier neue Flags dafür existieren 2026-01-14 17:09:48 +01:00
m.stangl 900632594a Test ob die Fehlermeldung bei Mark durch eine Option weg geht 2026-01-08 16:48:50 +01:00
m.stangl aa796ed900 Eventliste und Callbacks von S_Gerade_TEF eingestellt 2026-01-08 14:51:21 +01:00
m.stangl 25cc46d835 Winkel und Länge der GF des Varioförderers mit exportiert 2026-01-08 14:50:42 +01:00
m.stangl 0ebbfabb9d Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-01-08 14:05:06 +01:00
y.wang 2d56e31911 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2026-01-08 14:04:06 +01:00
y.wang 06b292539b Bei der TEF Gerade fehlten .xml und .txt Datei. 2026-01-08 14:03:49 +01:00
m.stangl 3d07b213eb CSV Export um die neuen Werte des Varioförderers ergänzt 2026-01-08 13:48:25 +01:00
m.stangl cdb15ee461 Flagliste bei Varioförderer dazu gemacht: Motorstation hinten, Spannstation vorn, Ausschleuselement vorn, Einschleuselement hinten. Gui ebenfalls ergänzt 2026-01-08 11:42:53 +01:00
y.wang 58a5597111 Merge 2026-01-07 10:19:58 +01:00
y.wang bb86139e95 Die Directions für Gefällekurven in 2D Wizard sind korrigiert. 2026-01-07 10:11:23 +01:00
P.wolok e74b910ad7 Korrektur für Ils 2d Export 2026-01-07 09:28:10 +01:00
m.stangl b507772587 Auruf der externen Exe im Sessions Ordner dazu, der die zip Dateien verkleinert, indem alle .stl Dateien rausgeschmissen werden. 2025-12-22 12:11:45 +01:00
m.stangl 537b453b4d Exe zum Entfernen der in einem zip enthaltenen .stl Dateien hinzu 2025-12-22 12:10:20 +01:00
m.stangl a1bd089b01 encoding problem war noch nicht für alle Varianten gelöst 2025-12-22 11:58:26 +01:00
m.stangl a9015ade15 small fix of the skript wegen Deutscher Umlaute 2025-12-22 11:24:52 +01:00
m.stangl 56e3358e97 bat Dateien zum Erstellen einer .exe aus einem Python Skript dazu 2025-12-19 19:58:04 +01:00
m.stangl 84676b8a06 Skript zur Reduktion der Dateigrösse durch Entfernung der enthaltenden .stl Dateien. 2025-12-19 19:40:37 +01:00
m.stangl 4964f212d2 Kettenförderer Configs dazu 2025-12-19 18:23:42 +01:00
m.stangl c84ea82c63 lokale verwaltete stl Dateien mit eingecheckt. 2025-12-19 18:21:42 +01:00
m.stangl 49f7ec689b IsOmniflo implementiert 2025-12-19 18:04:46 +01:00
s.hensch f679ef0d72 TEF Gerade hinzugefügt mit 3D stl Vorschau; Für Fahrstrecke Omniflo sind auf der Linie nun jeweils immer zwei CPs vorhanden, um beide Richtungen (0 und 180 grad) beim Verbinden anbieten zu können, ohne die UI erneut zu öffnen; Labels für CPs hinzugefügt, um die verschiedenen CPs Typen an einem Objekt unterscheiden zu können (zB TEF und Fahrstrecke an einer Umlenkstation eines TEFs) 2025-12-18 12:59:13 +01:00
y.wang c44761655b die Kurven für Gefälle und Förderer wurde angepasst 2025-12-17 15:31:17 +01:00
y.wang 19408c7276 Für Ab-Varioförderer kann mit GF berechnet werden 2025-12-15 12:58:58 +01:00
y.wang 6175027ab9 Json für ILS KurveFörderer wurde korrigiert. 2025-12-08 13:54:26 +01:00
y.wang 8c1e98c52e Anpassung für VarioFörderer 2025-12-03 14:47:09 +01:00
y.wang 88533a2c34 Das Interface für KurveFörderer wurde angepasst. 2025-12-03 13:38:35 +01:00
m.stangl f5691dd341 einfaches Bauteil für die Verbindung des oberen und unteren Kettenförderelements erstellt. Nur Querschnitt korrekt. Keine Stege, sondern durchgehend 2025-12-01 16:15:28 +01:00
m.stangl 1b59981cea Stl dateien der Kettenförderer hinzu 2025-12-01 16:13:47 +01:00
y.wang 19207f949d Die PNGs für Vario-Kurven sind updatet 2025-12-01 10:42:23 +01:00
y.wang cf55ee51c8 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2025-12-01 09:43:12 +01:00
y.wang 6be6076bdd 2D für Vario Kurve wurde updatet 2025-12-01 09:43:04 +01:00
m.stangl cb3e5c7f16 merge 2025-11-26 12:55:35 +01:00
m.stangl 103bd9bea8 TEFGerade soll gestretcht werden 2025-11-26 12:54:29 +01:00
P.wolok ce43b868f4 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2025-11-26 12:26:47 +01:00
P.wolok 23e3bd1cbe bug von letzten pull gefixed 2025-11-26 12:25:59 +01:00
m.stangl 0cf9b6d8e5 Auf und ab bei Kettenförderer dazu 2025-11-26 12:09:24 +01:00
P.wolok e0cf0126ae Die Höhe der Gefällestrecke wird jetzt sofort nach der berechnung gerundet 2025-11-26 11:54:23 +01:00
m.stangl e3570d1287 Fixes an de Gui Funktionen für den Kettenförderer 2025-11-25 15:06:56 +01:00
m.stangl 01416077ed Merge 2025-11-25 14:32:06 +01:00
m.stangl 6026958a89 Kettenförderer als eigenes Item dazu 2025-11-25 14:28:56 +01:00
y.wang 70e3f2682b Merge 2025-11-24 12:31:26 +01:00
y.wang be131f6f5c Die Reihenfolge der Element-IDs in einer kopierten Gruppe wurde fixiert. 2025-11-24 12:29:35 +01:00
m.stangl e1ba4c9fd1 Konflikt gelöst. Distance Funktion dazu 2025-11-21 20:24:41 +01:00
m.stangl 5090664004 distance Funktion fertiggestellt 2025-11-21 19:49:52 +01:00
y.wang ec4bc1974a merge remote changes, keep local MAIN_SSG.rdx 2025-11-19 13:00:57 +01:00
y.wang 910dabff77 Unlink Funtion für GF wurde angepasst 2025-11-19 12:44:10 +01:00
m.stangl fe7897c699 STL von Entladung dazu 2025-11-18 17:13:25 +01:00
m.stangl 1fe688241c Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2025-11-18 14:32:21 +01:00
m.stangl 6a33315163 BT Beladung als STL und SolidEdge file dazu 2025-11-18 14:30:47 +01:00
y.wang cd47b68bbc Merge 2025-11-18 14:22:40 +01:00
y.wang 5640e4f963 Kleine Fehler bei Exportfunktion wurde korrigiert. 2025-11-18 12:51:21 +01:00
m.stangl b282b9303c Eckrad gibt Drehrichtung mit aus 2025-11-18 10:38:51 +01:00
m.stangl 8a0d890ef5 Feststellen der Connection Point NAmen aus der Linie 2025-11-14 16:52:14 +01:00
m.stangl 77c2c4410d Link mit Linie zwischen OFBogen und TEFGerade erzeugt. Linienlänge verängert dann TEFGerade 2025-11-13 18:53:12 +01:00
y.wang 9024483343 Merge Branch von YW FeatGefaelle 2025-11-12 13:13:57 +01:00
y.wang 4b67b45a18 Die Funtktionen für GF sind angepasst, L1 kann L_th übernehmen 2025-11-12 12:41:24 +01:00
m.stangl 6da0fed80a Defaults für die Motor und Umlenkstation gesetzt 2025-11-11 14:42:40 +01:00
m.stangl 3f948874e2 FIX:Kreiselart PIN oder Standard wird exportiert 2025-11-11 13:02:25 +01:00
m.stangl 59154a5394 Merge 2025-11-11 10:49:42 +01:00
m.stangl 682f8b0067 Strukt des Varioförderers und der CSV Export Typ um Flags Motor und Spannstation ergänzt. 2025-11-11 10:48:43 +01:00
P.wolok 55bd3aaea5 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/SSG-Ruledesigner-Konfigurator 2025-11-10 15:56:42 +01:00
P.wolok dc57ad918c Konnection point beim Vario Förder umbenannt cp2 zu cp0 2025-11-10 15:56:35 +01:00
y.wang ad9b29d065 Bereinigung 2025-11-10 11:04:11 +01:00
y.wang 897bdb3fe1 unbenutzte STL wurden gelöscht. 2025-11-10 11:00:41 +01:00
y.wang a17ef5dfce STL für s_Kurve_90_R_G_richtig gelöscht 2025-11-10 10:54:25 +01:00
y.wang 9ec9667a43 unbenutzte STL wurde gelöscht. 2025-11-10 10:13:00 +01:00
y.wang dfd960ffee alte TEF Bögen entfernt 2025-11-10 09:57:39 +01:00
y.wang dce67a6f8e der Interface für GF : Haken für Fixierung bei Anbindung eines Kreisels ausgeblendet. 2025-11-10 09:50:52 +01:00
y.wang b14a5f36f2 TEF Umlenkspannst. sind angepasst. 2025-11-10 09:23:08 +01:00
m.stangl 8b827ccb7c Erzeugungsfunktion der TEFGerade mit denselben Werten versehen die auch ein Objekt aus dem Menübaum mitbekommt 2025-11-06 17:13:55 +01:00
m.stangl 0e8034b352 TEF Gerade als Element der library hinzugefügt 2025-11-06 17:13:01 +01:00
m.stangl 9750ff508c TEF Gerade png und xml file dazu 2025-11-06 16:36:33 +01:00
m.stangl 8984a4b5e3 erste Funktion createTEFConnection impl.; merge 2025-11-03 17:15:11 +01:00
m.stangl bf8d17731a erste Funktion createTEFConnection impl. 2025-11-03 17:14:08 +01:00
m.stangl bbcc736d69 alte Testszenarios gelöscht. Library geht nicht mehr mit dem aktuellen Stand 2025-11-03 16:43:54 +01:00
y.wang 40a5eb9f1c Merge 2025-10-23 08:09:37 +02:00
y.wang 92bb102951 kleine Anpassung 2025-10-23 08:06:40 +02:00
s.hensch 54e1eca9df Merge Korrektur 2025-10-23 08:01:51 +02:00
s.hensch 30e1895541 Fehlerhafter Merge repariert 2025-10-23 07:58:59 +02:00
s.hensch 5a4eb67291 Revert "Default Offsets für Ein- und AUsschleuselement hinzugefügt. Nur zum Testen, reale Werte folgen in neuem Commit"
This reverts commit 23ffe308cf.
2025-10-23 07:33:48 +02:00
s.hensch 23ffe308cf Default Offsets für Ein- und AUsschleuselement hinzugefügt. Nur zum Testen, reale Werte folgen in neuem Commit 2025-10-23 07:29:12 +02:00
m.stangl 33c5a18d03 Mustern geht jetzt für beliebige Weichen 2025-10-22 16:58:30 +02:00
s.hensch fe52ade1d9 Alter Etagenförderer auskommentiert, da nicht mehr verwendet. 2025-10-21 10:37:12 +02:00
m.stangl 0dc84e89cc Musterbeispiel funktioniert für ein Objekt. 2025-10-20 17:08:19 +02:00
m.stangl 9391893cc5 Hilfsfunktionen für die Rückgabe von delta_s und delta_h in Abhängigkeit des Steigungswinkels gebaut 2025-10-20 14:10:51 +02:00
m.stangl 92d178a34d Routine zum Einlesen der ILS Maße impl. 2025-10-20 13:06:33 +02:00
m.stangl 4b4a6b03de Winkelabhängig die Längen einlesen. Unterschiedlich für Förderung auf oder ab 2025-10-20 11:31:57 +02:00
m.stangl ad87c91311 Korrektur der Config. Ist eine Deltaweiche, keine Dreifach 2025-10-20 11:31:28 +02:00
s.hensch 54ed41842c Minimale Längen- und Höhendifferenz für Varioförderer als Grenzwerte hinzugefügt, um im RDC eine korrekte Berechnung durchführen zu können 2025-10-17 11:49:51 +02:00
m.stangl 5cdf43c7c3 getOppositeConnectionPoint impl. Bugfixes 2025-10-16 17:04:22 +02:00
y.wang 930a990e80 die Funktion für Muster angepasst 2025-10-15 15:50:18 +02:00
m.stangl 5d85fad2b5 Fixes der Typen 2025-10-10 15:01:59 +02:00
m.stangl cf18b3c614 Zwischenstand 2025-10-10 13:02:47 +02:00
m.stangl c28e9160da Fehler aus der Gruppenroutine raus. Neuverküpfung an hart verdrahtete connection points geht noch nicht. 2025-10-08 17:31:24 +02:00
m.stangl 75796fdaab Erste Fassung der Vernetzung mehrerer Gruppen implementiert 2025-10-07 16:59:47 +02:00
m.stangl 3b26e63da5 Oberfläche kommt nur, wenn Omniflo Elemente ausgewählt sind zur Mustererzeugung 2025-10-07 14:10:46 +02:00
s.hensch cabf692b4c Undo commit 29c4491198 da der Fehler nicht auf Seite des RDC sondern im Skript plant2dxf bestand. 2025-10-07 13:51:45 +02:00
s.hensch b4f4aebf78 Merge fehlgeschlagen, vorherige Fassung wieder hergestellt 2025-10-07 13:46:42 +02:00
s.hensch 2ffc42fe09 Undo des Commits 29c4491198, da Höhen im plant2dxf schon korrekt verarbeitet werden. Fix war nicht notwendig. 2025-10-07 13:11:57 +02:00
s.hensch aa7a3ca282 Revert "Fix CSV Export: HoeheOben und HoeheUnten wird nun korrekt exportiert (HoeheOben immer größer als HoeheUnten)"
This reverts commit 29c4491198.
2025-10-07 13:04:22 +02:00
501 changed files with 55199 additions and 16945 deletions
+14 -6
View File
@@ -1,10 +1,18 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
setlocal
SET "MANAGE=%~dp0manage_interpreter.bat"
call setenv.bat
CALL "%MANAGE%" activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
REM Beispielaufruf mit Parametern:
REM --in: Ordner mit .par-Dateien (optional. Standard: Input)
REM --out: Zielverzeichnis (optional. Standard: Work)
pushd "%PROJECT%"
python %PROJECT_LIB%\create_assemblies.py %*
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.create_assemblies %*
set PYTHON_EXIT=%ERRORLEVEL%
popd
CALL "%MANAGE%" deactivate
exit /b %PYTHON_EXIT%
+15 -3
View File
@@ -1,6 +1,18 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
setlocal
SET "MANAGE=%~dp0manage_interpreter.bat"
call setenv.bat
CALL "%MANAGE%" activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
python "%PROJECT_LIB%\diff_dimensions.py" %*
pushd "%PROJECT%"
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.diff_dimensions %*
set PYTHON_EXIT=%ERRORLEVEL%
popd
CALL "%MANAGE%" deactivate
exit /b %PYTHON_EXIT%
+1 -1
View File
@@ -23,4 +23,4 @@ set /p TOLERANCE=Gib die Toleranz ein (Standard: %DEFAULT_TOLERANCE%):
if "%TOLERANCE%"=="" set "TOLERANCE=%DEFAULT_TOLERANCE%"
REM Aufruf des Skripts mit den eingegebenen oder Standardwerten
call diff_dimensions.bat --type %TYPE% --json_2d %JSON2D% --json_dimensions %JSONDIM% --tolerance %TOLERANCE%
call "%~dp0diff_dimensions.bat" --type %TYPE% --json_2d %JSON2D% --json_dimensions %JSONDIM% --tolerance %TOLERANCE%
+1 -1
View File
@@ -1,4 +1,4 @@
@echo off
call setenv.bat
call "%~dp0setenv.bat"
start
+14 -6
View File
@@ -1,10 +1,18 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
setlocal
SET "MANAGE=%~dp0manage_interpreter.bat"
call setenv.bat
CALL "%MANAGE%" activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
REM Beispielaufruf mit Parametern:
REM --in: Ordner mit .asm-Dateien (optional. Standard: Work)
REM --out: Zielverzeichnis (optional. Standard: Work\stl_export)
pushd "%PROJECT%"
python %PROJECT_LIB%\read_variables.py %*
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.read_variables %*
set PYTHON_EXIT=%ERRORLEVEL%
popd
CALL "%MANAGE%" deactivate
exit /b %PYTHON_EXIT%
+15
View File
@@ -0,0 +1,15 @@
call setenv.bat
if not exist %PROJECT%\.venv (
ECHO Initialisiere Python virtual environment...
py -m venv %PROJECT%\.venv --upgrade-deps
ECHO Erfolgreich.
call %PROJECT%\.venv\Scripts\activate.bat
ECHO Installiere erforderliche Python Packages...
pip install -r %PROJECT_LIB%/requirements.txt -q
ECHO Erfolgreich
deactivate
) ELSE (
ECHO Erforderliche Python Packages bereits installiert!
)
+35
View File
@@ -0,0 +1,35 @@
@echo off
CALL "%~dp0setenv.bat"
IF /I "%1"=="activate" GOTO activate
IF /I "%1"=="deactivate" GOTO deactivate
IF /I "%1"=="activate_interpreter" GOTO activate
IF /I "%1"=="deactivate_interpreter" GOTO deactivate
GOTO :eof
:activate
REM Interpreter wählen
IF DEFINED NETWORK_PYTHON (
SET PYTHON_EXE=%NETWORK_PYTHON%\python.exe
) ELSE (
SET PYTHON_EXE=python
)
REM venv sicherstellen
IF NOT EXIST "%PROJECT%\.venv" (
"%PYTHON_EXE%" -m venv "%PROJECT%\.venv"
)
REM venv aktivieren
CALL "%PROJECT%\.venv\Scripts\activate.bat"
REM Interpreter festnageln
SET VIRTUAL_ENV_PYTHON=%PYTHON_EXE%
GOTO :eof
:deactivate
CALL "%PROJECT%\.venv\Scripts\deactivate.bat"
SET VIRTUAL_ENV_PYTHON=
GOTO :eof
+14 -6
View File
@@ -1,10 +1,18 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
setlocal
SET "MANAGE=%~dp0manage_interpreter.bat"
call setenv.bat
CALL "%MANAGE%" activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
REM Beispielaufruf mit Parametern:
REM --in: Ordner mit .asm-Dateien (optional. Standard: Work)
REM --out: Zielverzeichnis (optional. Standard: Work\stl_export)
pushd "%PROJECT%"
python %PROJECT_LIB%\save_stl.py %*
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.save_stl %*
set PYTHON_EXIT=%ERRORLEVEL%
popd
CALL "%MANAGE%" deactivate
exit /b %PYTHON_EXIT%
+8 -11
View File
@@ -1,17 +1,14 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
pushd %~dp0\..
REM for /f "delims=" %%i in ('git rev-parse --show-toplevel') do set SSG_RD_DIR=%%i
set PROJECT=%cd%
set PROJECT_DIR=%cd%
set PROJECT_BIN=%PROJECT_DIR%\bin
set PROJECT_LIB=%PROJECT_DIR%\lib
set PROJECT_WORK=%PROJECT_DIR%\work
set PROJECT_DATA=%PROJECT_DIR%\data
set PROJECT_INPUT=%PROJECT_DIR%\input
set PROJECT_BIN=%PROJECT%\bin
set PROJECT_LIB=%PROJECT%\lib
set PROJECT_WORK=%PROJECT%\work
set PROJECT_DATA=%PROJECT%\data
set PROJECT_INPUT=%PROJECT%\input
set PROJECT_TEMPLATE=\\ssg.local\freigaben\RuleDesigner\Templates\CreateAssemblies
if not exist %PROJECT_WORK% mkdir %PROJECT_WORK%
@@ -23,4 +20,4 @@ set PROJECT_JSON_TEFBOGEN=%SSG_RD_DIR%\SVGs\Omniflo\python\TEFBogen\json
set PROJECT_JSON_TEFWEICHE=%SSG_RD_DIR%\SVGs\Omniflo\python\TEFWeiche\json
popd
goto :eof
goto :eof
+153 -30
View File
@@ -1,39 +1,60 @@
# Dokumentation: create_assemblies, save_stl & read_variables
# Dokumentation: CAD-Automatisierungsskripte
## Übersicht
| Skript | Batch-Datei | Zweck |
| ------ | ----------- | ----- |
| `lib/create_assemblies.py` | `bin/create_assemblies.bat` | Erzeugt .asm-Baugruppen aus .par-Dateien |
| `lib/save_stl.py` | `bin/save_stl.bat` | Exportiert .asm-Baugruppen als STL-Dateien |
| `lib/read_variables.py` | `bin/get_dimensions.bat` | Liest Maße aus .par-Dateien und speichert als JSON |
| `lib/diff_dimensions.py` | `bin/diff_dimensions.bat` | Vergleicht 3D-Maße (JSON) mit 2D-Zeichnungsmaßen |
| *(kein Python)* | `bin/get_all_differences.bat` | Interaktiver Wrapper für diff_dimensions |
| *(kein Python)* | `bin/get_cmd.bat` | Öffnet Kommandozeile mit gesetzten Umgebungsvariablen |
| *(kein Python)* | `bin/setenv.bat` | Setzt alle Umgebungsvariablen für das Projekt |
---
## 1. create_assemblies
### Zweck
Das Skript erstellt für jede .par-Datei im Eingabeordner eine neue .asm-Baugruppe, indem es eine Platzhalter-Baugruppe (dummy.asm) kopiert und darin die Platzhalter-Komponente (dummy.par) durch die jeweilige .par-Datei ersetzt.
### Aufrufmöglichkeiten
#### Über die Batch-Datei (empfohlen unter Windows):
**Über die Batch-Datei (empfohlen unter Windows):**
```bat
bin\create_assemblies.bat --in <Eingabeordner> --out <Ausgabeordner>
```
- Die Batch-Datei setzt Umgebungsvariablen und ruft das Python-Skript mit den übergebenen Parametern auf.
#### Direkt über die Kommandozeile:
Die Batch-Datei setzt Umgebungsvariablen und ruft das Python-Skript mit den übergebenen Parametern auf.
**Direkt über die Kommandozeile:**
```sh
python lib/create_assemblies.py --in <Eingabeordner> --out <Ausgabeordner>
```
#### Parameter:
**Parameter:**
- `--in`: Pfad zum Ordner mit .par-Dateien (optional, Standard: Umgebungsvariable PROJECT_INPUT oder ./input)
- `--out`: Zielordner für die erzeugten .asm-Dateien (optional, Standard: ./work)
### Input/Output
- **Input:**
- **Input:**
- .par-Dateien im angegebenen Eingabeordner
- dummy.asm und dummy.par im data/-Verzeichnis (werden als Vorlage und Platzhalter verwendet)
- **Output:**
- dummy.asm und dummy.par im Netzwerkpfad PROJECT_TEMPLATE (werden als Vorlage und Platzhalter verwendet)
- **Output:**
- Für jede .par-Datei wird eine .asm-Datei im Ausgabeverzeichnis erzeugt.
- Temporäre Dateien (_temp.asm, .cfg) werden nach Verarbeitung gelöscht.
### Hinweise
- Solid Edge muss installiert sein, da das Skript über COM darauf zugreift.
- Die Platzhalter-Komponente in dummy.asm muss exakt dummy.par heißen.
- Die Vorlage (dummy.asm) wird aus dem Netzwerkpfad `PROJECT_TEMPLATE` geladen (Standard: `\\ssg.local\freigaben\RuleDesigner\Templates\CreateAssemblies`).
- Fehlerhafte oder fehlende Platzhalter werden übersprungen und führen nicht zum Abbruch des gesamten Prozesses.
---
@@ -41,34 +62,40 @@ python lib/create_assemblies.py --in <Eingabeordner> --out <Ausgabeordner>
## 2. save_stl
### Zweck
Das Skript exportiert alle .asm-Baugruppen in einem Ordner als STL-Dateien. Es dient dazu, die zuvor erzeugten Baugruppen für die Weiterverarbeitung (z.B. 3D-Druck) bereitzustellen.
Das Skript exportiert alle .asm-Baugruppen in einem Ordner als STL-Dateien. Es dient dazu, die zuvor erzeugten Baugruppen für die Weiterverarbeitung (z.B. 3D-Druck oder Visualisierung) bereitzustellen.
### Aufrufmöglichkeiten
#### Über die Batch-Datei (empfohlen unter Windows):
**Über die Batch-Datei (empfohlen unter Windows):**
```bat
bin\save_stl.bat --in <Eingabeordner> --out <Ausgabeordner>
```
- Die Batch-Datei setzt Umgebungsvariablen und ruft das Python-Skript mit den übergebenen Parametern auf.
#### Direkt über die Kommandozeile:
Die Batch-Datei setzt Umgebungsvariablen und ruft das Python-Skript mit den übergebenen Parametern auf.
**Direkt über die Kommandozeile:**
```sh
python lib/save_stl.py --in <Eingabeordner> --out <Ausgabeordner>
```
#### Parameter:
**Parameter:**
- `--in`: Pfad zum Ordner mit .asm-Dateien (optional, Standard: Umgebungsvariable PROJECT_WORK oder ./work)
- `--out`: Zielordner für die STL-Dateien (optional, Standard: ./work/STL_Export)
### Input/Output
- **Input:**
- **Input:**
- .asm-Dateien im angegebenen Eingabeordner (z.B. aus create_assemblies)
- **Output:**
- **Output:**
- Für jede .asm-Datei wird eine .stl-Datei im Ausgabeverzeichnis erzeugt.
- Temporäre .cfg- und .log-Dateien werden nach dem Export gelöscht.
### Hinweise
- Solid Edge muss installiert sein, da das Skript über COM darauf zugreift.
- Das Skript ist robust gegenüber Fehlern beim Export einzelner Dateien (Fehler werden gemeldet, der Prozess läuft weiter).
- Nach dem Export werden überflüssige .cfg- und .log-Dateien im Eingabe- und Ausgabeverzeichnis entfernt.
@@ -78,36 +105,46 @@ python lib/save_stl.py --in <Eingabeordner> --out <Ausgabeordner>
## 3. read_variables
### Zweck
Das Skript liest aus allen .par-Dateien in einem Verzeichnis die benutzerdefinierten Variablen 'Mittiges_Koordinatensystem_X_Translation' und 'Mittiges_Koordinatensystem_Y_Translation' aus und speichert die Werte als Breite und Höhe in einer JSON-Datei.
Das Skript liest aus allen .par-Dateien in einem Verzeichnis die benutzerdefinierten Variablen `Mittiges_Koordinatensystem_X_Translation` und `Mittiges_Koordinatensystem_Y_Translation` aus und speichert die Werte als Breite und Höhe in einer JSON-Datei.
### Aufrufmöglichkeiten
#### Über die Kommandozeile oder Batch-Datei:
**Über die Batch-Datei (empfohlen unter Windows):**
```bat
bin\get_dimensions.bat --in <Eingabeordner> --out <Ausgabeordner>
```
**Direkt über die Kommandozeile:**
```sh
python lib/read_variables.py --in <Eingabeordner> --out <Ausgabeordner>
```
#### Parameter:
**Parameter:**
- `--in`: Pfad zum Ordner mit .par-Dateien (optional, Standard: Umgebungsvariable PROJECT_INPUT oder ./input)
- `--out`: Zielordner für die JSON-Ausgabe (optional, Standard: Umgebungsvariable PROJECT_WORK oder ./work)
### Input/Output
- **Input:**
- **Input:**
- .par-Dateien im angegebenen Eingabeordner
- **Output:**
- **Output:**
- Eine JSON-Datei im Ausgabeverzeichnis, benannt nach dem Eingabeordner (z.B. input.json), mit folgendem Aufbau:
```json
{
"Dateiname_ohne_Endung": {
"breite": <Wert>,
"hoehe": <Wert>
},
...
}
}
```
### Hinweise
- Solid Edge muss installiert sein, da das Skript über COM darauf zugreift.
- Die Variablen werden mit 2000 multipliziert und auf drei Nachkommastellen gerundet.
- Falls eine .par-Datei die benötigten Variablen nicht enthält, wird sie übersprungen.
@@ -115,14 +152,100 @@ python lib/read_variables.py --in <Eingabeordner> --out <Ausgabeordner>
---
- **Umgebungsvariablen:**
Die Batch-Dateien rufen vorab setenv.bat auf, um Umgebungsvariablen wie PROJECT_LIB, PROJECT_WORK, PROJECT_INPUT, PROJECT_DATA zu setzen. Diese sollten korrekt konfiguriert sein.
- **Voraussetzungen:**
- Python (mit win32com)
- Solid Edge (für COM-Zugriff)
- **Fehlerbehandlung:**
Fehlerhafte oder fehlende Dateien werden übersprungen, der Prozess läuft weiter.
## 4. diff_dimensions
### Zweck
Das Skript vergleicht 3D-Bauteilmaße (aus einer JSON-Datei erzeugt von `read_variables`) mit 2D-Zeichnungsmaßen (aus einer JSON-Datei des SVG-Editors). Einträge, bei denen Breite oder Höhe außerhalb der Toleranz abweichen, werden in einer Ausgabe-JSON gespeichert. So lassen sich Inkonsistenzen zwischen 3D-Modell und 2D-Zeichnung schnell identifizieren.
### Aufrufmöglichkeiten
**Über die Batch-Datei:**
```bat
bin\diff_dimensions.bat --type <Typ> --json_dimensions <3D-JSON> --json_2d <2D-JSON> [--tolerance <Wert>] [--result <Ausgabedatei>]
```
**Interaktiv (mit Abfragen):**
```bat
bin\get_all_differences.bat
```
Fragt Typ, Dateinamen und Toleranz interaktiv ab und ruft dann `diff_dimensions.bat` auf.
**Direkt über die Kommandozeile:**
```sh
python lib/diff_dimensions.py --type <Typ> --json_dimensions <3D-JSON> --json_2d <2D-JSON>
```
**Parameter:**
- `--type`: Art des Bauteils: `BOGEN`, `WEICHE`, `TEFBOGEN` oder `TEFWEICHE` (bestimmt das Eingabeverzeichnis für die 2D-JSON)
- `--json_dimensions`: Dateiname der 3D-Maße-JSON (aus `read_variables`, liegt in PROJECT_WORK)
- `--json_2d`: Dateiname der 2D-Maße-JSON (liegt im typabhängigen Verzeichnis)
- `--tolerance`: Toleranz in Millimetern (optional, Standard: `0.05`)
- `--result`: Dateiname der Ausgabedatei (optional, Standard: `Differenzen_2D_3D.json`)
- `--output_dir`: Ausgabeverzeichnis (optional, Standard: Umgebungsvariable PROJECT_WORK)
### Input/Output
- **Input:**
- `--json_dimensions`: JSON-Datei mit 3D-Maßen (Schlüssel: SIVAS-Nummer, Felder: `breite`, `hoehe`)
- `--json_2d`: JSON-Datei mit 2D-Maßen (Liste mit Feldern `Sivasnr`, `Objekte_width_mm`, `Objekte_height_mm`)
- **Output:**
- JSON-Datei mit allen Einträgen, deren Maße außerhalb der Toleranz liegen, inkl. Differenzwerten (`w_diff`, `h_diff`). Bei übereinstimmenden Maßen wird keine Ausgabedatei erzeugt.
### Beispielaufruf
```bat
bin\diff_dimensions.bat --type BOGEN --json_dimensions Bogen_3D.json --json_2d Bogen_2D.json --tolerance 0.1 --result diff_bogen.json
```
### Hinweise
- Erfordert kein Solid Edge — reine JSON-Verarbeitung.
- Die Umgebungsvariablen `PROJECT_JSON_BOGEN`, `PROJECT_JSON_WEICHE`, `PROJECT_JSON_TEFBOGEN`, `PROJECT_JSON_TEFWEICHE` müssen für den `--type`-Parameter korrekt gesetzt sein (via setenv.bat).
---
Wenn du eine Beispielkonfiguration oder weitere Details (z.B. zu setenv.bat oder den Umgebungsvariablen) benötigst, sag gerne Bescheid!
## 5. Batch-Hilfsskripte
### setenv.bat
Setzt alle Projektumgebungsvariablen. Wird von allen anderen Batch-Dateien automatisch aufgerufen.
| Variable | Standardwert | Bedeutung |
| -------- | ------------ | --------- |
| `PROJECT_DIR` | Verzeichnis des Code-Ordners | Wurzelverzeichnis des Projekts |
| `PROJECT_BIN` | `%PROJECT_DIR%\bin` | Verzeichnis der Batch-Dateien |
| `PROJECT_LIB` | `%PROJECT_DIR%\lib` | Verzeichnis der Python-Skripte |
| `PROJECT_WORK` | `%PROJECT_DIR%\work` | Arbeitsverzeichnis (Zwischenergebnisse) |
| `PROJECT_DATA` | `%PROJECT_DIR%\data` | Datenverzeichnis |
| `PROJECT_INPUT` | `%PROJECT_DIR%\input` | Eingabeverzeichnis (.par-Dateien) |
| `PROJECT_TEMPLATE` | `\\ssg.local\freigaben\RuleDesigner\Templates\CreateAssemblies` | Netzwerkpfad zur dummy.asm-Vorlage |
| `PROJECT_JSON_BOGEN` | `%SSG_RD_DIR%\SVGs\Omniflo\python\OFBogen\json` | 2D-JSON-Verzeichnis für Bögen |
| `PROJECT_JSON_WEICHE` | `%SSG_RD_DIR%\SVGs\Omniflo\python\OFWeiche\json` | 2D-JSON-Verzeichnis für Weichen |
| `PROJECT_JSON_TEFBOGEN` | `%SSG_RD_DIR%\SVGs\Omniflo\python\TEFBogen\json` | 2D-JSON-Verzeichnis für TEF-Bögen |
| `PROJECT_JSON_TEFWEICHE` | `%SSG_RD_DIR%\SVGs\Omniflo\python\TEFWeiche\json` | 2D-JSON-Verzeichnis für TEF-Weichen |
### get_cmd.bat
Ruft `setenv.bat` auf und öffnet anschließend eine Kommandozeile mit gesetzten Umgebungsvariablen. Nützlich, um Skripte manuell mit korrekter Umgebung zu testen.
### get_all_differences.bat
Interaktiver Wrapper für `diff_dimensions.bat`. Fragt Typ, JSON-Dateinamen und Toleranz per Eingabeaufforderung ab (mit vordefinierten Standardwerten) und startet dann den Vergleich.
---
## Voraussetzungen
- **Python** mit den Paketen `win32com` (pywin32) und `pythoncom`
- **Solid Edge** (für COM-Zugriff bei `create_assemblies`, `save_stl`, `read_variables`)
- **Netzwerkzugriff** auf `\\ssg.local\freigaben\RuleDesigner\Templates\CreateAssemblies` (für `create_assemblies`)
## Fehlerbehandlung
Fehlerhafte oder fehlende Dateien werden bei allen Skripten übersprungen — der Prozess läuft jeweils weiter und gibt eine Fehlermeldung aus.
+1
View File
@@ -0,0 +1 @@
pywin32
+11 -3
View File
@@ -4,13 +4,14 @@ import argparse
import win32com.client
import pythoncom
def export_assemblies_to_stl(input_dir, output_dir):
def export_assemblies_to_stl(input_dir, output_dir, filter_name=None, minimized=False):
pythoncom.CoInitialize()
try:
# Solid Edge starten oder verbinden
se_app = win32com.client.Dispatch("SolidEdge.Application")
se_app.Visible = True
se_app.WindowState = 2 if minimized else 1
documents = se_app.Documents
@@ -18,6 +19,8 @@ def export_assemblies_to_stl(input_dir, output_dir):
for filename in os.listdir(input_dir):
if filename.lower().endswith(".asm"):
if filter_name and filter_name.lower() not in filename.lower():
continue
asm_path = os.path.join(input_dir, filename)
stl_filename = os.path.splitext(filename)[0] + ".stl"
stl_path = os.path.join(output_dir, stl_filename)
@@ -29,7 +32,7 @@ def export_assemblies_to_stl(input_dir, output_dir):
doc = documents.Open(asm_path)
# STL exportieren in den Unterordner
doc.SaveAs(stl_path)
print(f" Exported to: {stl_path}")
print(f"-> Exported to: {stl_path}")
except Exception as e:
print(f"Error processing {filename}: {e}")
finally:
@@ -69,6 +72,8 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Exportiert alle .asm-Dateien in einem Ordner nach STL.")
parser.add_argument("--in", dest="input_dir", required=False, help="Ordner mit .asm-Dateien (Standard: WORK oder ../work)")
parser.add_argument("--out", dest="output_dir", required=False, help="Zielordner für STL-Dateien (Standard: work/STL_Export)")
parser.add_argument("--filter", dest="filter_name", required=False, help="Nur Dateien verarbeiten, deren Name diesen String enthält")
parser.add_argument("--se-minimized", dest="minimized", action="store_true", default=False, help="Solid Edge minimiert starten")
if len(sys.argv) == 2 and sys.argv[1] in ("-h", "--help"):
parser.print_help()
@@ -97,4 +102,7 @@ if __name__ == "__main__":
print(f"Input folder not found: {input_dir}")
sys.exit(1)
export_assemblies_to_stl(input_dir, output_dir)
if args.filter_name:
print(f"Filtering files containing: '{args.filter_name}'\n")
export_assemblies_to_stl(input_dir, output_dir, args.filter_name, args.minimized)
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+37
View File
@@ -0,0 +1,37 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Projektübersicht
**SSG-Ruledesigner-Konfigurator** ist die Library der Schönenberger GmbH für den
RuleDesigner Fusion (RD Fusion) — ein PDM-System zur Verwaltung von CAD-Daten. Der
**RuleDesigner Configurator** ist eine *low-code*-Programmierumgebung, über die das PDM
an externe Systeme (Datenbanken, CAD wie Solid Edge, Export nach CSV/JSON) angebunden
wird. Dieses Repo bündelt Konfigurationen, Layouts, Bibliotheken und Schulungs-Doku für
den abteilungsübergreifenden Einsatz bei Schönenberger.
## Projektstruktur
```text
SSG-Ruledesigner-Konfigurator/
├── MAIN_SSG.rdx # Haupt-Konfiguration (RuleDesigner)
├── Sub_DWG2SWG.rdx # Teil-Konfiguration DWG→SWG
├── Editor2DLibrary/ # 2D-Editor-Bibliothek
├── CAD/ # CAD-Daten
├── CSV/ # CSV-Daten/Exporte
├── SVGs/ # SVG-Grafiken
├── Pictures/ # Bilder
├── HallenLayouts/ # Hallen-Layouts
├── Sessions/ # Session-Daten
├── Doku/ # Dokumentation
├── wiki/ # Wiki (Roadmap, Home, Schulungs-Doku)
├── _setenv.bat # Umgebung setzen
└── cleanLocalShapes.bat # Lokale Shapes bereinigen
```
## Hinweise
- Die `.rdx`-Dateien sind RuleDesigner-Configurator-Projekte (low code).
- Ausführliche Doku und Roadmap liegen im `wiki/` (siehe `Readme.md` für Links).
- Ziel: Programmierarbeiten künftig durch hauseigene Mitarbeiter (nach Schulung).
+452
View File
@@ -0,0 +1,452 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="297mm"
height="210mm"
viewBox="0 0 297 210"
version="1.1"
id="svg1"
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
sodipodi:docname="Varioförderer_abwärts.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.52221046"
inkscape:cx="1171.9413"
inkscape:cy="251.81418"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g13" />
<defs
id="defs1" />
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1">
<g
transform="matrix(0.23034607,0,0,0.23034607,0.53613215,11.200168)"
id="g13">
<g
transform="matrix(0.93111819,0,0,0.96168343,42.607341,-3.2012156)"
id="g41">
<rect
x="0"
y="0"
width="123"
height="96"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
transform="matrix(-1,0,0,1,294,178)"
id="rect1" />
<path
d="m 171,178 122.88,96"
stroke="#e59edd"
stroke-width="4"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path1" />
<path
d="M 295,272 703.758,520.544"
stroke="#7030a0"
stroke-width="4"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path2" />
<path
d="M 972.8,635.36 704,519"
stroke="#00b0f0"
stroke-width="4"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path3" />
<path
d="M 1116.08,668.6 974,635"
stroke="#c1e5f5"
stroke-width="4"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path4" />
<text
fill="#7030a0"
font-family="Symbol, Symbol_MSFontService, sans-serif"
font-weight="400"
font-size="43px"
transform="translate(429.665,319)"
id="text4"></text>
<text
fill="#7030a0"
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="24px"
transform="translate(456.665,319)"
id="text5">F</text>
<text
fill="#00b0f0"
font-family="Symbol, Symbol_MSFontService, sans-serif"
font-weight="400"
font-size="43px"
transform="translate(803.268,617)"
id="text6"></text>
<text
fill="#00b0f0"
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="24px"
transform="translate(830.268,617)"
id="text7">S</text>
<path
d="M 0,0 C 28.842,37.2866 34.2679,71.9892 32.7764,106"
stroke="#7030a0"
stroke-width="3"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(1,0,0,-1,480.5,380.5)"
id="path7" />
<path
d="M 0,0 C 26.5571,21.2117 32.3714,48.3031 33,77"
stroke="#00b0f0"
stroke-width="3"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,797.5,558.5)"
id="path8" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(131.297,162)"
id="text8">Ho</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(1116.31,708)"
id="text9">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(1135.14,708)"
id="text10">1</text>
<path
d="m 295.979,218 h 406.759 v 2 H 295.979 Z m 7.497,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 391.765,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.367,-0.36 -0.278,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.638,-0.89 -0.36,-1.367 0.278,-0.477 0.89,-0.639 1.367,-0.36 z"
id="path10" />
<path
d="m 704,452 v 59.488"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path11" />
<path
d="m 973,467 v 36.381"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path12" />
<path
d="m 705.979,479 h 264.842 v 2 H 705.979 Z m 7.497,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 249.848,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.368,-0.36 -0.278,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.638,-0.89 -0.36,-1.367 0.279,-0.477 0.891,-0.639 1.368,-0.36 z"
id="path13" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(489.106,209)"
id="text13">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(502.44,209)"
id="text14">F</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(825.829,455)"
id="text15">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(839.163,455)"
id="text16">S</text>
<path
d="m 1107,669 c 0,-4.971 4.03,-9 9,-9 4.97,0 9,4.029 9,9 0,4.971 -4.03,9 -9,9 -4.97,0 -9,-4.029 -9,-9 z"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path16" />
<path
d="m 162,178 c 0,-4.971 4.029,-9 9,-9 4.971,0 9,4.029 9,9 0,4.971 -4.029,9 -9,9 -4.971,0 -9,-4.029 -9,-9 z"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path17" />
<path
d="M 1,1.98013 1.0001,112.925 H -0.999897 L -0.999998,1.98013 Z M -5.53044,9.47613 -3.97253e-8,-0.0046346 5.53045,9.47612 C 5.80873,9.95317 5.6476,10.5655 5.17055,10.8438 4.6935,11.1221 4.08118,10.9609 3.8029,10.4839 L -0.863777,2.48387 H 0.863781 L -3.80288,10.4839 c -0.27828,0.477 -0.8906,0.6382 -1.36765,0.3599 C -5.64758,10.5655 -5.80872,9.95318 -5.53044,9.47613 Z M 5.53054,105.429 1.0489e-4,114.91 -5.53035,105.429 c -0.27828,-0.477 -0.11714,-1.089 0.35991,-1.367 0.47705,-0.279 1.08937,-0.117 1.36765,0.36 l 4.666672,8 h -1.727558 l 4.666656,-8 c 0.27828,-0.477 0.8906,-0.639 1.36765,-0.36 0.47706,0.278 0.63819,0.89 0.35991,1.367 z"
transform="matrix(1,0,0,-1,1183,635.906)"
id="path18" />
<path
d="m 1.00001,1.98 9e-5,29.6399 H -0.999901 L -0.999994,1.98 Z M -5.53042,9.47615 2.40488e-8,-0.0046346 5.53048,9.47611 C 5.80876,9.95316 5.64762,10.5655 5.17057,10.8438 4.69352,11.122 4.0812,10.9609 3.80292,10.4839 L -0.863771,2.48387 H 0.863787 L -3.80286,10.4839 c -0.27827,0.477 -0.89059,0.6382 -1.36764,0.3599 C -5.64756,10.5655 -5.80869,9.9532 -5.53042,9.47615 Z M 5.53052,24.1237 1.04963e-4,33.6045 -5.53037,24.1238 c -0.27828,-0.4771 -0.11715,-1.0894 0.3599,-1.3677 0.47705,-0.2782 1.08937,-0.1171 1.36765,0.3599 l 4.666696,8 h -1.727558 l 4.666642,-8 c 0.27828,-0.477 0.8906,-0.6382 1.36765,-0.3599 0.47705,0.2783 0.63819,0.8906 0.35991,1.3676 z"
transform="matrix(1,0,0,-1,1183,668.6)"
id="path19" />
<path
d="M 0,0 199.69,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,1190.69,519)"
id="path20" />
<path
d="M 0,0 65.4454,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,1190.45,635)"
id="path21" />
<path
d="M 0,0 65.4454,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,1197.45,669)"
id="path22" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(1203.12,582)"
id="text22">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(1221.95,582)"
id="text23">S</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(1201.32,662)"
id="text24">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(1220.15,662)"
id="text25">AS</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(1025.92,465)"
id="text26">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(1039.25,465)"
id="text27">AS</text>
<path
d="m 975.98,481 h 136.22 v 2 H 975.98 Z m 7.496,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 121.224,-11.06 9.48,5.53 -9.48,5.531 c -0.48,0.278 -1.09,0.117 -1.37,-0.36 -0.28,-0.477 -0.11,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.47,-0.278 -0.64,-0.89 -0.36,-1.367 0.28,-0.477 0.89,-0.639 1.37,-0.36 z"
id="path27" />
<path
d="M 1114,477 V 615.439"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path28" />
<path
d="m 123.188,271.022 -0.184,-92.04 2,-0.004 0.184,92.04 z m 6.516,-7.509 -5.512,9.492 -5.549,-9.47 c -0.279,-0.477 -0.119,-1.089 0.357,-1.368 0.477,-0.28 1.089,-0.12 1.368,0.357 l 4.683,7.99 -1.727,0.004 4.65,-8.009 c 0.278,-0.478 0.89,-0.64 1.367,-0.363 0.478,0.277 0.64,0.889 0.363,1.367 z m -11.215,-77.026 5.511,-9.492 5.549,9.47 c 0.28,0.477 0.12,1.089 -0.357,1.368 -0.476,0.28 -1.089,0.12 -1.368,-0.357 l -4.683,-7.99 1.728,-0.004 -4.651,8.009 c -0.277,0.478 -0.889,0.64 -1.367,0.363 -0.477,-0.277 -0.64,-0.889 -0.362,-1.367 z"
id="path29" />
<path
d="M 0,0 38.6295,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,153.63,273)"
id="path30" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(74.7453,401)"
id="text30">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(93.5786,401)"
id="text31">F</text>
<path
d="M 0,0 45.3722,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,153.372,178)"
id="path31" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(68.8266,230)"
id="text32">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(87.6599,230)"
id="text33">ES</text>
<path
d="M 1,1.9794 1.0001,243.656 H -0.999896 L -0.999999,1.9794 Z M -5.53044,9.47613 2.45822e-8,-0.0046346 5.53045,9.47613 C 5.80873,9.95318 5.64759,10.5655 5.17054,10.8438 4.69349,11.1221 4.08117,10.9609 3.80289,10.4839 L -0.863778,2.48387 H 0.86378 l -4.66666,8.00003 c -0.27828,0.477 -0.8906,0.6382 -1.36765,0.3599 C -5.64759,10.5655 -5.80872,9.95318 -5.53044,9.47613 Z M 5.53055,236.159 1.04757e-4,245.64 -5.53034,236.159 c -0.27829,-0.477 -0.11715,-1.089 0.3599,-1.368 0.47705,-0.278 1.08937,-0.117 1.36765,0.36 l 4.666673,8 h -1.727558 l 4.666665,-8 c 0.27828,-0.477 0.8906,-0.638 1.36765,-0.36 0.47705,0.279 0.63819,0.891 0.35991,1.368 z"
transform="matrix(1,0,0,-1,124,518.635)"
id="path33" />
<path
d="M 0,0 156.35,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,271.349,519)"
id="path34" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(213.958,347)"
id="text34">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(227.292,347)"
id="text35">ES</text>
<path
d="m 172.98,359 h 120.304 v 2 H 172.98 Z m 7.496,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.09,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 105.312,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.367,-0.36 -0.279,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.639,-0.89 -0.36,-1.367 0.278,-0.477 0.89,-0.639 1.367,-0.36 z"
id="path35" />
<path
d="m 173,293 v 80.092"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path36" />
<rect
x="294"
y="272"
width="410"
height="249"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
id="rect36" />
<rect
x="704"
y="519"
width="269"
height="116"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
id="rect37" />
<rect
x="0"
y="0"
width="144"
height="34"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
transform="matrix(-1,0,0,1,1117,635)"
id="rect38" />
<path
d="m 704,210 v 50"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path38" />
<path
d="m 173,119 v 30.704"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path39" />
<path
d="m 172.971,126 h 940.919 v 2 H 172.971 Z m 7.505,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 925.914,-11.06 9.48,5.53 -9.48,5.531 c -0.48,0.278 -1.09,0.117 -1.37,-0.36 -0.28,-0.477 -0.12,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.48,-0.278 -0.64,-0.89 -0.36,-1.367 0.28,-0.477 0.89,-0.639 1.37,-0.36 z"
id="path40" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(605.305,154)"
id="text40">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(618.638,154)"
id="text41">1</text>
<path
d="M 1114,109 V 456.164"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path41" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

+452
View File
@@ -0,0 +1,452 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="297mm"
height="210mm"
viewBox="0 0 297 210"
version="1.1"
id="svg1"
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
sodipodi:docname="Varioförderer_aufwärts.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.73851712"
inkscape:cx="501.00396"
inkscape:cy="561.25984"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1">
<g
transform="matrix(0.23034607,0,0,0.23034607,0.93511915,3.6997708)"
id="g30">
<path
d="m 294.979,214 h 406.759 v 2 H 294.979 Z m 7.497,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 391.765,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.367,-0.36 -0.278,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.638,-0.89 -0.36,-1.367 0.278,-0.477 0.89,-0.639 1.367,-0.36 z"
id="path1" />
<path
d="m 704,205 v 59.488"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path2" />
<path
d="m 295,204 v 59.488"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path3" />
<path
d="m 973,205 v 59.488"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path4" />
<path
d="m 705.979,214 h 264.842 v 2 H 705.979 Z m 7.497,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 249.848,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.368,-0.36 -0.278,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.638,-0.89 -0.36,-1.367 0.279,-0.477 0.891,-0.639 1.368,-0.36 z"
id="path5" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(487.134,199)"
id="text5">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(500.468,199)"
id="text6">F</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(825.829,199)"
id="text7">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(839.163,199)"
id="text8">S</text>
<path
d="M 1,1.98013 1.0001,112.925 H -0.999897 L -0.999998,1.98013 Z M -5.53044,9.47613 -3.97253e-8,-0.0046346 5.53045,9.47612 C 5.80873,9.95317 5.6476,10.5655 5.17055,10.8438 4.6935,11.1221 4.08118,10.9609 3.8029,10.4839 L -0.863777,2.48387 H 0.863781 L -3.80288,10.4839 c -0.27828,0.477 -0.8906,0.6382 -1.36765,0.3599 C -5.64758,10.5655 -5.80872,9.95318 -5.53044,9.47613 Z M 5.53054,105.429 1.0489e-4,114.91 -5.53035,105.429 c -0.27828,-0.477 -0.11714,-1.089 0.35991,-1.367 0.47705,-0.279 1.08937,-0.117 1.36765,0.36 l 4.666672,8 h -1.727558 l 4.666656,-8 c 0.27828,-0.477 0.8906,-0.639 1.36765,-0.36 0.47706,0.278 0.63819,0.89 0.35991,1.367 z"
transform="matrix(1,0,0,-1,1183,387.906)"
id="path8" />
<path
d="m 1.00001,1.98 9e-5,29.6399 H -0.999901 L -0.999994,1.98 Z M -5.53042,9.47615 2.40488e-8,-0.0046346 5.53048,9.47611 C 5.80876,9.95316 5.64762,10.5655 5.17057,10.8438 4.69352,11.122 4.0812,10.9609 3.80292,10.4839 L -0.863771,2.48387 H 0.863787 L -3.80286,10.4839 c -0.27827,0.477 -0.89059,0.6382 -1.36764,0.3599 C -5.64756,10.5655 -5.80869,9.9532 -5.53042,9.47615 Z M 5.53052,24.1237 1.04963e-4,33.6045 -5.53037,24.1238 c -0.27828,-0.4771 -0.11715,-1.0894 0.3599,-1.3677 0.47705,-0.2782 1.08937,-0.1171 1.36765,0.3599 l 4.666696,8 h -1.727558 l 4.666642,-8 c 0.27828,-0.477 0.8906,-0.6382 1.36765,-0.3599 0.47705,0.2783 0.63819,0.8906 0.35991,1.3676 z"
transform="matrix(1,0,0,-1,1183,421.6)"
id="path9" />
<path
d="M 0,0 76.4572,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,1190.46,272)"
id="path10" />
<path
d="M 0,0 65.4454,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,1190.45,388)"
id="path11" />
<path
d="M 0,0 65.4454,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,1197.45,422)"
id="path12" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(1203.12,335)"
id="text12">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(1221.95,335)"
id="text13">S</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(1201.32,415)"
id="text14">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(1220.15,415)"
id="text15">ES</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(1025.92,202)"
id="text16">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(1039.25,202)"
id="text17">ES</text>
<path
d="m 975.98,214 h 136.22 v 2 H 975.98 Z m 7.496,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 121.224,-11.06 9.48,5.53 -9.48,5.531 c -0.48,0.278 -1.09,0.117 -1.37,-0.36 -0.28,-0.477 -0.11,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.47,-0.278 -0.64,-0.89 -0.36,-1.367 0.28,-0.477 0.89,-0.639 1.37,-0.36 z"
id="path17" />
<path
d="m 1114,205 v 59.488"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path18" />
<path
d="m 123.188,614.022 -0.184,-92.04 2,-0.004 0.184,92.04 z m 6.516,-7.509 -5.512,9.492 -5.549,-9.47 c -0.279,-0.477 -0.119,-1.089 0.357,-1.368 0.477,-0.28 1.089,-0.12 1.368,0.357 l 4.683,7.99 -1.727,0.004 4.65,-8.009 c 0.278,-0.478 0.89,-0.64 1.367,-0.363 0.478,0.277 0.64,0.889 0.363,1.367 z m -11.215,-77.026 5.511,-9.492 5.549,9.47 c 0.28,0.477 0.12,1.089 -0.357,1.368 -0.476,0.28 -1.089,0.12 -1.368,-0.357 l -4.683,-7.99 1.728,-0.004 -4.651,8.009 c -0.277,0.478 -0.889,0.64 -1.367,0.363 -0.477,-0.277 -0.64,-0.889 -0.362,-1.367 z"
id="path19" />
<path
d="M 0,0 88.0784,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,165.078,616)"
id="path20" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(38.1987,453)"
id="text20">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(57.0321,453)"
id="text21">F</text>
<path
d="M 0,0 45.3722,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,153.372,521)"
id="path21" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(40.9113,575)"
id="text22">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(59.7446,575)"
id="text23">AS</text>
<path
d="M 1,1.9794 1.0001,341.406 H -0.999896 L -0.999999,1.9794 Z M -5.53044,9.47613 -1.09084e-8,-0.0046346 5.53045,9.47613 C 5.80873,9.95318 5.64759,10.5655 5.17054,10.8438 4.69349,11.1221 4.08117,10.9609 3.80289,10.4839 L -0.863778,2.48387 H 0.86378 l -4.66667,8.00003 c -0.27828,0.477 -0.89059,0.6382 -1.36765,0.3599 -0.47705,-0.2783 -0.63818,-0.89062 -0.3599,-1.36767 z M 5.53055,333.909 1.04861e-4,343.39 -5.53034,333.909 c -0.27828,-0.477 -0.11715,-1.089 0.3599,-1.367 0.47706,-0.279 1.08937,-0.118 1.36765,0.36 l 4.666673,8 h -1.727558 l 4.666665,-8 c 0.27828,-0.478 0.8906,-0.639 1.36765,-0.36 0.47705,0.278 0.63819,0.89 0.35991,1.367 z"
transform="matrix(1,0,0,-1,94,616.385)"
id="path23" />
<path
d="M 0,0 197.424,1.04987e-4"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,281.424,273)"
id="path24" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(213.958,202)"
id="text24">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(227.292,202)"
id="text25">AS</text>
<path
d="m 172.98,213 h 120.304 v 2 H 172.98 Z m 7.496,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.09,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 105.312,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.367,-0.36 -0.279,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.639,-0.89 -0.36,-1.367 0.278,-0.477 0.89,-0.639 1.367,-0.36 z"
id="path25" />
<path
d="m 171,205 v 80.092"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path26" />
<path
d="m 172.971,670 h 940.919 v 2 H 172.971 Z m 7.505,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 925.914,-11.06 9.48,5.53 -9.48,5.531 c -0.48,0.278 -1.09,0.117 -1.37,-0.36 -0.28,-0.477 -0.12,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.48,-0.278 -0.64,-0.89 -0.36,-1.367 0.28,-0.477 0.89,-0.639 1.37,-0.36 z"
id="path27" />
<path
d="M 1116,483 V 681.968"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path28" />
<path
d="m 171,625 v 57"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path29" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(601.134,662)"
id="text29">L</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(614.468,662)"
id="text30">1</text>
</g>
<g
transform="matrix(0.23034607,0,0,0.23034607,0.53613215,2.9601198)"
id="g13">
<rect
x="0"
y="0"
width="123"
height="96"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
transform="matrix(-1,0,0,1,294,521)"
id="rect1" />
<path
d="m 171,521 122.88,96"
stroke="#e59edd"
stroke-width="4"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path1-0" />
<path
d="M 0,0 410.718,344.84"
stroke="#7030a0"
stroke-width="4"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(1,0,0,-1,293,616.84)"
id="path2-9" />
<path
d="M 972.8,388.36 704,272"
stroke="#00b0f0"
stroke-width="4"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path3-4" />
<path
d="M 1116.08,421.6 974,388"
stroke="#c1e5f5"
stroke-width="4"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path4-8" />
<text
fill="#7030a0"
font-family="Symbol, Symbol_MSFontService, sans-serif"
font-weight="400"
font-size="43px"
transform="translate(411.13,582)"
id="text4"></text>
<text
fill="#7030a0"
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="24px"
transform="translate(438.13,582)"
id="text5-8">F</text>
<text
fill="#00b0f0"
font-family="Symbol, Symbol_MSFontService, sans-serif"
font-weight="400"
font-size="43px"
transform="translate(803.268,370)"
id="text6-2"></text>
<text
fill="#00b0f0"
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="24px"
transform="translate(830.268,370)"
id="text7-4">S</text>
<path
d="m 452.5,483.5 c 35.65,34.747 46.361,64.679 47,130"
stroke="#7030a0"
stroke-width="3"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path7" />
<path
d="M 0,0 C 26.5571,21.2117 32.3714,48.3031 33,77"
stroke="#00b0f0"
stroke-width="3"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
transform="matrix(-1,0,0,1,797.5,311.5)"
id="path8-5" />
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(136.448,500)"
id="text8-5">Ho</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="27px"
transform="translate(1116.31,461)"
id="text9">H</text>
<text
font-family="Aptos, Aptos_MSFontService, sans-serif"
font-weight="400"
font-size="21px"
transform="translate(1135.14,461)"
id="text10">1</text>
<path
d="m 1107,422 c 0,-4.971 4.03,-9 9,-9 4.97,0 9,4.029 9,9 0,4.971 -4.03,9 -9,9 -4.97,0 -9,-4.029 -9,-9 z"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path10-1" />
<path
d="m 162,521 c 0,-4.971 4.029,-9 9,-9 4.971,0 9,4.029 9,9 0,4.971 -4.029,9 -9,9 -4.971,0 -9,-4.029 -9,-9 z"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
fill-rule="evenodd"
id="path11-7" />
<rect
x="294"
y="272"
width="410"
height="345"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
id="rect11" />
<rect
x="704"
y="272"
width="269"
height="116"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
id="rect12" />
<rect
x="0"
y="0"
width="144"
height="34"
stroke="#000000"
stroke-width="2"
stroke-miterlimit="8"
fill="none"
transform="matrix(-1,0,0,1,1117,388)"
id="rect13" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

+150
View File
@@ -0,0 +1,150 @@
#!/usr/bin/env python3
"""
Filtert ein ZIP-Archiv und entfernt alle .stl Dateien.
Ausgabe: originalname_heute.zip (oder ersetzt Original mit --replace)
"""
import zipfile
import sys
import argparse
import shutil
import struct
import zlib
from pathlib import Path
def filter_zip_no_stl(source_zip_path: str, replace: bool = False) -> str:
"""
Öffnet ein ZIP und erstellt ein neues ohne .stl Dateien.
Args:
source_zip_path: Pfad zur Quell-ZIP-Datei
replace: Wenn True, wird das Original ersetzt
Returns:
Pfad zur erstellten/ersetzten ZIP-Datei
"""
source_path = Path(source_zip_path)
if not source_path.exists():
raise FileNotFoundError(f"Datei nicht gefunden: {source_zip_path}")
if not source_path.suffix.lower() == '.zip':
raise ValueError(f"Keine ZIP-Datei: {source_zip_path}")
# Temporäres Ziel-ZIP
temp_path = source_path.with_name(f"{source_path.stem}_heute.zip")
copied_count = 0
skipped_count = 0
print("Filtere ZIP und erstelle neues Archiv mit UTF-8 Encoding...")
with zipfile.ZipFile(source_path, 'r') as src_zip:
with zipfile.ZipFile(temp_path, 'w', zipfile.ZIP_DEFLATED) as dst_zip:
# Iteriere über alle Dateien im Quell-ZIP
for info in src_zip.infolist():
# Verzeichnisse überspringen
if info.is_dir():
continue
# .stl Dateien überspringen
if info.filename.lower().endswith('.stl'):
skipped_count += 1
print(f" - {info.filename}")
continue
# Kopiere Datei ins neue ZIP
try:
# Lese Dateiinhalt
with src_zip.open(info, 'r') as source:
file_data = source.read()
# Schreibe ins neue ZIP (mit UTF-8 Encoding)
dst_zip.writestr(info.filename, file_data, compress_type=zipfile.ZIP_DEFLATED)
copied_count += 1
except Exception as e:
# Fallback: Low-Level Extraktion für problematische Dateien
try:
# Lese direkt aus der ZIP-Datei ohne Validierung
with open(source_path, 'rb') as f:
# Gehe zu Local File Header
f.seek(info.header_offset)
# Lese Local File Header (30 Bytes)
fheader = f.read(30)
if len(fheader) != 30:
raise Exception("Kann Local File Header nicht lesen")
# Parse Header (ZIP Local File Header format)
sig, ver, flags, comp_method, mod_time, mod_date, crc, comp_size, uncomp_size, fname_len, extra_len = struct.unpack('<4s5H3I2H', fheader)
if sig != b'PK\x03\x04':
raise Exception("Ungültiger Local File Header")
# Lese raw filename bytes aus Header
raw_filename_bytes = f.read(fname_len)
# Überspringe Extra Field
f.seek(info.header_offset + 30 + fname_len + extra_len)
# Lese komprimierte Daten
compressed_data = f.read(comp_size)
# Dekomprimiere
if comp_method == 8: # DEFLATE
file_data = zlib.decompress(compressed_data, -zlib.MAX_WBITS)
elif comp_method == 0: # STORED
file_data = compressed_data
else:
raise Exception(f"Unbekannte Kompression: {comp_method}")
# Dekodiere Dateinamen mit latin-1 (ISO-8859-1)
# latin-1 unterstützt deutsche Umlaute korrekt (\xf6 = ö)
correct_filename = raw_filename_bytes.decode('latin-1', errors='replace')
# Schreibe ins neue ZIP mit korrigiertem Namen
dst_zip.writestr(correct_filename, file_data, compress_type=zipfile.ZIP_DEFLATED)
copied_count += 1
print(f" + {correct_filename} (re-encoded)")
except Exception as e2:
print(f" ! Warnung: Konnte {info.filename} nicht kopieren: {e2}")
skipped_count += 1
print(f"\nErgebnis: {copied_count} Datei(en) kopiert, {skipped_count} STL-Datei(en) entfernt")
if replace:
shutil.move(str(temp_path), str(source_path))
print(f"Original ersetzt: {source_path}")
return str(source_path)
else:
print(f"Ziel-ZIP: {temp_path}")
return str(temp_path)
def main():
parser = argparse.ArgumentParser(
description="Filtert ZIP-Archive und entfernt alle .stl Dateien."
)
parser.add_argument(
"zipfile",
help="Pfad zur Quell-ZIP-Datei"
)
parser.add_argument(
"--replace",
action="store_true",
help="Original-ZIP durch gefilterte Version ersetzen"
)
args = parser.parse_args()
try:
filter_zip_no_stl(args.zipfile, args.replace)
except (FileNotFoundError, ValueError, zipfile.BadZipFile) as e:
print(f"Fehler: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()
+10
View File
@@ -0,0 +1,10 @@
echo === EXE erstellen ===
@echo off
call .venv\Scripts\activate.bat
pyinstaller --onefile filter_zip_no_stl.py
echo.
echo === Fertig! ===
move dist\filter_zip_no_stl.exe ..\..\Sessions\removeStls.exe
pause
+2
View File
@@ -0,0 +1,2 @@
# Für EXE-Erstellung
pyinstaller>=6.0
+32
View File
@@ -0,0 +1,32 @@
@echo off
echo === Virtuelle Umgebung einrichten ===
REM Prüfen ob Python verfügbar ist
python --version >nul 2>&1
if errorlevel 1 (
echo Fehler: Python nicht gefunden!
echo Bitte Python installieren und zum PATH hinzufügen.
pause
exit /b 1
)
REM Virtuelle Umgebung erstellen
echo Erstelle .venv ...
python -m venv .venv
REM Aktivieren und Dependencies installieren
echo Aktiviere .venv und installiere Abhängigkeiten ...
call .venv\Scripts\activate.bat
python -m pip install --upgrade pip
pip install -r requirements.txt
echo.
echo === Fertig! ===
echo.
echo Zum Aktivieren der Umgebung:
echo .venv\Scripts\activate
echo.
echo Zum Erstellen der EXE:
echo pyinstaller --onefile filter_zip_no_stl.py
echo.
pause
+442
View File
@@ -0,0 +1,442 @@
# Gleichungen Förderer aufwärts
![Varioförderer aufwärts](bilder/Variofoerderer_aufwaerts.svg)
**violett** ist F wie _Förderer_
**hellblau** ist S wie _Strecke_
**AS** ist _Ausschleus_- Element
**ES** ist _Einschleus_- Element
## Gegeben
$H_0$, $H_1$, $L_1$, $\alpha_F$, $\alpha_S$, $L_{ES}$, $H_{ES}$, $L_{AS}$, $H_{AS}$
## Gesucht
$L_F$, $L_S$, $H_F$, $H_S$
---
## Grundgleichungen ($H_1 > H_0$, Förderrichtung: von $H_0$ nach $H_1$)
**(1) Horizontal:**
$$L_1 = L_{ES} + L_F + L_S + L_{AS}$$
**(2) Vertikal:**
$$H_1 - H_0 = H_F - H_S - H_{ES} - H_{AS}$$
**(3) Neigung F:**
$$\tan(\alpha_F) = \frac{H_F}{L_F} \quad \Rightarrow \quad H_F = L_F \cdot \tan(\alpha_F)$$
**(4) Neigung S:**
$$\tan(\alpha_S) = \frac{H_S}{L_S} \quad \Rightarrow \quad H_S = L_S \cdot \tan(\alpha_S)$$
---
## Lösung (Einsetzen von (3),(4) in (1),(2))
**(I)**
$$L_F + L_S = L_1 - L_{ES} - L_{AS}$$
**(II)**
$$L_F \cdot \tan(\alpha_F) - L_S \cdot \tan(\alpha_S) = (H_1 - H_0) + H_{ES} + H_{AS}$$
---
## Ergebnis
$$L_F = \frac{(H_1 - H_0 + H_{ES} + H_{AS}) + (L_1 - L_{ES} - L_{AS}) \cdot \tan(\alpha_S)}{\tan(\alpha_F) + \tan(\alpha_S)}$$
$$L_S = (L_1 - L_{ES} - L_{AS}) - L_F$$
$$H_F = L_F \cdot \tan(\alpha_F)$$
$$H_S = L_S \cdot \tan(\alpha_S)$$
# Gleichungen Förderer abwärts
![Varioförderer abwärts](bilder/Variofoerderer_abwaerts.svg)
## Gegeben
$H_0$, $H_1$, $L_1$, $\alpha_F$, $\alpha_S$, $L_{ES}$, $H_{ES}$, $L_{AS}$, $H_{AS}$
## Gesucht
$L_F$, $L_S$, $H_F$, $H_S$
---
## Grundgleichungen ($H_0 > H_1$, Förderrichtung: von $H_0$ nach $H_1$)
**(1) Horizontal:**
$$L_1 = L_{ES} + L_F + L_S + L_{AS}$$
**(2) Vertikal:**
$$H_0 - H_1 = H_{ES} + H_F + H_S + H_{AS}$$
**(3) Neigung F:**
$$\tan(\alpha_F) = \frac{H_F}{L_F} \quad \Rightarrow \quad H_F = L_F \cdot \tan(\alpha_F)$$
**(4) Neigung S:**
$$\tan(\alpha_S) = \frac{H_S}{L_S} \quad \Rightarrow \quad H_S = L_S \cdot \tan(\alpha_S)$$
---
## Lösung (Einsetzen von (3),(4) in (1),(2))
**(I)**
$$L_F + L_S = L_1 - L_{ES} - L_{AS}$$
**(II)**
$$L_F \cdot \tan(\alpha_F) + L_S \cdot \tan(\alpha_S) = (H_0 - H_1) - H_{ES} - H_{AS}$$
---
## Ergebnis
$$L_F = \frac{(H_0 - H_1 - H_{ES} - H_{AS}) - (L_1 - L_{ES} - L_{AS}) \cdot \tan(\alpha_S)}{\tan(\alpha_F) - \tan(\alpha_S)}$$
$$L_S = (L_1 - L_{ES} - L_{AS}) - L_F$$
$$H_F = L_F \cdot \tan(\alpha_F)$$
$$H_S = L_S \cdot \tan(\alpha_S)$$
# Zusammenfassung
Wobei $\alpha_S$ normalerweise immer bei 3° liegt und $\alpha_F$ von 3,6,9,12,15.. 51° läuft.
```python
#!/usr/bin/env python3
"""
Förderer-Berechnung in 2D beide Fälle
====================================================
Aufwärts (H1 > H0):
ΔH = H1 - H0
L_F = (ΔH + H_ES + H_AS + L_rest·tan(α_S)) / (tan(α_F) + tan(α_S))
Probe: H_F - H_S - H_ES - H_AS = ΔH
Abwärts (H0 > H1):
ΔH = H0 - H1
L_F = (ΔH - H_ES - H_AS - L_rest·tan(α_S)) / (tan(α_F) - tan(α_S))
Probe: H_ES + H_F + H_S + H_AS = ΔH
"""
import math
# ============================================================
# KONSTANTEN [alle in Meter / Grad]
# ============================================================
H0 = 2.0
H1 = 5.0
L1 = 8.0
L_ES = 1.0
H_ES = 0.3
L_AS = 1.0
H_AS = 0.3
ALPHA_S = 3.0
ALPHA_F_LIST = [3, 6, 9, 12, 15, 18, 24, 27, 33, 39, 45, 51]
def berechne(h0, h1, l1, l_es, h_es, l_as, h_as, alpha_f_deg, alpha_s_deg):
"""
Berechnet L_F, L_S, H_F, H_S.
Unterscheidet automatisch aufwärts/abwärts anhand h0 vs h1.
"""
alpha_f = math.radians(alpha_f_deg)
alpha_s = math.radians(alpha_s_deg)
tan_f = math.tan(alpha_f)
tan_s = math.tan(alpha_s)
l_rest = l1 - l_es - l_as
if h1 >= h0:
# === AUFWÄRTS ===
# (2): H1 - H0 = H_F - H_S - H_ES - H_AS
delta_h = h1 - h0
nenner = tan_f + tan_s
if abs(nenner) < 1e-12:
return None
zaehler = (delta_h + h_es + h_as) + l_rest * tan_s
fall = "aufwärts"
else:
# === ABWÄRTS ===
# (2): H0 - H1 = H_ES + H_F + H_S + H_AS
delta_h = h0 - h1
nenner = tan_f - tan_s
if abs(nenner) < 1e-12:
return None
zaehler = (delta_h - h_es - h_as) - l_rest * tan_s
fall = "abwärts"
l_f = zaehler / nenner
l_s = l_rest - l_f
h_f = l_f * tan_f
h_s = l_s * tan_s
# Gegenprobe
if fall == "aufwärts":
probe = h_f - h_s - h_es - h_as # soll = H1-H0
else:
probe = h_es + h_f + h_s + h_as # soll = H0-H1
return {
"L_F": l_f, "L_S": l_s,
"H_F": h_f, "H_S": h_s,
"fall": fall, "delta_h": delta_h, "probe": probe,
}
def validierung(erg):
probleme = []
for key in ("L_F", "L_S", "H_F", "H_S"):
if erg[key] < 0:
probleme.append(f"{key} < 0")
# L_F und L_S dürfen auch nicht > L_rest sein (implizit durch L_S < 0)
return (len(probleme) == 0, probleme)
def md_tabelle(fall_name, h0_val, h1_val):
"""Erzeugt Markdown-Tabelle. Fall wird aus h0/h1 abgeleitet."""
l_rest = L1 - L_ES - L_AS
delta_h = abs(h1_val - h0_val)
richtung = "aufwärts" if h1_val >= h0_val else "abwärts"
lines = []
lines.append(f"### {fall_name}")
lines.append(f"H₀ = {h0_val:.3f} m, H₁ = {h1_val:.3f} m → **{richtung}**, "
f"ΔH = {delta_h:.4f} m, L_rest = {l_rest:.3f} m\n")
if richtung == "aufwärts":
lines.append("Formel: L_F = (ΔH + H_ES + H_AS + L_rest·tan α_S) / "
"(tan α_F **+** tan α_S)")
lines.append("")
lines.append("Probe: H_F H_S H_ES H_AS = ΔH\n")
else:
lines.append("Formel: L_F = (ΔH H_ES H_AS L_rest·tan α_S) / "
"(tan α_F **** tan α_S)")
lines.append("")
lines.append("Probe: H_ES + H_F + H_S + H_AS = ΔH\n")
lines.append("| α_F [°] | L_F [m] | L_S [m] | H_F [m] | H_S [m] | Probe | Status |")
lines.append("|--------:|--------:|--------:|--------:|--------:|------:|--------|")
for alpha_f_deg in ALPHA_F_LIST:
erg = berechne(h0_val, h1_val, L1, L_ES, H_ES, L_AS, H_AS,
alpha_f_deg, ALPHA_S)
if erg is None:
lines.append(f"| {alpha_f_deg} | — | — | — | — | — | ⚠ Nenner = 0 |")
continue
gueltig, probleme = validierung(erg)
status = "✓ gültig" if gueltig else f"✗ {', '.join(probleme)}"
lines.append(
f"| {alpha_f_deg} "
f"| {erg['L_F']:.4f} "
f"| {erg['L_S']:.4f} "
f"| {erg['H_F']:.4f} "
f"| {erg['H_S']:.4f} "
f"| {erg['probe']:.4f} "
f"| {status} |"
)
lines.append("")
return "\n".join(lines)
def grenzen():
"""Erzeugt Übersichtstabellen: für welche (ΔH, L1) Kombinationen
existieren gültige Lösungen? Zeigt den kleinsten gültigen α_F.
ΔH von 0..5 m, L1 von 3..15 m."""
delta_h_list = [0, 1, 2, 3, 4, 5]
l1_list = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
lines = []
for richtung in ("aufwärts", "abwärts"):
lines.append(f"### {richtung.capitalize()}\n")
lines.append("Zelle = kleinster gültiger α_F [°], "
"**—** = keine Lösung\n")
# Header
header = "| ΔH \\ L₁ |" + "|".join(f" {l1} m " for l1 in l1_list) + "|"
sep = "|--------:|" + "|".join("------:" for _ in l1_list) + "|"
lines.append(header)
lines.append(sep)
for dh in delta_h_list:
if richtung == "aufwärts":
h0, h1 = 0, dh
else:
h0, h1 = dh, 0
row = f"| {dh} m |"
for l1 in l1_list:
min_alpha = None
for alpha_f_deg in ALPHA_F_LIST:
erg = berechne(h0, h1, l1, L_ES, H_ES, L_AS, H_AS,
alpha_f_deg, ALPHA_S)
if erg is not None:
gueltig, _ = validierung(erg)
if gueltig:
min_alpha = alpha_f_deg
break
if min_alpha is not None:
row += f" {min_alpha}° |"
else:
row += " — |"
lines.append(row)
lines.append("")
return "\n".join(lines)
def main():
md = []
md.append("# Förderer-Berechnung (2D-Modell)\n")
md.append("## Gegebene Werte\n")
md.append("| Parameter | Wert |")
md.append("|-----------|-----:|")
md.append(f"| H₀ | {H0:.3f} m |")
md.append(f"| H₁ | {H1:.3f} m |")
md.append(f"| L₁ | {L1:.3f} m |")
md.append(f"| L_ES | {L_ES:.3f} m |")
md.append(f"| H_ES | {H_ES:.3f} m |")
md.append(f"| L_AS | {L_AS:.3f} m |")
md.append(f"| H_AS | {H_AS:.3f} m |")
md.append(f"| α_S | {ALPHA_S:.1f}° |")
md.append("")
md.append("## Ergebnisse\n")
# Fall 1: Aufwärts H0=2 → H1=5
md.append(md_tabelle("Fall 1: Aufwärts", h0_val=H0, h1_val=H1))
# Fall 2: Abwärts H0=5 → H1=2 (vertauscht!)
md.append(md_tabelle("Fall 2: Abwärts", h0_val=H1, h1_val=H0))
md.append("## Grenzen der Varianten\n")
md.append(grenzen())
result = "\n".join(md)
print(result)
if __name__ == "__main__":
main()
```
# Förderer-Berechnung (2D-Modell)
## Gegebene Werte
| Parameter | Wert |
|-----------|-----:|
| H₀ | 2.000 m |
| H₁ | 5.000 m |
| L₁ | 8.000 m |
| L_ES | 1.000 m |
| H_ES | 0.300 m |
| L_AS | 1.000 m |
| H_AS | 0.300 m |
| α_S | 3.0° |
## Ergebnisse
### Fall 1: Aufwärts
H₀ = 2.000 m, H₁ = 5.000 m → **aufwärts**, ΔH = 3.0000 m, L_rest = 6.000 m
Formel: L_F = (ΔH + H_ES + H_AS + L_rest·tan α_S) / (tan α_F **+** tan α_S)
Probe: H_F H_S H_ES H_AS = ΔH
| α_F [°] | L_F [m] | L_S [m] | H_F [m] | H_S [m] | Probe | Status |
|--------:|--------:|--------:|--------:|--------:|------:|--------|
| 3 | 37.3460 | -31.3460 | 1.9572 | -1.6428 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 6 | 24.8517 | -18.8517 | 2.6120 | -0.9880 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 9 | 18.5702 | -12.5702 | 2.9412 | -0.6588 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 12 | 14.7735 | -8.7735 | 3.1402 | -0.4598 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 15 | 12.2190 | -6.2190 | 3.2741 | -0.3259 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 18 | 10.3741 | -4.3741 | 3.3708 | -0.2292 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 24 | 7.8661 | -1.8661 | 3.5022 | -0.0978 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 27 | 6.9660 | -0.9660 | 3.5494 | -0.0506 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 33 | 5.5776 | 0.4224 | 3.6221 | 0.0221 | 3.0000 | ✓ gültig |
| 39 | 4.5401 | 1.4599 | 3.6765 | 0.0765 | 3.0000 | ✓ gültig |
| 45 | 3.7195 | 2.2805 | 3.7195 | 0.1195 | 3.0000 | ✓ gültig |
| 51 | 3.0408 | 2.9592 | 3.7551 | 0.1551 | 3.0000 | ✓ gültig |
### Fall 2: Abwärts
H₀ = 5.000 m, H₁ = 2.000 m → **abwärts**, ΔH = 3.0000 m, L_rest = 6.000 m
Formel: L_F = (ΔH H_ES H_AS L_rest·tan α_S) / (tan α_F **** tan α_S)
Probe: H_ES + H_F + H_S + H_AS = ΔH
| α_F [°] | L_F [m] | L_S [m] | H_F [m] | H_S [m] | Probe | Status |
|--------:|--------:|--------:|--------:|--------:|------:|--------|
| 3 | — | — | — | — | — | ⚠ Nenner = 0 |
| 6 | 39.5767 | -33.5767 | 4.1597 | -1.7597 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 9 | 19.6794 | -13.6794 | 3.1169 | -0.7169 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 12 | 13.0226 | -7.0226 | 2.7680 | -0.3680 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 15 | 9.6759 | -3.6759 | 2.5926 | -0.1926 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 18 | 7.6531 | -1.6531 | 2.4866 | -0.0866 | 3.0000 | ✗ L_S < 0, H_S < 0 |
| 24 | 5.3092 | 0.6908 | 2.3638 | 0.0362 | 3.0000 | ✓ gültig |
| 27 | 4.5624 | 1.4376 | 2.3247 | 0.0753 | 3.0000 | ✓ gültig |
| 33 | 3.4934 | 2.5066 | 2.2686 | 0.1314 | 3.0000 | ✓ gültig |
| 39 | 2.7537 | 3.2463 | 2.2299 | 0.1701 | 3.0000 | ✓ gültig |
| 45 | 2.2009 | 3.7991 | 2.2009 | 0.1991 | 3.0000 | ✓ gültig |
| 51 | 1.7637 | 4.2363 | 2.1780 | 0.2220 | 3.0000 | ✓ gültig |
## Grenzen der Varianten
| Parameter | Wert |
|-----------|-----:|
| ΔH | 0 … 5 m |
| L₁ | 3 … 15 m |
| α_S | 3° |
| L_ES, L_AS | 1.000 m |
| H_ES, H_AS | 0.300 m |
Zelle = kleinster gültiger α_F [°], **—** = keine Lösung
### Aufwärts
| ΔH \ L₁ | 3 m | 4 m | 5 m | 6 m | 7 m | 8 m | 9 m | 10 m | 11 m | 12 m | 13 m | 14 m | 15 m |
|--------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|
| 0 m | 33° | 18° | 12° | 9° | 9° | 6° | 6° | 6° | 6° | 6° | 6° | 3° | 3° |
| 1 m | — | 39° | 33° | 24° | 18° | 15° | 15° | 12° | 12° | 12° | 9° | 9° | 9° |
| 2 m | — | — | 45° | 39° | 33° | 24° | 24° | 24° | 18° | 15° | 15° | 15° | 12° |
| 3 m | — | — | 51° | 45° | 39° | 33° | 33° | 27° | 24° | 24° | 24° | 18° | 18° |
| 4 m | — | — | — | 51° | 45° | 39° | 39° | 33° | 33° | 27° | 24° | 24° | 24° |
| 5 m | — | — | — | — | 51° | 45° | 39° | 39° | 33° | 33° | 27° | 27° | 24° |
### Abwärts
| ΔH \ L₁ | 3 m | 4 m | 5 m | 6 m | 7 m | 8 m | 9 m | 10 m | 11 m | 12 m | 13 m | 14 m | 15 m |
|--------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|
| 0 m | 33° | 18° | 12° | 9° | 9° | 6° | 6° | 6° | 6° | 6° | 6° | 3° | 3° |
| 1 m | 24° | 12° | 9° | 6° | 6° | 6° | 6° | — | — | — | — | — | — |
| 2 m | — | 39° | 27° | 24° | 18° | 15° | 12° | 12° | 9° | 9° | 9° | 9° | 9° |
| 3 m | — | 51° | 39° | 33° | 27° | 24° | 24° | 18° | 15° | 15° | 15° | 12° | 12° |
| 4 m | — | — | 51° | 45° | 39° | 33° | 27° | 24° | 24° | 24° | 18° | 18° | 15° |
| 5 m | — | — | — | 51° | 45° | 39° | 33° | 33° | 27° | 24° | 24° | 24° | 24° |
**Lücke bei ΔH = 1 m, L₁ ≥ 10 m:** Im Abwärts-Fall ist der Zähler der L_F-Formel
$(ΔH - H_{ES} - H_{AS}) - L_{rest} \cdot \tan(α_S)$. Bei ΔH = 1 m und L₁ = 10 m wird
$L_{rest}$ = 8 m und der Zähler = (1 0,3 0,3) 8 · tan 3° = 0,4 0,419 = 0,019.
Da der Nenner für alle α_F > 3° positiv ist, wird L_F negativ — es gibt keine gültige Lösung.
Weil bei so kleinem Höhenunterschied die Reststrecke mit 3°-Neigung allein schon mehr Höhe verbraucht als verfügbar ist.
Die Reststrecke allein erzeugt durch die 3°-Neigung der S-Strecke plus H_ES + H_AS bereits mehr Höhe als der verfügbare Höhenunterschied ΔH = 1 m hergibt.
@@ -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"
}
]
@@ -19,5 +19,81 @@
"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
}
]
}
@@ -744,7 +744,7 @@
{
"Sivasnr": 834372401,
"ProfilTyp": "WEICHE S C DELTA 1400/700, KPL. P",
"WeichenTyp": "Dreifachweiche",
"WeichenTyp": "Deltaweiche",
"KurvenWinkel": 90,
"Schaltungstyp": "P",
"Breite": 1400,
+1 -1
View File
@@ -1 +1 @@
[{"id":"c_ILS","name":"ILS","hasShapes":false,"items":[{"id":"c_Kreiselmodule","name":"Kreisel-Module","hasShapes":true},{"id":"c_Zusatzmodul","name":"Zusatzmodul","hasShapes":true},{"id":"c_Foerderer","name":"Förderer","hasShapes":true},{"id":"c_Kurven","name":"Gefällestrecke","hasShapes":true}]},{"id":"c10","name":"PBU","hasShapes":true},{"id":"c_Background","name":"Background","hideName":true,"hasShapes":true},{"id":"c_Parts","name":"Parts","description":"Shapes used for creating new Assemblies while Session","hasShapes":true},{"id":"c_Session","name":"Session","hasShapes":true},{"id":"c_Omniflo","name":"Omniflo","hasShapes":false,"items":[{"id":"c_Boegen","name":"Bögen","hasShapes":true},{"id":"c_Gerade","name":"Aluprofil Gerade","hasShapes":true},{"id":"c_Weichen_90","name":"Weiche 90°","hasShapes":true},{"id":"c_Weichen_45","name":"Weiche 45°","hasShapes":true},{"id":"c_Weichen_Parallel","name":"Weichen Parallel","hasShapes":true},{"id":"c_Weichenkoerper","name":"Weichenkörper","hasShapes":true},{"id":"c_Weichenkombinationen","name":"Weichenkombinationen","hasShapes":true},{"id":"c_TEFElemente","name":"TEF Elemente","hasShapes":true}]},{"id":"c_OmnifloBogen","name":"Omniflo Bogen","hasShapes":true,"items":[{"id":"c_Boegen_90","name":"Bögen 90°","hasShapes":true}]},{"id":"c_OmnifloWeiche","name":"Omniflo Weiche","hasShapes":true}]
[{"id":"c_ILS","name":"ILS","hasShapes":false,"items":[{"id":"c_Kreiselmodule","name":"Kreisel-Module","hasShapes":true},{"id":"c_Zusatzmodul","name":"Zusatzmodul","hasShapes":true},{"id":"c_Foerderer","name":"Förderer","hasShapes":true},{"id":"c_Kurven","name":"Gefällestrecke","hasShapes":true}]},{"id":"c10","name":"PBU","hasShapes":true},{"id":"c_Background","name":"Background","hideName":true,"hasShapes":true},{"id":"c_Parts","name":"Parts","description":"Shapes used for creating new Assemblies while Session","hasShapes":true},{"id":"c_Session","name":"Session","hasShapes":true},{"id":"c_Omniflo","name":"Omniflo","hasShapes":false,"items":[{"id":"c_Boegen","name":"Bögen","hasShapes":true},{"id":"c_Gerade","name":"Aluprofil Gerade","hasShapes":true},{"id":"c_Weichen_90","name":"Weiche 90°","hasShapes":true},{"id":"c_Weichen_45","name":"Weiche 45°","hasShapes":true},{"id":"c_Weichen_Parallel","name":"Weichen Parallel","hasShapes":true},{"id":"c_Weichenkoerper","name":"Weichenkörper","hasShapes":true},{"id":"c_Weichenkombinationen","name":"Weichenkombinationen","hasShapes":true},{"id":"c_TEFElemente","name":"TEF Elemente","hasShapes":true},{"id":"c_KettenFoerderer","name":"KettenFörderer","hasShapes":true}]},{"id":"c_OmnifloBogen","name":"Omniflo Bogen","hasShapes":true,"items":[{"id":"c_Boegen_90","name":"Bögen 90°","hasShapes":true}]},{"id":"c_OmnifloWeiche","name":"Omniflo Weiche","hasShapes":true},{"id":"c_vario_vertikal_bogen","name":"Varioboegen vertikal","hasShapes":true}]

Some files were not shown because too many files have changed in this diff Show More