Compare commits

..

196 Commits

Author SHA1 Message Date
m.stangl 2325316dd3 Claude init ausgeführt 2026-07-09 11:04:38 +02:00
m.stangl 5bfda0abf6 Aufruf der Unittests aus dem Root des PROJECT_DIR. Dann funktionieren die Includes wieder 2026-01-28 18:42:20 +01:00
m.stangl 200145eea7 errorlevel wurde nicht korrekt zurückgemeldet 2026-01-28 18:36:14 +01:00
m.stangl c29f13a4ae Unittests zu allen Elementen erstellt 2026-01-28 18:28:54 +01:00
m.stangl e8c6b17ea9 trenne das Laden der .env pip libraries von dem Setzen der Umgebung. setenv.bat enthält jetzt bei Bedarf den python Interpreter auf dem Share 2026-01-28 15:41:27 +01:00
m.stangl 85132193dd Unittest Aufruf über unittest discover Aufruf 2026-01-28 11:09:49 +01:00
m.stangl 4aae9e153d lib und Elemente Ordner mit __init__ versehen, so dass man beim import die Verzeichnisse durch Punktpfade angeben kann 2026-01-27 19:00:27 +01:00
m.stangl 855a874e4a Unittest Aufruf dazu 2026-01-27 17:03:36 +01:00
m.stangl 829fe76d0f Varioförderer refactored mit Claude. Unittests dazu gebaut. 2026-01-27 16:43:24 +01:00
m.stangl ab415071c2 Rechtsschreibkorrektur 2026-01-27 16:21:27 +01:00
m.stangl c8760fb024 encoding Standard in die erste Zeile als Kommentar eingefügt 2026-01-27 16:16:30 +01:00
m.stangl 5f59433ac8 Methode erzeugt um auf einen Rutsch alle Textdxf Dateien zu erzeugen 2026-01-27 16:11:53 +01:00
m.stangl 79ff6794db settings und formatierungseinstellungen für das Projekt dazu 2026-01-27 16:10:57 +01:00
m.stangl 19282888ee alles neu mit black formatiert. handler_context.py impl. um weniger Übergabeparameter zu haben 2026-01-27 16:09:52 +01:00
m.stangl 4d09aee02b black zur Formatierung und ruff für den import Sortierung zu den Packeten hinzu 2026-01-27 15:58:42 +01:00
m.stangl b58e80b79f überflüssigen Aufruf entfernt 2026-01-27 15:00:41 +01:00
P.wolok e124272c13 Aktualiesung der readme fehlender Elemente 2026-01-27 14:07:10 +01:00
P.wolok 586102cf00 Weichekoerper aktualisiert, weil dort ein Fehler drin war 2026-01-27 14:03:43 +01:00
P.wolok 7f81240559 Aktualisierung Omniflo Blöcke wegen einlesesung stopper und dummy scanner und textdatei mit fehlenden tests 2026-01-27 10:35:21 +01:00
s.hensch d9d398b6fd Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2026-01-26 16:14:11 +01:00
s.hensch 9a8f0ff374 Kurve_links_90°_R500_Gefälle um -90° gedreht, um zu testen, ob die Drehung ohne weiteres geändert werden kann 2026-01-26 16:13:51 +01:00
P.wolok c356b24fe9 Man kann jetzt Text sehen, falls irgenwas nicht passt zu dem letzten Springen 2026-01-26 13:22:40 +01:00
P.wolok d8f75450a9 Omniflo hat jetzt Stopper und scanner 2026-01-26 12:36:37 +01:00
s.hensch 257ee8304a Symbol Block für Omniflo Stopper hinzugefügt; Omniflo Lib mit allen Symbolen hinzugefügt 2026-01-26 11:52:49 +01:00
P.wolok 0e069456ac Erlaubt nun region 2026-01-26 11:37:31 +01:00
s.hensch 77b14233ed Symbol für Stopper und Scanner für Omniflo hinzugefügt 2026-01-26 11:19:12 +01:00
P.wolok f9558bf8b5 refactoren einfügen von scanner und separtor zu Omniflogerade 2026-01-26 11:04:53 +01:00
P.wolok 05f1adc1b4 Refactor und dokumentation 2026-01-26 09:27:48 +01:00
P.wolok 9e024869d4 Refactor änderung im Kode für Gefähllestrecke die keine Ausnahmen besitzt 2026-01-24 10:00:20 +01:00
P.wolok 4c071362a1 Refactor eckrad 2026-01-23 10:57:56 +01:00
P.wolok a2fc823341 Refactoren und Kommentieren 2026-01-21 16:04:04 +01:00
P.wolok 3e4103c6f8 Mehr Kommentare 2026-01-21 11:35:38 +01:00
P.wolok 212ec79ce8 Änderung paar Umvormulierungen zusatz von paar Kommentarten 2026-01-21 11:09:08 +01:00
P.wolok e67935ac6f Refactoring von gefällestrecke und elemente von csv behandlungen zu einer neuen File 2026-01-21 09:09:27 +01:00
P.wolok e928ee363d Paar namens änderung rotation ausgegleicht falls nur as es element da ist man die rotation von dieser passt 2026-01-21 08:01:41 +01:00
P.wolok a5baccb40a Eckrad kunktioniert 2026-01-20 11:38:04 +01:00
P.wolok edfb75778e Update test dxf, refactorn von direkt am Kreisel bei Vario Förderer 2026-01-20 08:52:34 +01:00
m.stangl 202334570e Beispiel Ordner und eine paar csv Dateien und deren Ausgaben dazu 2026-01-16 09:46:11 +01:00
P.wolok 2cf0cf688e Paar namen änderungen 2026-01-15 10:12:42 +01:00
P.wolok 53e42c6bc3 Korrektur verbunden mit einer Gefälle von 0 grad 2026-01-08 11:07:08 +01:00
P.wolok a666347da9 Motor Umlenkstation ausrechnen korrekiert und Varioförder horenzontal korregiert 2026-01-07 12:48:55 +01:00
P.wolok e46ff3bd1b Block_methoden in einen eigen File refactored 2025-12-18 08:35:41 +01:00
P.wolok 843011bab9 Vario Kurve mit Gefällestrecke verbunden verbessert, Sonderfall horinzonal und 3 grad bogen hinzugefügt 2025-12-17 14:42:53 +01:00
s.hensch d909fa6c1a ASCII vs binary test - jetzt ASCII gespeichert 2025-12-16 15:19:44 +01:00
s.hensch 6ffb679497 Layer 6-SP-3D entfernt, da nicht mehr verwendet 2025-12-16 15:17:09 +01:00
s.hensch 0dde02eabe Layerfarbe des ZZSCANNER Layers korrigiert (grün) 2025-12-16 15:11:08 +01:00
s.hensch 442699de19 Ursprung der Kurven ILS Gefälle auf die halbe Höhendifferenz gesetzt 2025-12-16 14:07:01 +01:00
s.hensch b455f4370f Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-12-16 13:45:51 +01:00
s.hensch 1d4788479a Testweise Ursprung der Kurve links 90° Gefälle auf die halbe Höhendifferenz gesetzt 2025-12-16 13:45:42 +01:00
P.wolok 8eb4345cdb Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-12-16 13:01:51 +01:00
P.wolok 847723fe15 Korrektur der Gefällestrecke 2025-12-16 13:01:46 +01:00
s.hensch fd52f2b579 In den Blöcken der Gefällekurven wurden Volumenkörper in Flächen umgewandelt, um problemlose weiterverarbeitung zu gewährleisten 2025-12-16 13:00:53 +01:00
P.wolok 0272daed19 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-12-16 12:06:44 +01:00
P.wolok 89c8530851 Vorbereitung für Förderer 2025-12-16 12:06:33 +01:00
s.hensch 0dee2a8af7 Boundingbox, Koordinatenursprung und Delta-Attribute für Gefällekurven ILS R500 korrigiert. 2025-12-16 12:02:39 +01:00
P.wolok c734e2f821 Behebung von Bugs 2025-12-16 10:13:50 +01:00
P.wolok c3887e2269 Name der Gefälle Kurve Festgelegt 2025-12-16 07:54:47 +01:00
s.hensch 73206fda5f Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-12-15 16:06:07 +01:00
s.hensch 40227e9c73 Gefällebögen ILS für den Radius R500 links/rechts als 2d/3d zur Library hinzugefügt. 2025-12-15 16:05:54 +01:00
P.wolok 50a1e12749 paar änderung in der Shape list 2025-12-15 15:28:00 +01:00
P.wolok 8e1b90d313 Korrektur der VarioFoerderer Gefällestrecke vor allem bei ab 2025-12-15 14:07:37 +01:00
P.wolok 7092d13280 Einfügen von anderen 3D Elementen in dxf2lib (nicht getestet) 2025-12-15 13:31:08 +01:00
P.wolok 61a04726fe dxfupdate für surfaces 2025-12-15 13:11:54 +01:00
s.hensch 274814e38b Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-12-15 12:55:09 +01:00
s.hensch b5149952b8 Omniflo Bogen als 3D FLächenmodell zum Testen hinzugefügt 2025-12-15 12:54:58 +01:00
P.wolok 161fc9cebb Fertigstellung für Offset für Vario kurven im Vario 2025-12-15 12:40:49 +01:00
P.wolok 7b0427111e Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-12-15 10:22:10 +01:00
P.wolok 24f35a22c3 Offset berechnung verbessert (angefangen 2025-12-15 10:21:54 +01:00
s.hensch 38d303b8a0 Delta-Werte für Ein-/Auslauf der Gefällestrecke und des Varioprofils für den neuen Ursprung der Blöcke angepasst. 2025-12-15 10:20:52 +01:00
P.wolok a3163e12fe Anpasung des Offset berechnung für antrieb Kurven 2025-12-15 09:13:10 +01:00
P.wolok fabed828db Vorbereitung für vario offset bei kurven 2025-12-10 12:39:02 +01:00
P.wolok 66a2e4f860 Hinzufügen des vario offset für horinzontale förderer 2025-12-10 10:51:32 +01:00
P.wolok 72f21f715a Refactoring und korrektur der Vario Förder Vario linie wenn der ab 3 grad vario keine Motor/Umlenk station hat 2025-12-10 09:54:37 +01:00
P.wolok b4d8632fdf refectoring von omniflo 2025-12-08 14:21:14 +01:00
P.wolok 9bb174b621 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-12-08 13:06:27 +01:00
P.wolok c2722d0bd0 Refactoring 2025-12-08 13:06:20 +01:00
s.hensch 79299bc914 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-12-08 13:04:00 +01:00
s.hensch 94a53a29d9 Koordinaten der Vario-Kurven-Blöcke in das Zentrum der Boundingbox (der 3D Elemente) gesetzt. Damit soll der Ursprung mit den Elementen des RDC übereinstimmen. 2025-12-08 13:03:48 +01:00
P.wolok f7c3c39f51 antriebskurve refactored 2025-12-08 09:40:20 +01:00
P.wolok 9efee64c1e changes to the layer system 2025-12-08 07:28:56 +01:00
P.wolok d0d8880dc0 geändert wie ich den vorderen block layer definiere 2025-12-08 05:57:22 +01:00
P.wolok f8b8b0dd15 weiteres refactoring 2025-12-04 15:12:26 +01:00
P.wolok 0f3d39e7ba Refoctoring 2025-12-04 11:25:51 +01:00
P.wolok 0680bad028 Refactoring vom foerderer 2025-12-03 10:23:17 +01:00
P.wolok a200d79ab1 Refectoring vom Kreisel 2025-12-02 16:18:08 +01:00
P.wolok 5b2f4787a2 Pin bereich bei kreisel abhängig von Winkel angepasst 2025-12-02 14:52:41 +01:00
P.wolok 1d3fa60ed4 werte in die config eingefügt 2025-12-02 14:18:09 +01:00
P.wolok 805213dd7f Vorbereitung für neue Elemente 2025-12-02 11:49:05 +01:00
P.wolok 726ca87e96 As und es Elemente werden nun in 3d gebogen 2025-12-02 11:02:15 +01:00
y.wang ba36863ea6 Die Derehung für alle ES- und AS-Element wurde auf 0 gesetzt. 2025-12-02 09:03:14 +01:00
P.wolok c15505ca05 Es as elemente drehung für single objekte gemacht 2025-12-02 08:40:19 +01:00
P.wolok e67fa975aa Hinzufügen der Seperatoren und Scaner im Ils, verallgemeinerung vom Code, vorbereitung für die drehung der as es elemente 2025-12-01 14:42:26 +01:00
s.hensch 22e1338b5a 3D Solid in TEF Bogen zu Versuchszwecken in Linien und Flächen umgewandelt, damit Boundingbox korrekt berechnet wird. 2025-11-25 12:38:04 +01:00
s.hensch 23b6a244eb Merge 2025-11-25 09:32:18 +01:00
s.hensch af89011374 VARIO Bögen horizontal 30/60/90° mit TEF innen oder außen in die ils_lib eingefügt 2025-11-25 09:21:30 +01:00
P.wolok 7979ad683d Vorbereitung von omniflofoerder und auskommentieren des Förderer kurve bis die Blöcke vorhanden sind 2025-11-25 08:55:18 +01:00
P.wolok 22efec8148 Paar bugfixes. die Sivasnummer der tef und of gerade in die config getan 2025-11-24 14:38:07 +01:00
P.wolok 8fbaaf1335 Vorbereitung für die Kurven für gefällestrecke ergenzung von bogen 9 grad in config, jason vorbereitung für test_files jason in plant2dxf ist aktuell auskommentiert weil es die dxf file ändert wenn es 3d elemente beinflusst 2025-11-19 11:36:39 +01:00
y.wang 76becb138f Die Layern für 3D Model bei VarioFörderer sind eingeblendet. 2025-11-18 13:39:11 +01:00
P.wolok 7b43cabf29 Forbereitung für zukünftige erweiterung und erstellung von Unittests 2025-11-18 12:08:43 +01:00
P.wolok 7ed328d897 Vorbereitung wenn mehr blöcke zur verfügung stehen, fertig stellung eckrad 2025-11-17 11:40:14 +01:00
P.wolok b59bed3c38 entfernung von doppelten Leerzeichen 2025-11-17 08:26:04 +01:00
P.wolok 4af894d7e9 habe die Bogen namen ins cofig eingefügt und habe denn namen der layer für die automatisiereung im config geändert um zu verdeutlichen was es tatsächlich ist 2025-11-13 10:12:15 +01:00
s.hensch 37d113b7fd ILS Bogen 39 ab Offsets korrigiert. Linie zum Anzeigen eines Pinbereichs eingefügt und als Block auf dem Layer pinbereich gelegt 2025-11-10 14:34:03 +01:00
s.hensch d85e50ffc5 Falsche Delta-Werte für Abstand von Ursprung und Ein- bzw Auslaufpunkt bei Bögen korrigiert 2025-11-10 12:18:28 +01:00
s.hensch 06312fa503 Pinbereich als Linie für die Kennzeichnung von Pinkreiseln hinzugefügt 2025-11-10 11:51:32 +01:00
s.hensch 7cfd6930aa Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-11-10 11:30:09 +01:00
s.hensch e6a20ccd76 Scanner und Richtungspfeil für die Erstellung von DXF hinzugefügt 2025-11-10 11:29:57 +01:00
P.wolok 2dce965a93 Kommentare Hinzugefügt für den förderer 2025-11-10 10:10:27 +01:00
P.wolok aa711c49d3 Offset von 3 grad ab bogen minimiert wenn es mit was anderem Vorderer verbundem ist 2025-11-06 10:50:22 +01:00
s.hensch 3a9d105785 Korrektur der letzten Variobögen. 2025-11-05 11:41:54 +01:00
s.hensch ff681c9e52 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-11-05 11:35:09 +01:00
s.hensch 780139a8c8 Korrigierte Bögen und 2.5D Linien für Vario hinzugefügt 2025-11-05 11:35:05 +01:00
P.wolok c97b36254d Die Sp werte von den blocken selber werden jetzt benutzt um die offsets auszurechnen und die Offsets aus dem shape liste gelöscht als resultat 2025-11-03 12:01:37 +01:00
s.hensch c5808fc281 Vario Bogen 39° ab VP_0 korrigiert. Dieses mal wirklich. WIRKLICH. 2025-10-29 16:08:09 +01:00
s.hensch ec066cb4a5 39° ab Bogen VP_0 korrigiert. Wirklich wirklich aber jetzt. 2025-10-29 16:01:27 +01:00
s.hensch 2248c4ebf2 Vario Bogen 39° ab VP_0 korrigiert. Dieses mal wirklich. 2025-10-29 15:50:07 +01:00
s.hensch 7373f85370 39° ab Bogen korrigiert 2025-10-29 15:39:13 +01:00
s.hensch b3baac9519 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-10-29 12:53:02 +01:00
s.hensch 4b23f26343 Vario Bogen in 3° Auf und Ab für Horizontalen Förderer hinzugefügt 2025-10-29 12:52:59 +01:00
P.wolok df772ad288 Die Förder funktionieren nun auch mit ab varios (inklusive verbindung mit kreisel), die grünen linien fehlen noch 2025-10-28 15:02:15 +01:00
P.wolok acfa53b722 die auf voerder kann man jetzt vertig stellen und eine neue Methode zur drehung der Blöcke wurde hinzugefügt 2025-10-23 12:38:12 +02:00
s.hensch d55a1b08d5 3D und 2.5D für alle Bögen SP und Vario Profile hinzugefügt. Damit kann man selektiv 3D über die Layersteuerung hinzuschalten. 2025-10-22 14:25:58 +02:00
s.hensch e5dbd579ee 2.5D Linie für Stauprofilbögen bei VARIO AUF Bögen hinzugefügt, um Leistung beim betrachten nicht zu beeinträchtigen. Testweise. 2025-10-22 13:16:17 +02:00
s.hensch f7b68da60a Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-10-22 11:31:13 +02:00
s.hensch 6be34bab1d Fehlende Bögen für Vario Förderer hinzugefügt. Jetzt vorhanden: 6/9/12/15/18/21/27/33/39/45/51 jeweils auf und ab 2025-10-22 11:31:08 +02:00
P.wolok a56fa8918a Die Vario Foerder kann man nun mit Kreisel verbinden 2025-10-21 16:27:26 +02:00
s.hensch 5aa46eb005 48° Bögen auf und ab in der ils_lib hinzugefügt. 2025-10-20 14:16:22 +02:00
s.hensch 7eecc97478 Alle Bögen (auf/ab) für Vario Förderer AUF hinzugefügt 2025-10-16 08:30:51 +02:00
y.wang 067851b783 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-10-15 11:53:50 +02:00
y.wang 8e97df63f8 die 3D Modell für ILS VARIO 2025-10-15 11:53:46 +02:00
P.wolok 778a885e6e erster protype einer förderers 2025-10-15 11:52:04 +02:00
s.hensch 22243579a9 Vario Zeichnungen in Lib kopiert für zentrale Verwendung 2025-10-09 14:50:43 +02:00
s.hensch 24ec2e9a5b Blöcke für Varioförderer von Volumenkörper in Flächenkörper umgewandelt 2025-10-09 13:05:49 +02:00
s.hensch 74c7ded0f8 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-10-09 12:47:05 +02:00
s.hensch 49eba2e921 Testblock für die Überprüfung der Verwendung von Flächen statt volumenblöcken 2025-10-09 12:46:08 +02:00
P.wolok 2f5b43ad12 Die höhen werden nun im 2.5 d richtig angezeigt und die linien übernehmen nun die layers 2025-10-08 11:42:23 +02:00
P.wolok 971a766f9f man kann nun gefaellestreckne nur mit einem kreisel verbinden 2025-10-07 15:01:06 +02:00
P.wolok 1f0ec6d687 alle gefaellestrecken ausnahmen sind jetzt drinnen logik wenn kreis nicht mit zwei kreisel verbuden ist 2025-10-07 09:01:27 +02:00
P.wolok 04f3aa6cb6 gefaellegerade sonderfall 2025-10-02 15:26:31 +02:00
s.hensch 20d4e49394 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-10-02 10:22:16 +02:00
s.hensch 63e50a484e Für Vario-Library eine dxf hinzugefügt als Ergänzung zur dwg 2025-10-02 10:21:53 +02:00
P.wolok 3f00071fd1 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-10-02 10:15:07 +02:00
P.wolok 0f30e879a8 Man kann nun zwei Kreisel am kreisel mit der Gefällestrecke verbinden (aber nur zwei Kreisel noch nicht ein Kreisel und eine Strecke) 2025-10-02 10:15:01 +02:00
s.hensch 5b4d5ba76d Library-File als dxf für ILS Varioförderer mit Beispielkonfiguration für die Verwendung zum Zusammensetzen im Plant2Dxf angelegt. Noch nicht vollständig. 2025-10-02 10:06:03 +02:00
P.wolok d29cf07cfc Erste Version von Gefaellestrecke, man kann noch nicht kreisel mit einander verbinden 2025-10-01 14:16:22 +02:00
P.wolok 8a1f90ca95 added cofig paraemeters 2025-09-29 12:40:05 +02:00
P.wolok 008218ebc1 removed test version started creating gefaellestrecke 2025-09-29 12:39:29 +02:00
P.wolok d92b060ab2 omniflo_lib update 2025-09-29 11:30:29 +02:00
y.wang 698aa67de5 Die DXF Datai für die 400/750 Weichen sind angepasst 2025-09-29 11:28:14 +02:00
P.wolok e0375ed29b omniflo_lib update 2025-09-29 11:07:22 +02:00
s.hensch 0cd87f7800 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-25 16:21:08 +02:00
s.hensch 355db92c34 Für jede Richtung (links/rechts) wurde jeweils ein Aus- und Einschleuselement als Zeichenblock bzw Insert hinzugefügt. Damit ist die Zuordnung nun eindeutig. Spiegeln der ES/AS Elemente ist nicht mehr zulässig. 2025-09-25 16:20:56 +02:00
P.wolok 2b797b7f3c Update der Omniflo_lib 2025-09-25 12:44:57 +02:00
y.wang c003409a02 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-25 12:35:51 +02:00
y.wang 37c85a8805 die DXF für alle OFWEICHEN UND TEFWEICHEN sind aktuallisiert. 2025-09-25 12:35:47 +02:00
P.wolok 40fc2b0dc5 Update de romniflo_lib 2025-09-24 16:22:35 +02:00
s.hensch 0224cd5649 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-24 16:13:59 +02:00
s.hensch 2acaf2489d Koordinatenursprung für Ein- und Ausschleuselement für die einfache Positionierung auf den verlängerten Schnittpunkt von Stauprofil und Laufprofil neu gesetzt. 2025-09-24 16:13:55 +02:00
y.wang d3108fcdc2 die DXF für TEFBOGEN sind koorigiert. 2025-09-23 10:18:32 +02:00
y.wang 03b1bfd6c3 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-19 13:50:06 +02:00
y.wang e1a2f0a06a die dxf für alle Bögen sind updatet wegen CPs. 2025-09-19 13:50:01 +02:00
P.wolok 102620b220 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-18 11:50:43 +02:00
P.wolok 00073e6d03 Layer für linien erstellt und Linien Kordinaten system koriegiert 2025-09-18 11:50:33 +02:00
y.wang b831060515 Merge 2025-09-18 10:45:10 +02:00
y.wang e116fba375 Umbennung der Dateiname 2025-09-18 10:37:44 +02:00
P.wolok 4640262b81 Umbennenung von den Weichen 2025-09-18 09:50:59 +02:00
P.wolok aa04ee3fd1 Die tags sind nun unsichtbar und nur ein Name wird erstellt. Die z Kordinatenfür ILS syteme wurden hinzugefügt und eine vorübergehende arc für angetriebene Kurven wird erstllet bevor man die Inserts hat 2025-09-17 11:37:31 +02:00
P.wolok 291b2eaec5 Bei plant2dxf wird die höhe nun mittgenommen und bei dxf2lib wird wieder der richtige Ordner benutzt 2025-09-15 17:04:45 +02:00
P.wolok 6861052fb5 dxf ordner in omniflo umbenannt 2025-09-15 15:29:22 +02:00
P.wolok ad48e9ef76 Man kann jetzt bestimmte dxf.layer durch den cofig aus der boundingbox berechnung für die Mitte auschließen 2025-09-15 15:10:22 +02:00
P.wolok 20fa0e9203 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-15 13:59:48 +02:00
P.wolok 867e366825 everything now gets layer not only omniflo 2025-09-15 13:59:18 +02:00
m.stangl 134607264a Element mit Symbol zu Testzwecken hinzu 2025-09-15 13:56:29 +02:00
P.wolok e4222d699c Die endBox hat nun ein layer in omniflo system 2025-09-12 10:40:26 +02:00
P.wolok 523fdf9c59 Man kann jetzt auch in plant2dxf die Insert sehen 2025-09-11 11:22:36 +02:00
s.hensch 2daae8af83 Name des inneren Blocks geändert, um doppelte Namen in der Sammlung zu vermeiden 2025-09-10 16:19:19 +02:00
s.hensch 4eb1a05e9b Innere Blocknamen geändert, sodass keine Referenzierung mehr auf einen bestehenden Block möglich ist 2025-09-10 16:11:02 +02:00
P.wolok e3494530ea Inserts richtig in die Bounding box reingetan 2025-09-10 15:32:06 +02:00
P.wolok ca2c06c8f9 Circle und arch logic bishen verbessert (funktieoniert noch nicht ganz), libary zum testen 2025-09-09 15:32:30 +02:00
P.wolok 3c4a149aa6 inserts funktionieren jetzt muss noch mittelpunkt richtig setzten 2025-09-09 15:04:51 +02:00
P.wolok 51fd65d60b Zusätzliche log informationen 2025-09-09 08:04:20 +02:00
P.wolok 7c662c9663 test mit blöcken erstellen 2025-09-08 16:29:31 +02:00
P.wolok 50f2d5f50e Layer farben werden in plant2dxf angenommen (Layer selber nicht), dxf2lib wurde refrectored für die Leserlichkeit 2025-09-08 15:42:36 +02:00
P.wolok 3905da309c Übernimmt nun die Layers und die Farben bei der Bibliothek Erstellung 2025-09-08 10:48:59 +02:00
P.wolok 566b3a0ada Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-05 16:39:50 +02:00
P.wolok ff0b821822 Hinzufügen von Nachricht wenn ein dxftype nicht zugelassen ist 2025-09-05 16:39:08 +02:00
m.stangl 8d93b07fa0 übrige Linien aus den .dxf Dateien entfernt, die ausserhalb des Sichtbereichs waren 2025-09-05 16:38:48 +02:00
P.wolok cc26152e62 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-05 15:56:43 +02:00
P.wolok de60ec8ce1 added Circle and Spline vor Bindbox calculation 2025-09-05 15:56:10 +02:00
y.wang 07b69469f1 Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf 2025-09-05 13:19:55 +02:00
y.wang 99429c4f65 Block getrennt 2025-09-05 13:19:48 +02:00
P.wolok e89e4abf3f Drehung des Blocks korrigiert 2025-09-05 10:14:04 +02:00
y.wang 2ca1104b3c merge 2025-09-04 18:19:00 +02:00
y.wang 8eb46aa2d1 alle dxf datei für Omniflo sind eingepflegt 2025-09-04 18:18:07 +02:00
P.wolok 43b2ff35af einfügen von einem eigennamen für die Blöcke 2025-09-04 16:36:24 +02:00
192 changed files with 11790827 additions and 214670 deletions
+78
View File
@@ -0,0 +1,78 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## What this project does
`plant2dxf` reads a RuleDesigner CSV export describing all components of a plant/conveyor system (Kreisel, Gefällestrecke, VarioFörderer, Omniflo, etc.) and generates a DXF drawing of the plant by placing and assembling DXF blocks from library files. Positions come from the CSV's `Planquadrat` column (`X:<val> Y:<val>`, in mm); component-specific properties come from the `Merkmale` JSON column; connections between components come from `NachbarIds`.
Full functional documentation (CSV format, config format, per-element-type handler behavior, ezdxf usage patterns) lives in [doc/plant2dxf_dokumentation.md](doc/plant2dxf_dokumentation.md) — read it before making non-trivial changes to handler logic, it is much more detailed than this file.
## Commands
All commands are run via the `.bat` scripts in `bin/` (Windows only; this project has no `.sh` counterparts). Scripts call `setenv.bat` first, which sets `PROJECT`, `PROJECT_BIN`, `PROJECT_CFG`, `PROJECT_DOC`, `PROJECT_LIB`, `PROJECT_DATA`, `PROJECT_WORK`, `PROJECT_TEST`, `PROJECT_LOG` and creates missing `data/`, `work/`, `log/`, `testdata/` folders.
```bat
bin\install_py.bat REM create .venv and pip install lib/requirements.txt (no-op if .venv exists)
bin\manage_interpreter.bat activate REM activate .venv (used internally by other scripts)
bin\run_unittests.bat REM run all *_tests.py under lib\Elemente via unittest discover
bin\plant2dxf.bat -f <csv-datei> [-c shapes.cfg] [-l blocks.dxf] [-o output.dxf] [-v]
```
`run_unittests.bat` runs `python -m unittest discover -t "%PROJECT%" -s lib\Elemente -p "*_tests.py"` from the project root — tests must be discovered from repo root or the `lib.*` imports break. To run a single test file/case directly (with venv already active):
```bat
python -m unittest lib.Elemente.Kreisel_tests -v
python -m unittest lib.Elemente.Kreisel_tests.TestKreiselModell.test_from_merkmale -v
```
Dependencies (`lib/requirements.txt`): `ezdxf==1.4.1`, `svg.path==7.0`, `pydantic>=2.0.0`, plus `ruff` and `black` (line-length 88, target py312 — see `pyproject.toml`).
## Architecture
### Processing pipeline (`lib/plant2dxf.py`)
1. Load `cfg/shapes.cfg` and `cfg/allgemein.cfg`.
2. Create a new empty DXF document (R2018, millimeters).
3. `arbeiten_mit_csv.get_nachbar_information(csv_path)` does a full pre-pass over the CSV to build a neighbor map (`strecken_nachbarn`): for every Gefällestrecke/VarioFörderer it resolves which Kreisel/Eckrad/angetriebene Kurve/other VarioFörderer are attached via `NachbarIds`, and captures their rotation, height, position and drehrichtung. This neighbor map drives almost all the geometric decisions downstream.
4. Row-by-row over the CSV: parse `TeileArt`/`TeileId`/`Planquadrat`/`Merkmale`, resolve the block library file for that `TeileArt` from `allgemein.cfg` (cached per path so each library is read once), dispatch to a handler function named `handle_<teileart normalized>` (spaces/dots → underscores, lowercased — see `arbeiten_mit_csv.normalize_func_name`), and call it with a `HandlerContext` (`lib/handler_context.py`) bundling `msp`, `teileid`, `merkmale`, `x`, `y`, `doc`, `lib_doc`, `symbols`, `strecken_nachbarn`, `config`, `config_allgemein`.
5. Save the DXF to the output path.
Handler dispatch has special-cased overrides: any `TeileArt` starting with "Omniflo" or "TEF" is routed to `handle_omniflo` regardless of exact name, and "ILS 2.0 Kreisel*" variants all route to `handle_ils_2_0_kreisel`.
### Handler functions (`lib/plant2dxf.py`)
One `handle_*` function per `TeileArt`, e.g. `handle_ils_2_0_kreisel`, `handle_ils_2_0_gefaellestrecke`, `handle_ils_2_0_variofoerderer`, `handle_ils_2_0_eckrad`, `handle_ils_2_0_kurve_angetrieben`, `handle_bt___beladung`/`handle_bt___entladung`, `handle_omniflo`. Each handler:
- builds a Pydantic element object via `<ElementClass>.from_merkmale(...)` (in `lib/Elemente/`),
- inspects `ctx.strecken_nachbarn` to determine how many/which neighbors it's connected to (0, 1, or 2 Kreisel/Eckrad, direct-to-Kreisel vs. via-Stahlband, connected to an angetriebene Kurve needing a Motor-/Umlenkstation),
- builds a deterministic, parameter-encoded block name (e.g. `Ils_2.0_Gefaellestrecke_{laenge}_{hoehe}_{hat_umlenk}_{hat_motor}_{tefkurve}_...`) and only constructs the block geometry via `doc.blocks.new(...)` if that exact name doesn't already exist in `doc.blocks` — this is the project's block-deduplication/caching strategy, and reusing it correctly for any new variant is essential to avoid duplicate block definitions,
- inserts the resulting block (or raw lines for simple cases) into the modelspace with `msp.add_blockref(...)`.
This dispatch/handler structure — and especially the block-name-encodes-geometry-variant caching pattern — is the main thing to understand before adding a new `TeileArt` or modifying connection logic.
### Element classes (`lib/Elemente/`)
Pydantic models with geometry/business logic, one per component type: `Kreisel`, `Gefaellestrecke`, `VarioFoerderer`, `Angetriebene_Kurve`, `Eckrad`, `Bt_element`, `Omniflo`. Each has a `<Name>_tests.py` sibling with unittest cases (discovered by `run_unittests.bat`). `VarioFoerderer.py` and `Gefaellestrecke.py` contain the most complex logic (motor/Umlenkstation placement, AS/ES element insertion, rotation across one/two connected Kreisel) — see [doc/VarioFoerderer_Refactoring.md](doc/VarioFoerderer_Refactoring.md) for the design rationale (constants, enums, dataclasses extracted from what was previously an 820-line method).
### Helper modules (`lib/`)
- `arbeiten_mit_csv.py` — CSV parsing, `Planquadrat` coordinate extraction, `Merkmale` JSON parsing, the neighbor-analysis pass (`get_nachbar_information`), `TeileArt` → handler-name normalization.
- `block_methoden.py` — importing blocks from a library doc into the target doc, block rotation/mirroring (`turn_two_blocks_left`), reading insert color/layer from a library block, attribute helpers.
- `as_es_methoden.py` — AS-/ES-Element placement logic for Gefällestrecke (these depend on CSV height-comparison fields and Kreisel connection topology — flagged in the docs as needing review if RuleDesigner's CSV format changes).
- `handler_context.py` — the `HandlerContext` dataclass-like container passed to every handler, plus a `create_context_from_row` factory and rich `__str__`/`to_dict` for debugging.
- `utils.py``check_environment_var` (reads a required env var or exits) and `setup_logger` (timestamped file + console logger under `PROJECT_LOG`).
### Configuration (`cfg/`)
- `allgemein.cfg` — maps a `TeileArt`'s family (`[ILS]`, `[Omniflo]`, `[BT]`, `[TEF]`) to a block library filename under `data/block_libraries/`; also holds `[LOG]` format settings. Unmapped `TeileArt` falls back to `data/blocks.dxf`.
- `shapes.cfg` — one section per exact `TeileArt` string (must match the CSV column value exactly), listing library block names to place (`items`), their offsets/rotations relative to the computed position, and type-specific parameters (e.g. `asoffset`/`esoffset` for Gefällestrecke, `vario_abstand` for VarioFörderer, `winkel_*` angle constants, Omniflo Sivas-number overrides).
Both are read fresh per run; there's no schema validation beyond what `configparser` and the handler code assume, so a `TeileArt` typo silently falls through to "no handler found" (logged as a warning, row skipped) rather than erroring.
### Known fragility (documented in doc/plant2dxf_dokumentation.md)
The AS/ES-element and height-comparison logic in `as_es_methoden.py`, `lib/plant2dxf.py` (`handle_ils_2_0_gefaellestrecke`, `handle_ils_2_0_variofoerderer`), `lib/Elemente/Gefaellestrecke.py` (`rotation_mit_zwei_verbunden`), and `lib/Elemente/VarioFoerderer.py` (`vario_verbuden_am_kreisel`) all assume the current RuleDesigner CSV column set and semantics. If the CSV export format changes, these are the first places to check.
## Directories not under version control
`data/`, `work/`, `log/` are gitignored (generated/input working data, log files with timestamped names). `testdata/` holds committed CSV+DXF fixture pairs used for manual/reference comparison, separate from the `lib/Elemente/*_tests.py` unittest suite.
+38
View File
@@ -0,0 +1,38 @@
@echo off
CALL setenv.bat
echo ========================================
echo Creating all test DXF files from testdata
echo Output directory: %PROJECT_WORK%
echo ========================================
echo.
REM Track if any errors occurred
set ERRORS_OCCURRED=0
REM Iterate through all CSV files in testdata directory
for %%f in ("%PROJECT_TEST%\*.csv") do (
echo Processing: %%~nxf
CALL plant2dxf.bat -f "%%f" -o "%PROJECT_WORK%\%%~nf.dxf"
if errorlevel 1 (
echo ERROR: Failed to process %%~nxf
echo.
set ERRORS_OCCURRED=1
) else (
echo SUCCESS: Created %%~nf.dxf in work folder
echo.
)
)
echo ========================================
if %ERRORS_OCCURRED%==1 (
echo Processing completed with ERRORS!
echo ========================================
pause
exit /b 1
) else (
echo All test DXF files processed successfully!
echo ========================================
pause
exit /b 0
)
+1 -1
View File
@@ -7,4 +7,4 @@ REM Beispielaufruf mit Parametern:
REM --in: Ordner mit .dxf-Dateien (optional. Standard: work/converted_dxfs)
REM --name: Name der zu erzeugenden Bibliothek
python %PROJECT_LIB%\dxf2lib.py %*
"%VIRTUAL_ENV%\Scripts\python.exe" %PROJECT_LIB%\dxf2lib.py %*
+25 -21
View File
@@ -1,30 +1,34 @@
@echo off
CALL setenv.bat
IF DEFINED NETWORK_INTERPRETER_PATH (
goto %~1_network
IF /I "%1"=="activate" GOTO activate
IF /I "%1"=="deactivate" GOTO deactivate
GOTO :eof
:activate
REM Interpreter wählen
IF DEFINED NETWORK_PYTHON (
SET PYTHON_EXE=%NETWORK_PYTHON%\python.exe
) ELSE (
goto %~1_local
SET PYTHON_EXE=python
)
:activate_interpreter_local
IF NOT EXIST %PROJECT%\.venv CALL %PROJECT_BIN%\install_py.bat
CALL %PROJECT%\.venv\Scripts\activate.bat
goto :eof
REM venv sicherstellen
IF NOT EXIST "%PROJECT%\.venv" (
"%PYTHON_EXE%" -m venv "%PROJECT%\.venv"
)
:deactivate_interpreter_local
deactivate
goto :eof
REM venv aktivieren
CALL "%PROJECT%\.venv\Scripts\activate.bat"
:activate_interpreter_network
SET OLD_PATH=%PATH%
SET PATH=%NETWORK_INTERPRETER_PATH%;%PATH%
CALL %PROJECT%\.venv\Scripts\activate.bat
goto :eof
REM Interpreter festnageln
SET VIRTUAL_ENV_PYTHON=%PYTHON_EXE%
GOTO :eof
:deactivate_interpreter_network
SET PATH=%OLD_PATH%
SET OLD_PATH=
SET NETWORK_INTERPRETER_PATH=
CALL %PROJECT%\.venv\Scripts\deactivate.bat
goto :eof
:deactivate
CALL "%PROJECT%\.venv\Scripts\deactivate.bat"
SET VIRTUAL_ENV_PYTHON=
GOTO :eof
echo off
+17 -3
View File
@@ -1,4 +1,18 @@
@echo off
CALL manage_interpreter.bat activate_interpreter
python %PROJECT_LIB%\plant2dxf.py %*
CALL manage_interpreter.bat deactivate_interpreter
CALL manage_interpreter.bat activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
cd /d "%PROJECT%"
if errorlevel 1 (
echo ERROR: Failed to change to project directory: %PROJECT%
exit /b 1
)
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.plant2dxf %*
set PYTHON_EXIT=%ERRORLEVEL%
CALL manage_interpreter.bat deactivate
exit /b %PYTHON_EXIT%
+36
View File
@@ -0,0 +1,36 @@
@echo off
CALL setenv.bat
echo ========================================
echo running all unittests in lib\Elemente
echo ========================================
echo.
CALL manage_interpreter.bat activate
if %ERRORLEVEL% NEQ 0 (
echo.
echo Failed to activate the Python interpreter!
pause
exit /B 1
)
echo Gefundene Testdateien:
for /f "delims=" %%f in ('dir /b "%PROJECT_LIB%\Elemente\*_tests.py" 2^>nul') do echo %%f
echo.
cd /d "%PROJECT%"
if errorlevel 1 (
echo ERROR: Failed to change to project directory: %PROJECT%
CALL manage_interpreter.bat deactivate
exit /b 1
)
"%VIRTUAL_ENV%\Scripts\python.exe" -m unittest discover -t "%PROJECT%" -s lib\Elemente -p "*_tests.py" -v
if %ERRORLEVEL% NEQ 0 (
echo.
echo Tests failed!
CALL manage_interpreter.bat deactivate
exit /B 1
) else (
echo.
echo All tests passed!
CALL manage_interpreter.bat deactivate
exit /B 0
)
+2
View File
@@ -16,8 +16,10 @@ set PROJECT_LOG=%PROJECT%\log
if not exist %PROJECT%\data mkdir %PROJECT%\data
if not exist %PROJECT%\work mkdir %PROJECT%\work
if not exist %PROJECT%\log mkdir %PROJECT%\log
if not exist %PROJECT%\testdata mkdir %PROJECT%\testdata
set PATH=%PROJECT_BIN%;%PATH%
REM set NETWORK_PYTHON=TO_BE_SET
popd
+10
View File
@@ -1,5 +1,9 @@
# Allgemeine Konfigurationsdatei, welche die Zuweisung von Block-Bibliotheken zu bestimmten Bauteil-Familien steuert
# General Config-File, that controls the assignment of block libraries to certain component families
[LOG]
log_level = INFO
log_format = %%(asctime)s - %%(levelname)s - %%(message)s
screen_format = %%(message)s
[ILS]
libfile = ils_lib.dxf
@@ -7,6 +11,10 @@ libfile = ils_lib.dxf
[Omniflo]
libfile = omniflo_lib.dxf
[BT]
libfile = ils_lib.dxf
[TEF]
libfile = omniflo_lib.dxf
[dxf2lib]
# Text-Positionierung und Formatierung
# Vertikaler Abstand des Texts über dem Block (in DXF-Einheiten)
@@ -27,3 +35,5 @@ block_spacing_x = 350
blocks_per_row = 20
# Vertikaler Abstand zwischen Zeilen im Raster (in DXF-Einheiten)
block_spacing_y = 500
# Nicht in die MittelPunkt Berechnung erlaubt
automation_layer = ("A-GRUPPE","B-GRUPPE")
+33 -1
View File
@@ -5,9 +5,41 @@ offset_symb2 = 0,0
rot_symb1 = 0.0
rot_symb2 = 0.0
[ILS 2.0 Kreisel mit Pin]
items = SP8, AN8
offset_symb1 = 0,0
offset_symb2 = 0,0
rot_symb1 = 0.0
rot_symb2 = 0.0
[ILS 2.0 Gefällestrecke]
items = EE DS, AE DS
offset_symb1 = 0,-330
offset_symb2 = 0,1000
rot_symb1 = 0.0
rot_symb2 = 0.0
rot_symb2 = 0.0
asoffset = 537.90
esoffset = 479.95
[ILS 2.0 Variofoerderer]
Umlenkstation = 500.0, 0.0, 0.0
Motorstation = 500.0, 0.0, 0.0
vario_abstand = 66.5
[Ils 2.0 core winkel]
winkel_boegen = 3
winkel_motor = 3.0
winkel_umlenk = 3.0
winkel_as = 3.0
winkel_es = 3.0
[Omniflo]
OFgeradesivas = 821106002
Tefgeradesivas = 0_B10030
OFfoerderer = 2
[Scanner_Stoper_namen]
Omniflo_stopper = 827062022
Omniflo_scanner = _DUMMY_SCANNER
ILS_scanner = SCAN
ILS_seperator = S-LP
File diff suppressed because it is too large Load Diff
+1142371 -39021
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

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