From dabf9e4f8a70e6158445cc5e908d6586346f6d0c Mon Sep 17 00:00:00 2001 From: Simon Hensch Date: Mon, 28 Sep 2026 13:53:46 +0200 Subject: [PATCH] =?UTF-8?q?[CHANGE]=20Sivas=20Export=20schaut=20nun=20nur?= =?UTF-8?q?=20noch=20auf=20die=20kommaseparierte=20Liste=20im=20Attribut?= =?UTF-8?q?=20ARTINR=20und=20f=C3=BCgt=20die=20Artikelnummern=20in=20die?= =?UTF-8?q?=20Export-Liste=20ein;=20[ADD]=20Men=C3=BC=20und=20dwg=20f?= =?UTF-8?q?=C3=BCr=20Omniflo=20Ladeschleifen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 11 +- Lisp/OmniModulInsert.lsp | 149 ++++++++++- Lisp/README.md | 1 + Lisp/export.lsp | 57 +++- Lisp/ssg_layer.lsp | 18 ++ README.md | 5 +- data/omniflo/2D/824331125.dwg | Bin 0 -> 248386 bytes data/omniflo/2D/824604001.dwg | Bin 0 -> 22371 bytes dcl/csv_export_konfig.dcl | 8 +- dcl/omniflo_ladeschleifen.dcl | 47 ++++ lang/de_DE.json | 4 + lang/en_GB.json | 4 + lib/export_sivas.py | 237 ++++------------- menu/SSG_LIB.cui | 378 ++++++++++++++------------- menu/SSG_LIB.mnu | 1 + tests/test_export_eingang_ausgang.py | 2 +- tests/test_export_sivas_omniflo.py | 103 ++++++++ tests/test_unit.lsp | 23 ++ 18 files changed, 663 insertions(+), 385 deletions(-) create mode 100644 data/omniflo/2D/824331125.dwg create mode 100644 data/omniflo/2D/824604001.dwg create mode 100644 dcl/omniflo_ladeschleifen.dcl create mode 100644 tests/test_export_sivas_omniflo.py diff --git a/CLAUDE.md b/CLAUDE.md index 7efc238..9d5d154 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -74,7 +74,7 @@ Die `start_briscad.bat` ruft `setenv.bat` auf und startet BricsCAD. | Zusatzmodul/Foerderer/Kurven | `SSG_LIB_Commands` | ILS_BTMT_*, ILS_ETF_*, ILS_GK*_* | | VarioFoerderer | `VarioFoerderer` | FOERDERANLAGE, VARIOFOERDERER_EDIT, Vario_Kette_Merge | | Gefaellestrecke | `Gefaellestrecke` | GEFAELLESTRECKE, GEFAELLESTRECKE_EDIT | -| Omniflo (komplett) | `OmniModulInsert` | OMNI_APB_*, OMNI_W*_*, OMNI_AP*, OMNI_TEF_*, OMNI_TV_*, OMNI_EDIT | +| Omniflo (komplett) | `OmniModulInsert` | OMNI_APB_*, OMNI_W*_*, OMNI_AP*, OMNI_TEF_*, OMNI_TV_*, OMNI_LADESCHLEIFE_*, OMNI_EDIT | | Geruest | `GeruestInsert` | GERUEST (ein Dialog fuer alle Bereiche) | | Connections | `Connection_Edit` + `SSG_LIB_Commands` | CONNECTION_INSERT, CONNECTION_EDIT, ILS_EINGANG_INSERT, ILS_AUSGANG_INSERT | | Export | `export` | EXPORTSIVAS, EXPORTCSV, CALLPYTHON | @@ -98,13 +98,13 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`. | `ssg_lang.lsp` | - | Sprachumschaltung Deutsch/Englisch (ssg-text, ssg-textf, *ssg-lang*) | | `ssg_dbg.lsp` | - | Debug-Logging (dbgopen, dbgmsg, dbgflush, dbgclose) | | `ssg_dialog.lsp` | - | DCL-Dialog-Vorlagen und Hilfsfunktionen | -| `ssg_layer.lsp` | - | Layer-Verwaltung | +| `ssg_layer.lsp` | - | Layer-Verwaltung. `ssg-layer-visible-p` (aus ODER gefroren), `ssg-layer-gefroren-p`/`ssg-ent-layer-gefroren-p` (NUR gefroren, fuer den Export) | | `KreiselInsert.lsp` | KreiselInsert, KreiselConnect, KreiselRedraw, KreiselQuick, KreiselEdit, KreiselParams, KreiselLabelSetup, KreiselLabelPos, KreiselLabelHoehe, ILS_Eckrad | ILS Kreisel und Eckrad komplett in AutoLISP | | `VarioFoerderer.lsp` (Wrapper fuer `vf_core.lsp`/`vf_standard.lsp`/`vf_etage.lsp`/`vf_linienzug.lsp`) | FOERDERANLAGE, VARIOFOERDERER_EDIT, VARIOFOERDERER_NACHRUESTEN, Vario_Kette_Merge, VF_SEKTION_RESTORE, VF_WIZARD_AN, VF_WIZARD_AUS | Vario-Foerderanlagen Generator (Typen Standard/Etage/Linienzug); Standard- UND Etage-Typ: Werteingabe per DCL-Dialog. Der Dialog-Ablauf ist zentral in vf_core (`vf-dialog-ablauf`/`vf-dialog-berechnen-einfuegen`, parametrisiert ueber Typ-Registry `*vf-typ-registry*` + Flag `horizontal-p`); `vfs-standard-dialog-ablauf`/`vfe-etage-dialog-ablauf` sind nur noch duenne Wrapper darauf. Beide nutzen dieselben Dialoge `vfs-dialog-eingabe-basis`/`vfs-dialog-winkel-verteilung` und den gemeinsamen L_GF/L_VF-Solve `vf-winkel-solve` (vf_core; berechne-alle-winkel/berechne-winkel-etage teilen ihn); Doppelklick auf VF_n-Block ruft VARIOFOERDERER_EDIT, das per SSG_VF_EDIT-XDATA-Marker ("standard"/"etage"/"linienzug") in den passenden Neuaufbau-Zweig dispatcht (`vfe-edit-ent` fuer Etage, `vfl-edit-ent` fuer Linienzug); Altbestand-Bloecke ohne Marker werden abgewiesen. Linienzug (Modus 1, `vf-linienzug-modus`) zeichnet jede interaktive Eingabe in einem Journal auf (`vfl-in-point`/`-string`/`-real`/`-int`) und schreibt es als XDATA auf den fertigen `VF_n`-Block; ein Abbruch (ESC) loescht dadurch nichts mehr, sondern wickelt die bis dahin gebaute Teil-Geometrie ebenso zu einem Block (`vfl-modus-abbruch-sichern`) - sie bleibt stehen und ist sofort per Doppelklick weiter editierbar/fortsetzbar. Der komplette Linienzug-Hauptstrang (Menue-Fragen von AS-Element bis Kettenende, inkl. GF-Bogen/Vario-Kurve/VF-Einheit-Fortsetzung) laeuft per Default ueber DCL-Dialoge statt Konsole (`*vfl-wizard-mode*`, Befehle VF_WIZARD_AN/VF_WIZARD_AUS): `vfl-in-string`/`-int`/`-real` zeigen bei aktivem Wizard-Modus generische Dialoge aus `dcl/vf_linienzug_wizard.dcl` (Zahl-Eingabe bzw. Mehrfachauswahl aus `vfl-menu`/`vfl-menu-int`) statt `getstring`/`getint`/`getreal` aufzurufen; die ORIGINALEN Konsolen-Fragen (princ + get*, de/en ueber ssg-text) bleiben unveraendert im Code (Fallback bei Fehlern via `vl-catch-all-apply`, siehe `doc/variofoerderer.md`). `vfl-edit-ent` liest das Journal, zeigt die Sektionen ueber einen DCL-Dialog (`vfl-dlg-position`, `dcl/vfl_edit.dcl`) an, kuerzt bei Bedarf auf eine gewaehlte Sektion (stummer Replay der behaltenen Eingaben, umgeht den Wizard-Zweig komplett) und baut danach interaktiv weiter. Linienzug Modus 2 (Pfad+Zielhoehe-Solver, `vf-linienzug-modus2`) nutzt dieselben Wrapper PLUS die neue Objektauswahl-Wrapper-Funktion `vfl-in-selection` (Pfad-Objekte als stabile Entity-Handles journalisiert, neue Journal-Art `"OBJS"`) und schreibt sein Journal unter dem eigenen XDATA-Marker `"linienzug2"`; Doppelklick baut hier NICHT abschnittsweise, sondern per vollem Reset 1:1 aus dem Journal neu auf (`vfl-edit-ent2`, dispatcht aus `vfl-edit-ent` per Marker) - Modus 3 (Vorwaerts-Nachbau) bleibt bewusst reine Konsole (im Code selbst als Legacy/"wird umgebaut" markiert). `Vario_Kette_Merge` (in vf_linienzug.lsp) fuehrt mehrere einzeln gebaute VF_n-Bloecke ab einem gewaehlten Start-Baustein ueber die reale KS_AUS->KS_EIN-Nachbarschaft zu einem Gesamt-Block zusammen (aggregierte Attribute, Luecken-Erkennung). Die interaktiven Editier-Pfade (`vfl-edit-ent` Sektions-Zweig, `vfl-edit-ent2`) rufen den Neuaufbau BEWUSST direkt auf, NICHT ueber `vl-catch-all-apply`: der alte Block ist beim Neuaufbau schon per `entdel` weg, und ein Catch faengt den Abbruch VOR `*error*` ab - der Abbruch-Wickler `vfl-modus-abbruch-sichern` kaeme nie zum Zug und die ganze Kette bliebe als lose Einzelteile ohne Block liegen (Fehlerbild "VF-Block aufgebrochen"). Nur der nicht-interaktive Batch-Konverter `vfl-konvertiere-ent` behaelt den Catch (die Batch-Schleife muss weiterlaufen) und meldet den betroffenen Block. Die Abbruch-Handler setzen zusaetzlich `*ssg-ils-dim*` zurueck, weil der Aufrufer, der das sonst tut, nach einem Abbruch nicht mehr erreicht wird. Recovery-Pfad fuer bereits aufgebrochene Ketten: `VF_SEKTION_RESTORE` (vf_linienzug.lsp) setzt das Ketten-Journal aus der XDATA der losen Objekte zusammen - `SSG_VF_EDIT_SEG` traegt pro Entity den Journal-Abschnitt DER ITERATION, in der es entstand (indiziert mit dem ersten Glied-Index darin; eine VF-Einheit mit eingebetteten Vario-Kurven erzeugt mehrere Glieder in einer Iteration), `SSG_VF_EDIT_PRE` auf den Entities des ersten Gliedes die Praeambel (Startpunkt/Starthoehe/AS). Die `.dbg`-Dateien sind reine AUSGABE und werden von keinem Befehl gelesen (dbgopen legt sie bei jedem Lauf neu an) - Wiederherstellungs-Daten gehoeren in die XDATA. `vf_konstanten.lsp` (von vf_core.lsp vor den drei Submodulen geladen) sammelt alle Laengen-/Winkel-/Toleranz-Magic-Numbers aus dem VarioFoerderer-Cluster als dokumentierte `*vfk-*`-Konstanten. Die Migration ist abgeschlossen: vf_core/vf_standard/vf_etage/vf_linienzug referenzieren durchgaengig die zentralen Konstanten statt roher Literale (Winkel, Stations-/Separator-Laengen, Mindestlaengen, AS/ES-Fallback-Versaetze, Text-/Label-Masse) - Ausnahmen sind in `vf_konstanten.lsp` selbst dokumentiert (Werte mit fuehrender Config-Anbindung via `ssg-cfg-or`, itoa-/Integer-Kontexte, Blocknamen-Strings, die 2000.0-mm/m-Umrechnung). `*vfk-gf-bogen-winkel*` (30/60/90, GF-Bogen + Vario-Kurve) und `*vfk-as-es-winkel*` ("30"/"90", AS/ES; bewusst STRING, da 2-wertig und im Journal als STR gefuehrt) sind Beispiele; vf_linienzug hat fuer beide einen Fallback, falls vf_konstanten nicht geladen wurde. **Nicht-interaktiver Betrieb**: `*vfl-headless*` (+ `vfl-headless-p`/`-abbruch`/`-notausgang`, Diagnose `*vfl-headless-fehler*`, optionaler Antwort-Hook `*vfl-headless-antwort-fn*`) verbietet jede Live-Eingabe - eine erschoepfte Replay-Queue ist damit ein harter Abbruch MIT Fundstelle (Art der Eingabe, Glied- und Eingabe-Nummer) statt eines stillen Rueckfalls auf `getpoint`/`getreal`; eingebaut in `vfl-in-value`/`-value-p`/`-selection`/`-abstand`. Die Bau-Pfade melden abgewiesene Sektionen ueber `vfl-meldung` (sammelt nach `*vfl-meldungen*` + `dbgmsg`, `alert` nur bei erlaubter GUI, sonst `princ`) statt per blockierendem `alert`; reine Interaktiv-Alerts (fehlendes DCL, "nicht editierbar", "kein Journal") bleiben `alert`. Genutzt von `tests/test_hm_recformat.lsp` (Replay der echten Aufzeichnungen) und von `vf_spec.lsp`; Fahrplan in `doc/TODO-plan-vf-interactive.md`. Details/Entscheidungsbaum: `doc/variofoerderer.md` | | `vf_spec.lsp` (von vf_core.lsp NACH vf_linienzug.lsp geladen) | VF_SPEC_BAU | Linienzug-Ketten aus **Eingabedaten** bauen, ohne Dialog und ohne Konsolenfrage (Stufe 1 aus `doc/TODO-plan-vf-interactive.md`). Eine **Spec** beschreibt eine Kette in Domaenenwerten (`"links"`, `"winkel"`, `"aussen"`, ja/nein) statt in Menue-Codes; `vsp-journal` uebersetzt sie in ein Eingabe-Journal, `vsp-bau-aus-spec` spielt es per `vfl-journal-replay-start` durch den UNVERAENDERTEN `vf-linienzug-modus`. Damit traegt der fertige Block dasselbe `SSG_VF_EDIT`-Journal wie eine handgebaute Kette und bleibt per Doppelklick editier- und 2D/3D-konvertierbar - kein Journal-Konsument muss etwas von Specs wissen. Wichtige Regeln, die der Uebersetzer kennt: der Menue-Code haengt am Frame (erste Sektion 4 Optionen ohne GF-Bogen, danach 5), `hz` steht nur beim ERSTEN Segment im Journal, und `erst-hor` unterscheidet den horizontalen Erstkoerper einer VF-Einheit (Separator-/Endpunktfragen vorab) vom gewinkelten (keine Frage). Fehlerverhalten: fail fast - `vsp-pruefen` sammelt ALLE Spec-Fehler, gebaut wird dann nichts (nichts wird geraten). Ergebnis-Record je Kette mit `status` (`executed`/`warnung`/`desync`/`abbruch`/`spec-fehler`), Block/Handle/Einfuegepunkt/Attributen, `prompts` (muss 0 sein), `glieder_soll` vs. `glieder_ist` (Desync-Detektor, der auch bei aufgehender Queue greift) und den gesammelten `meldungen`. Headless-Rahmen `vsp-headless-an`/`-aus` (Save/Restore von `*vfl-headless*`, `*vfl-wizard-mode*`, `*ssg-gui-aus*` + zaehlende Eingabe-Stubs). Spec-Datei flach als JSON (`ssg-load-json` liest zeilenweise), erzeugt von `lib/vf_spec_export.py`. Gegenstueck/Referenz in Python: derselbe Emitter, gegen die 5 echten HundM-Ketten rundlaufgeprueft | | `Gefaellestrecke.lsp` | GEFAELLESTRECKE, GEFAELLESTRECKE_EDIT | Gefaelle-Foerderanlage (AUS -> Staustrecke skaliert -> Separator -> EIN); Modus 1 per DCL-Dialog (Einfuegehoehe, Element-Winkel 30/90); Doppelklick auf GF_n-Block ruft GEFAELLESTRECKE_EDIT (Dialog vorbelegt, Neuaufbau) | -| `export.lsp` | EXPORTSIVAS, EXPORTCSV, OMNI_UPDATE_ATTRIBS | JSON-Sammlung und Python-Export (Omniflo-Merkmale/Sum-Zeile via lib/export_csv.py) | -| `OmniModulInsert.lsp` | OMNI_LOAD, OMNI_APB_*, OMNI_W*_*, OMNI_AP60/AP110, OMNI_TEF_*, OMNI_TV_*, OMNI_APBW_*, OMNI_EDIT | Omniflo-Komponenten: Boegen, Weichen, Verbinder, Transferwagen, Edit-Dialog | +| `export.lsp` | EXPORTSIVAS, EXPORTCSV, OMNI_UPDATE_ATTRIBS, CSV_EXPORT_KONFIG | JSON-Sammlung und Python-Export (Omniflo-Merkmale/Sum-Zeile via lib/export_csv.py). **Gefrorene Layer**: `csv:collect-export-blocks` laesst Bloecke auf gefrorenen Layern aus (ausgeschaltete Layer zaehlen NICHT), Schalter `*csv-gefrorene-ausschliessen*` (Standard an, Toggle im Dialog CSV_EXPORT_KONFIG). Die Hilfsobjekte eines gefrorenen VF_n/GF_n (Separator-/Element-Kopien, Einheiten-/AS-ES-Marker) liegen auf eigenen Layern und werden darum ueber `*csv-ausschluss-enames*` mit ausgelassen (gesetzt in `csv:export-vorbereiten` per `csv:hilfskopien-ausschluss`); erzeugt und nummeriert werden sie trotzdem, damit IDs stabil bleiben. DrawPlanquadrate nutzt dieselbe Sammlung und folgt dem Filter | +| `OmniModulInsert.lsp` | OMNI_LOAD, OMNI_APB_*, OMNI_W*_*, OMNI_AP60/AP110, OMNI_TEF_*, OMNI_TV_*, OMNI_APBW_*, OMNI_LADESCHLEIFE_AP110, OMNI_EDIT | Omniflo-Komponenten: Boegen, Weichen, Verbinder, Transferwagen, Ladeschleifen (`data/json/omniflo_ladeschleifen.json`, per `ssg-json-laden`, da die Beschreibungen Kommas enthalten; Blockdatei darf `.dwg` statt `.dxf` sein), Edit-Dialog | | `SSG_LIB_Commands.lsp` | ILS_BTMT_Beladung, ILS_BTMT_Entladung, ILS_SCANNER_INSERT, ILS_SEPARATOR_INSERT, ILS_EINGANG_INSERT, ILS_AUSGANG_INSERT, ILS_ETF_*, ILS_GK*_*, SSG_BLOCKEDIT, SSG_DIM_SWITCH, SSG_SPRACHE | BTMT Be-/Entladung (`ils-insert-station`: wiederholtes Einfuegen von `BTMT-Beladung` bzw. `SC_Entladung`, Drehung interaktiv, Layer aus `LAYER`-Attribut, Dimension via `ssg-ils-block-laden`) + Sensoren (`ils-insert-sensor`) + Eingang-/Ausgang-Symbol (frei platzierbar wie BTMT Be-/Entladung, ueber `ils-insert-station` mit den Rohnamen `Eingang`/`Ausgang`, Bloecke `Eingang_.dwg`/`Ausgang_.dwg` in data/ils) + Dummy-Befehle fuer Menue + Doppelklick/Kontextmenue-Dispatcher + Konfiguration (2D/3D, Sprache) | | `Tro_Edit.lsp` | TRO_INSERT, TRO_EDIT | TRO-Marker (Block `TRO_SYM_`) fuer sps_skel (lib/tro_annotate.py): TRO_INSERT fuegt eine bestehende Blockdefinition an einem gewaehlten Punkt ein und setzt ID/TYPE (bricht ab, wenn der Typ noch keine Blockdefinition in der Zeichnung hat - die entsteht nur ueber tro_annotate.py); TRO_EDIT aendert ID/TYPE eines bestehenden Markers per Dialog. Typliste aus `tro_types.lsp` (von `tro_annotate.py --emit-lisp` nach DXFM_LISP geschrieben). Der Dispatcher SSG_BLOCKEDIT leitet Blocknamen `TRO_*` zu TRO_EDIT. | | `GeruestInsert.lsp` | GERUEST | Geruest-Baugruppen aus `data/json/geruest.json` konfigurieren und einfuegen. **Ein Dialog fuer alle Bereiche**: oben ein Dropdown `bereich` (Rohrabhaenger / Saeulen / Wandbefestigung, Reihenfolge = Dateireihenfolge, Anzeigename aus dem ASCII-Feld `titel`). DCL hat **kein Reiter-Tile**, und da sich die Teilezeilen je Bereich unterscheiden, schliesst ein Bereichswechsel den Dialog (`done_dialog 4`) und die Schleife in `c:GERUEST` baut ihn neu auf; der Stand jedes Bereichs bleibt in `*geruest-zustand*` erhalten, ein versehentlicher Wechsel verwirft also nichts. 1"- und 2"-Saeulen liegen in EINER Baugruppe `Saeulen` mit gemeinsamer Anbauteil-Liste; **`teileart` und `dummy` duerfen je Geometrie-Variante ueberschrieben werden** (`geruest-variante-wert`, Variante gewinnt vor Baugruppe) - so liefert `R 1"` weiterhin TEILEART `Geruest Saeule 1 Zoll` und die `R 2"`-Varianten `Geruest Saeule 2 Zoll`, die Groessen bleiben im Export also unterscheidbar. **Die Dialogdefinition wird zur Laufzeit erzeugt** (`geruest-dcl-schreiben` -> temporaere Datei per `vl-filename-mktemp`, nach `unload_dialog` wieder geloescht) - es gibt KEINE `dcl/geruest.dcl`. Grund: je Anbauteil wird ein eigenes Mengenfeld gebraucht, und eine DCL-Liste (`list_box`) kann keine Eingabefelder enthalten; DCL kann weder Dateien einbinden noch Tiles zur Laufzeit erzeugen. Inhalt: Basis-Variante aus `geometrie_varianten` (Dropdown), Laenge (gegen `attribute.Laenge` min/max geprueft, Retry-Schleife), Farbe (`attribute.Teilefarbe`, Freitext bei `frei_option`) und **zwei Befestigungslisten** ("oben"/"unten"), die BEIDE alle `anbaugruppen` enthalten - dasselbe Teil kann oben, unten oder gleichzeitig an beiden Positionen sitzen, je mit eigener Stueckzahl (vorbelegt aus `menge`). Baugruppen ohne `attribute`-Block (Wandbefestigung) bekommen Laenge/Farbe gesperrt, Baugruppen ohne Anbauteile bekommen gar keine Spalten (ein leerer DCL-Cluster ist unzulaessig). Im generierten Label wird `"` zu `''` ersetzt (`geruest-dcl-label`) - fuenf Artikelnamen enthalten ein Anfuehrungszeichen, das das DCL-Label sonst vorzeitig beendet und die Datei zerstoert. **Konfigurationen**: gepflegte Bibliothek je Baugruppe unter `konfigurationen` in `geruest.json` (schreibgeschuetzt) plus eigene in `cfg/geruest_user.json` (gitignored, `geruest-user-schreiben`; getrennte Datei, damit Benutzerdaten und versionierte Bibliothek nicht kollidieren). Eigene Eintraege sind in der Liste mit `*` markiert und nur diese loeschbar. Konfigurationen verweisen ueber den ANZEIGENAMEN auf Variante und Anbauteile; ein unbekannter Name wird gemeldet und uebersprungen, statt die Konfiguration scheitern zu lassen. Speichern/Loeschen laufen ueber `done_dialog 2`/`3` (Dialog schliessen, Aktion, neu zeigen) - `getstring` funktioniert aus einem `action_tile`-Rueckruf heraus nicht. Der Block wird - wie KREISEL_n/VF_n - SELBST zusammengebaut: Dummy-DWG aus `data/geruest` liefert nur Geometrie, das Attribut-Schema kommt aus `*geruest-attrib-defs*` (ID, ARTINR, LAENGE, BEZEICHNUNG, TEILEART, TEILEFARBE, LAYER) und wird per `ssg-attrib-merge` mit den Dummy-Tags zusammengefuehrt - sonst verschluckt `ssg-attrib-set-on` stillschweigend jeden Tag, den die Dummy-DWG nicht als ATTDEF kennt. Blockname `GR__` (Kollisionszaehler wie in OmniModulInsert). **Das `GR_`-Praefix ist nicht kosmetisch**: `SSG_BLOCKEDIT` haelt JEDEN Block mit TEILEART-Attribut fuer ein Omniflo-Element, deshalb steht in `SSG_LIB_Commands.lsp` ein `GR_*`-Zweig VOR dem Omniflo-Zweig. ARTINR listet jede Sivas-ID so oft, wie die gewaehlte Stueckzahl es vorgibt - erst Basis, dann Befestigung oben, dann unten; bei einer benannten Gruppe (`teile`) wird das ganze Set n-mal wiederholt, die Mengen INNERHALB des Sets bleiben dabei erhalten (`geruest-artikelnummern-n`). BEZEICHNUNG nennt Position und Menge je Teil ("oben 2x ...") und verkettet mit `" + "`, NICHT mit Komma - die Artikelbezeichnungen enthalten selbst Kommas ("ROHR R 1\" 33,7 x 2,6"). Zuordnung Menue -> JSON laeuft ueber das ASCII-Feld `id`, weil die aeusseren JSON-Schluessel Umlaute bzw. Anfuehrungszeichen tragen. CSV-/Sivas-Export: `pattern_geruest = GR_*` (cfg/export.cfg), `csv:collect-export-blocks`/`ssg-id-collect-blocks` sammeln GR_-Bloecke wie BTMT eigenstaendig; `*geruest-attrib-defs*` traegt zusaetzlich ein leeres `ID`-ATTDEF (Voraussetzung fuer `ssg-id-check-all`, das nur bestehende ATTRIBs beschreiben kann). ARTINR/BEZEICHNUNG/TEILEART/LAENGE landen in export_csv.py/export_sivas.py in festen Spalten, TEILEFARBE/LAYER (+ ARTINR bei export_csv.py) im Merkmale-/details-JSON. Noch NICHT enthalten: Edit-Pfad (GERUEST_EDIT) | @@ -120,6 +120,7 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`. | `variofoerderer.dcl` | FOERDERANLAGE Standardfall + Werteingabe (vf_standard.lsp, `vfs-dialog-eingabe-basis`/`vfs-dialog-winkel-verteilung`) | | `omniflo_boegen.dcl` | OMNI_APB_* (OmniModulInsert.lsp) | | `omniflo_weichen.dcl` | OMNI_W*_* (OmniModulInsert.lsp) | +| `omniflo_ladeschleifen.dcl` | OMNI_LADESCHLEIFE_* (OmniModulInsert.lsp, `omni:ladeschleifen-dialog`) | | `sprache.dcl` | SSG_SPRACHE (SSG_LIB_Commands.lsp) | | `tro_insert.dcl` | TRO_INSERT (Tro_Edit.lsp) | | `tro_edit.dcl` | TRO_EDIT (Tro_Edit.lsp) | @@ -182,7 +183,7 @@ Abhaengigkeiten: `ezdxf`, Standard-Library. Benoetigen Umgebungsvariablen (`DXFM | `omniflo_utils.py` | Gemeinsame Hilfsfunktionen fuer Omniflo-Skripte: `ROW_GROUPS` (Reihen-Gruppierung), `SWITCH_FILTERS` (Schalter-Filter), `build_row_layout`, `import_element_as_block`, `draw_cross`, `load_omniflo_data` | | `set_einfuegepkt.py` | Setzt `$INSBASE` (Einfuegepunkt) in Omniflo-DXF-Dateien. Schalter je Typ: `--boegen`, `--weichen45`, `--weichen90`, `--weichenkoerper`, `--weichen-parallel`, `--delta`, `--dreifachweiche`, `--sternweiche`, `--show-omniflo` | | `set_koords.py` | Setzt Koordinatensystem-Bloecke (K1-K4) in Omniflo-DXF-Dateien. Schalter: `--k1set` bis `--k4set`, `--set-all`, `--force`, `--show-omniflo`, `--test`, `--number` | -| `export_sivas.py` | Erzeugt Sivas-Export-CSV mit Summierungszeilen (ILS Automation, Omniflo Sum). Aufruf: `python export_sivas.py ` | +| `export_sivas.py` | Erzeugt Sivas-Export-CSV mit Summierungszeilen (ILS Automation, Omniflo Sum). Omniflo-Elemente werden ueber das TEILEART-Attribut (`Omniflo *`) erkannt, ihre Sivas-Nummern kommen - wie beim Geruest - NUR aus dem kommagetrennten `ARTINR`-Attribut (eine Zeile je Nummer, TEF-Teile `0_B*` als `Omniflo TEF`); KEIN Katalog-Lookup mehr (den nutzt nur noch `export_csv.py` fuer die Merkmale). Aufruf: `python export_sivas.py ` | | `export_csv.py` | Erzeugt einfache Item-Liste als CSV (ohne Summierung). Aufruf: `python export_csv.py ` | | `split_block_library.py` | Teilt `ils_library.dxf` in einzelne DXF-Dateien pro Block auf (mit Abhaengigkeiten). Export-Prefixe: Vario_, Staustrecke_, _3D_AS_, _3D_ES_ | | `vf_journal_export.py` | Liest die Eingabe-Journale der `VF_n`-Bloecke (XDATA-App `SSG_VF_EDIT`, Marker `"linienzug"`) aus einer Zeichnung und schreibt sie als Frage-Antwort-Protokoll im Schema von `tests/testdata/linienzug_tests.json` (Gegenstueck zu `vfl-entry->string`; kein ezdxf, reine Gruppencode-Lesung). Optional `--csv ` fuer Strecken-ID und Erwartungswerte je Kette. Aufruf: `python vf_journal_export.py [--csv ...] [--kein-startpunkt-fix]` — erzeugt `tests/testdata/hm_recformat.json` aus `data/polylines.dxf` (die Aufzeichnung, aus der `tests/testdata/hundm05.json` als Spec abgeleitet wird) | diff --git a/Lisp/OmniModulInsert.lsp b/Lisp/OmniModulInsert.lsp index be18217..7b43477 100644 --- a/Lisp/OmniModulInsert.lsp +++ b/Lisp/OmniModulInsert.lsp @@ -964,6 +964,11 @@ ) (progn (setq dxf-pfad (strcat omniflo-pfad "/" sivasnr-str ".dxf")) + ;; Fallback: manche Elemente (z.B. Ladeschleifen) liegen nur als DWG vor + (if (and (not (findfile dxf-pfad)) + (findfile (strcat omniflo-pfad "/" sivasnr-str ".dwg"))) + (setq dxf-pfad (strcat omniflo-pfad "/" sivasnr-str ".dwg")) + ) (if (not (findfile dxf-pfad)) (progn (princ (ssg-textf "omni-fehler-dxf-nicht-gefunden" (list dxf-pfad))) @@ -1230,7 +1235,7 @@ typ eintrag winkel weichentyp dlg-result new-eintrag new-hoehe new-drehung basePoint sivasnr-str dxf-pfad data-pfad angleDeg blockEnt - layer-name) + layer-name such) ;; Implied Selection pruefen (setq ss (ssget "I")) @@ -1307,6 +1312,20 @@ ) ) + ;; Zuletzt in Ladeschleifen suchen (ARTINR, dann Blockname) + (if (null eintrag) + (progn + (if (null *OMNI-LADESCHLEIFEN*) (omni:load-ladeschleifen)) + (foreach such (list artinr bname) + (if (and such (null eintrag)) + (setq eintrag (omni:get-by-sivasid *OMNI-LADESCHLEIFEN* + (if (/= (atoi such) 0) (atoi such) such))) + ) + ) + (if eintrag (setq typ "ladeschleife")) + ) + ) + (if (null eintrag) (progn (ssg-emsg (ssg-text "omni-edit-kein-element")) @@ -1317,12 +1336,15 @@ ;; 4. Dialog oeffnen mit vorhandenen Werten (setq dlg-result nil) - (if (= typ "bogen") - (progn + (cond + ((= typ "bogen") (setq winkel (cdr (assoc "KurvenWinkel" eintrag))) (setq dlg-result (omni:bogen-dialog winkel hoehe drehung nil)) ) - (progn + ((= typ "ladeschleife") + (setq dlg-result (omni:ladeschleifen-dialog nil hoehe)) + ) + (T (setq winkel (cdr (assoc "KurvenWinkel" eintrag))) (setq weichentyp (cdr (assoc "WeichenTyp" eintrag))) (setq dlg-result (omni:weichen-dialog winkel weichentyp hoehe drehung nil)) @@ -1343,8 +1365,12 @@ (setq new-drehung (rtos rotation 2 1)) (setq sivasnr-str (omni:sivasid-to-str (omni:val new-eintrag "Sivasnr"))) - ;; 6. DXF-Datei pruefen + ;; 6. DXF-Datei pruefen (Fallback DWG wie in omni:insert-dxf) (setq dxf-pfad (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dxf")) + (if (and (not (findfile dxf-pfad)) + (findfile (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dwg"))) + (setq dxf-pfad (strcat (getenv "DXFM_OMNIFLO") "/" sivasnr-str ".dwg")) + ) (if (not (findfile dxf-pfad)) (progn (ssg-emsg (ssg-textf "omni-edit-dxf-nicht-gefunden" (list dxf-pfad))) @@ -1446,6 +1472,119 @@ (princ) ) + +;; --- Omniflo / Ladeschleifen --- +;; Datenbasis: data/json/omniflo_ladeschleifen.json. Die Beschreibungen +;; enthalten Kommas, daher der rekursive Parser ssg-json-laden statt des +;; zeilenbasierten ssg-load-json (siehe ssg_core.lsp). + +;; Ladeschleifen-Daten laden (in *OMNI-LADESCHLEIFEN*) +(defun omni:load-ladeschleifen ( / data-pfad datei) + (setq data-pfad (getenv "DXFM_DATA")) + (if (null data-pfad) + (progn (princ (ssg-text "omni-fehler-dxfm-data")) nil) + (progn + (setq datei (strcat data-pfad "/json/omniflo_ladeschleifen.json")) + (setq *OMNI-LADESCHLEIFEN* (ssg-json-laden datei)) + (if *OMNI-LADESCHLEIFEN* + (princ (strcat "\n[OMNI] " (itoa (length *OMNI-LADESCHLEIFEN*)) " Ladeschleifen geladen.")) + (princ (strcat "\n[OMNI] WARNUNG: Keine Ladeschleifen geladen aus " datei)) + ) + *OMNI-LADESCHLEIFEN* + ) + ) +) + + +;; Zahl als Ganzzahl-String fuer die Dialoganzeige ("" wenn kein Zahlwert) +(defun omni:zahl-str (v) + (if (numberp v) (itoa (fix v)) "") +) + + +;; Detail-Felder im Ladeschleifen-Dialog aktualisieren (action_tile callback) +(defun omni:ladeschleife-dlg-update (idx-str / eintrag) + (setq eintrag (nth (atoi idx-str) *OMNI-DLG-LADESCHLEIFEN*)) + (if eintrag + (progn + (set_tile "val_sivasnr" (omni:sivasid-to-str (omni:val eintrag "Sivasnr"))) + (set_tile "val_profiltyp" (omni:sivasid-to-str (omni:val eintrag "ProfilTyp"))) + (set_tile "val_laenge" (omni:zahl-str (omni:val eintrag "Laenge"))) + ) + ) +) + + +;; Ladeschleifen-Auswahl-Dialog oeffnen +;; profiltyp = Praefix zum Filtern des ProfilTyp, z.B. "AP 110" (nil = alle) +;; init-hoehe = Vorbelegung Hoehe (nil = Default aus cfg) +;; Rueckgabe: (eintrag hoehe nil) wie omni:bogen-dialog, oder nil bei Abbruch +(defun omni:ladeschleifen-dialog (profiltyp init-hoehe / liste dat ergebnis dlg-hoehe profil) + (if (null *OMNI-LADESCHLEIFEN*) (omni:load-ladeschleifen)) + (if (null init-hoehe) (setq init-hoehe (ssg-cfg-or "omniflo" "default_hoehe" "2000"))) + + (setq liste *OMNI-LADESCHLEIFEN*) + (if profiltyp + (setq liste + (vl-remove-if-not + '(lambda (e) + (setq profil (cdr (assoc "ProfilTyp" e))) + (and (= (type profil) 'STR) (= (vl-string-search profiltyp profil) 0)) + ) + liste + ) + ) + ) + + (if (null liste) + (progn + (alert (ssg-textf "omni-ladeschleife-keine-gefunden" + (list (if profiltyp (strcat " (" profiltyp ")") "")))) + nil + ) + (progn + (setq *OMNI-DLG-LADESCHLEIFEN* liste) + (setq dat (load_dialog (strcat (getenv "DXFM_DCL") "/omniflo_ladeschleifen.dcl"))) + (if (not (new_dialog "omniflo_ladeschleifen" dat)) + (progn (alert (ssg-text "omni-ladeschleife-dialog-ladefehler")) nil) + (progn + (start_list "ladeschleife") + (mapcar '(lambda (e) (add_list (omni:sivasid-to-str (omni:val e "Beschreibung")))) liste) + (end_list) + (set_tile "ladeschleife" "0") + (set_tile "val_hoehe" init-hoehe) + (omni:ladeschleife-dlg-update "0") + + (action_tile "ladeschleife" "(omni:ladeschleife-dlg-update $value)") + (action_tile "accept" + (strcat + "(setq ergebnis (atoi (get_tile \"ladeschleife\")))" + "(setq dlg-hoehe (get_tile \"val_hoehe\"))" + "(done_dialog 1)")) + (action_tile "cancel" "(done_dialog 0)") + + (start_dialog) + (unload_dialog dat) + + (if ergebnis + (list (nth ergebnis *OMNI-DLG-LADESCHLEIFEN*) dlg-hoehe nil) + ) + ) + ) + ) + ) +) + + +(defun c:OMNI_LADESCHLEIFE_AP110 ( / dlg-result) + (setq dlg-result (omni:ladeschleifen-dialog "AP 110" nil)) + (if dlg-result + (omni:insert-from-entry dlg-result) + (princ (ssg-text "omni-abbruch-ladeschleife")) + ) + (princ) +) + ;; --- Omniflo / Verbinder --- (defun c:OMNI_TV_W_W () (princ "\n[DUMMY] TV W-W kpl") diff --git a/Lisp/README.md b/Lisp/README.md index ed1672d..0db3524 100644 --- a/Lisp/README.md +++ b/Lisp/README.md @@ -572,6 +572,7 @@ AutoLISP-Implementierung fuer alle Omniflo-Komponenten: Boegen, Weichen, Verbind | Boegen | `OMNI_APB_630_90`, `OMNI_APB_550_675`, `OMNI_APB_630_45`, `OMNI_APB_550_225`, `OMNI_APB_650_180` | Omniflo-Boegen ueber DCL-Dialog einfuegen | | Weichen | `OMNI_W90_*`, `OMNI_W45_*`, `OMNI_WP_*`, `OMNI_WK_*`, `OMNI_WKomb_*` | Omniflo-Weichen (Einfach/Doppel/Dreiwege, Delta, Stern) | | Geraden | `OMNI_AP60`, `OMNI_AP110`, `OMNI_APG110` | Omniflo-Geradenstuecke | +| Ladeschleifen | `OMNI_LADESCHLEIFE_AP110` | Ladeschleife aus `omniflo_ladeschleifen.json` ueber DCL-Dialog (`dcl/omniflo_ladeschleifen.dcl`) einfuegen; Daten per `ssg-json-laden` (Beschreibungen enthalten Kommas). Blockdatei `.dwg` unter `DXFM_OMNIFLO` (`omni:insert-dxf` faellt auf `.dwg` zurueck, wenn keine `.dxf` existiert). Per `OMNI_EDIT` editierbar | | TEF ⚠️ | `OMNI_TEF_UmlenkR/L`, `OMNI_TEF_AntriebL/R`, `OMNI_TEF_Gerade`, `OMNI_KettenFoerderer` | **Dummy** (noch nicht implementiert, im Menue ausgegraut) | | Transferwagen ⚠️ | `OMNI_TV_*` | **Dummy** (noch nicht implementiert, im Menue ausgegraut) | | Bogenweichen ⚠️ | `OMNI_APBW_*` | **Dummy** (noch nicht implementiert, im Menue ausgegraut) | diff --git a/Lisp/export.lsp b/Lisp/export.lsp index f5ac8bd..d2cd335 100644 --- a/Lisp/export.lsp +++ b/Lisp/export.lsp @@ -104,6 +104,32 @@ (if (car (atoms-family 1 '("DBG-SCHALTER-SET"))) (dbg-schalter-set "csv_leave_proxies" (if an 1 0)))) +;; --- Bloecke auf gefrorenen Layern vom Export ausschliessen --- +;; Standard an (T). Nur GEFRORENE Layer zaehlen (ssg-ent-layer-gefroren-p, +;; ssg_layer.lsp) - ausgeschaltete Layer werden weiter exportiert. Bedienbar +;; im Dialog CSV_EXPORT_KONFIG. Wirkt in csv:collect-export-blocks auf den +;; Block selbst UND - ueber *csv-ausschluss-enames* - auf die Hilfsobjekte +;; (Separator-/Element-Kopien, Einheiten-/AS-ES-Marker) eines gefrorenen +;; VF_n/GF_n-Wrappers, die auf eigenen Layern liegen. +(if (not (boundp '*csv-gefrorene-ausschliessen*)) (setq *csv-gefrorene-ausschliessen* T)) +(defun csv:gefrorene-ausschliessen-p () (if *csv-gefrorene-ausschliessen* T nil)) +(defun csv:gefrorene-ausschliessen-setzen (an) + (setq *csv-gefrorene-ausschliessen* (if an T nil))) + +;; Hilfsobjekte (car eines Records), deren Wrapper (nth 1) gefroren-fn +;; erfuellt. records = Record-Listen der Form (hilfsobjekt wrapper ...), wie +;; sie csv:sep-proxies-erzeugen, csv:element-proxies-erzeugen, +;; csv:asmark-aktualisieren und csv:ketten-verarbeiten liefern. +;; gefroren-fn = Praedikat auf den Wrapper. Reine Listenlogik, file-frei +;; testbar (tests/test_unit.lsp). +(defun csv:hilfskopien-ausschluss (records gefroren-fn / result) + (foreach rec records + (if (and (car rec) (nth 1 rec) (apply gefroren-fn (list (nth 1 rec)))) + (setq result (cons (car rec) result)))) + (reverse result) +) +(setq *csv-ausschluss-enames* nil) + ;; --- Feste Datei-/Skriptnamen dieses Moduls (keine Config, direkt im Code) --- (setq *export-filenames* @@ -2463,8 +2489,13 @@ ;; GeruestInsert.lsp). Wie BTMT eigenstaendig und von keinem anderen ;; Element mitgezaehlt - export_csv.py UND export_sivas.py fuehren sie ;; beide als eigene TeileArt-Zeilen. +;; Bloecke auf GEFRORENEN Layern (und die Hilfsobjekte gefrorener VF_n/GF_n) +;; werden ausgelassen, solange *csv-gefrorene-ausschliessen* an ist (Standard, +;; Dialog CSV_EXPORT_KONFIG); ausgeschaltete Layer zaehlen nicht als gefroren. ;; Gibt Auswahlsatz zurueck oder nil. -(defun csv:collect-export-blocks ( / ss-all ss-out i ename ed bname ist-nested-element) +(defun csv:collect-export-blocks ( / ss-all ss-out i ename ed bname ist-nested-element + gefroren n-gefroren) + (setq n-gefroren 0) (setq ss-all (ssget "X" (list (cons 0 "INSERT")))) (if (null ss-all) (setq ss-out nil) (progn @@ -2486,7 +2517,16 @@ (setq ist-nested-element (and (not (csv:export-alle-elemente-p)) (wcmatch bname (csv:pattern-nested-element)))) + ;; Gefrorener Layer (Schalter *csv-gefrorene-ausschliessen*): der + ;; Block selbst liegt darauf, oder er ist Hilfsobjekt eines + ;; gefrorenen VF_n/GF_n (*csv-ausschluss-enames*, csv:export-vorbereiten). + (setq gefroren + (and (csv:gefrorene-ausschliessen-p) + (or (ssg-ent-layer-gefroren-p ename) + (member ename *csv-ausschluss-enames*)))) + (if gefroren (setq n-gefroren (1+ n-gefroren))) (if (and (not ist-nested-element) + (not gefroren) (or (wcmatch bname (export:pattern "pattern_kreisel" "KR_*,KREISEL_*,ECKRAD_*")) (wcmatch (strcase bname) (export:pattern "pattern_gerade" "AP110*,AP_110*")) @@ -2514,6 +2554,8 @@ (if (= (sslength ss-out) 0) (setq ss-out nil)) ) ) + (if (> n-gefroren 0) + (princ (ssg-textf "exp-gefroren-ausgelassen" (list (itoa n-gefroren))))) ss-out ) @@ -2555,6 +2597,7 @@ ;; Kopien - Separatoren UND AS/ES-Schleuselemente (der Aufrufer entfernt sie am ;; Ende wieder). label dient nur den Meldungen. (defun csv:export-vorbereiten (label / sep-proxies asmarks element-proxies unitmarks) + (setq *csv-ausschluss-enames* nil) ;; Baustein-Geometrie der Stellvertreter (Separator-Kopie, AS-/ES-Marker) ;; wird beim Erzeugen neu gemerkt - Stand eines frueheren Laufs verwerfen. (setq *csv-baustein-by-handle* nil) @@ -2580,6 +2623,15 @@ ;; alle neuen Export-Objekte jeder Kette von AS nach ES aufsteigend ;; nummerieren - VOR ssg-id-check-all, siehe csv:ketten-verarbeiten. (setq unitmarks (csv:ketten-verarbeiten sep-proxies element-proxies asmarks)) + ;; Hilfsobjekte gefrorener Wrapper merken: sie liegen auf eigenen Layern, + ;; der Wrapper-Layer allein haelt sie daher nicht aus dem Export heraus + ;; (Auswertung in csv:collect-export-blocks). Erzeugt werden sie trotzdem, + ;; damit IDs und AS/ES-Marker ueber Laeufe stabil bleiben. + (setq *csv-ausschluss-enames* + (if (csv:gefrorene-ausschliessen-p) + (csv:hilfskopien-ausschluss + (append sep-proxies asmarks element-proxies unitmarks) + 'ssg-ent-layer-gefroren-p))) ;; Vor dem Export: IDs aller Bloecke sicherstellen und Duplikate korrigieren. ;; Erst hier - also erst nachdem ALLE Kopien aus allen Wrapper-Bloecken ;; stehen - wird ueberhaupt eine ID vergeben. ssg-id-check-all ermittelt @@ -2786,6 +2838,7 @@ (csv:sep-proxies-loeschen sep-proxies) (csv:hilfskopien-loeschen element-proxies "exp-art-element") (csv:hilfskopien-loeschen unitmarks "exp-art-einheit") + (setq *csv-ausschluss-enames* nil) (princ) ) @@ -2831,6 +2884,7 @@ (if eintrag (setq idx eintrag)) (set_tile "modus" (itoa idx)) (set_tile "hilfskopien_behalten" (if (csv:hilfskopien-behalten-p) "1" "0")) + (set_tile "gefrorene_ausschliessen" (if (csv:gefrorene-ausschliessen-p) "1" "0")) ) (defun csv:export-konfig-accept ( / idx modus) @@ -2838,6 +2892,7 @@ (setq modus (car (nth idx *csv-export-konfig-modi*))) (if modus (csv:export-modus-setzen modus)) (csv:hilfskopien-behalten-setzen (= (get_tile "hilfskopien_behalten") "1")) + (csv:gefrorene-ausschliessen-setzen (= (get_tile "gefrorene_ausschliessen") "1")) ) (defun c:CSV_EXPORT_KONFIG () diff --git a/Lisp/ssg_layer.lsp b/Lisp/ssg_layer.lsp index 968d354..dde4c9a 100644 --- a/Lisp/ssg_layer.lsp +++ b/Lisp/ssg_layer.lsp @@ -56,6 +56,24 @@ ) ) +;; Layer gefroren? (nur Frieren, NICHT Ausschalten - anders als +;; ssg-layer-visible-p). Rueckgabe: T wenn der Layer existiert und gefroren +;; ist (Bit 0 in Gruppe 70), sonst nil. Genutzt vom Export +;; (csv:collect-export-blocks, export.lsp). +(defun ssg-layer-gefroren-p (lay-name / entry) + (setq entry (if lay-name (tblsearch "LAYER" lay-name))) + (if entry + (= (logand (cdr (assoc 70 entry)) 1) 1) + ) +) + +;; Liegt die Entity ename auf einem gefrorenen Layer (Gruppe 8)? +(defun ssg-ent-layer-gefroren-p (ename) + (if ename + (ssg-layer-gefroren-p (cdr (assoc 8 (entget ename)))) + ) +) + ;; Pruefen ob Objekt-Layer der aktive Layer ist (Schutz vor Ausschalten) ;; lay-name = zu pruefender Layer; ist-gruppe = T wenn Gruppen-Layer ;; Rueckgabe: T wenn sicher (nicht aktiver Layer), nil wenn Problem diff --git a/README.md b/README.md index ab3bca9..9f9bdfc 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,9 @@ SSG_LIB │ │ ├── Antriebst. links → OMNI_TEF_AntriebL │ │ ├── Antriebst. rechts → OMNI_TEF_AntriebR │ │ └── TEF Gerade → OMNI_TEF_Gerade -│ └── KettenFoerderer → OMNI_KettenFoerderer +│ ├── KettenFoerderer → OMNI_KettenFoerderer +│ └── Ladeschleifen +│ └── AP 110 → OMNI_LADESCHLEIFE_AP110 ├── Konfiguration │ ├── Umschalten 2D und 3D → SSG_DIM_SWITCH │ └── Sprache → SSG_SPRACHE @@ -100,6 +102,7 @@ Einfuegen von Omniflo-Standardkomponenten (Boegen, Geraden, Weichen, TEF-Element | `OMNI_WKomb_Delta_1400/1600, OMNI_WKomb_Star` | Weichenkombinationen einfuegen | | `OMNI_TEF_*` | TEF-Elemente einfuegen (Umlenk-/Antriebsstationen, Gerade) | | `OMNI_KettenFoerderer` | Kettenfoerderer einfuegen | +| `OMNI_LADESCHLEIFE_AP110` | Ladeschleife (AP 110) ueber DCL-Dialog einfuegen | ### VarioFoerderer.lsp - Foerderanlage Generator (v24.4) diff --git a/data/omniflo/2D/824331125.dwg b/data/omniflo/2D/824331125.dwg new file mode 100644 index 0000000000000000000000000000000000000000..ac56f1d47ba525d7dc76fad2d44b8b3cf6838cf0 GIT binary patch literal 248386 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

b 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

$4=H9g1(HWS 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 literal 0 HcmV?d00001 diff --git a/data/omniflo/2D/824604001.dwg b/data/omniflo/2D/824604001.dwg new file mode 100644 index 0000000000000000000000000000000000000000..5b691cb5170622f42abc0d1c1e382f02e562b6ff GIT binary patch literal 22371 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 literal 0 HcmV?d00001 diff --git a/dcl/csv_export_konfig.dcl b/dcl/csv_export_konfig.dcl index 5281a55..9fc4fab 100644 --- a/dcl/csv_export_konfig.dcl +++ b/dcl/csv_export_konfig.dcl @@ -2,7 +2,8 @@ // csv_export_konfig.dcl - CSV-Export Konfiguration (c:CSV_EXPORT_KONFIG, // export.lsp). Steuert *csv-export-modus* (Combobox mit drei sich // gegenseitig ausschliessenden Eintraegen) sowie den Debug-Schalter -// csv_leave_proxies (Hilfskopien nach dem Export stehen lassen). +// csv_leave_proxies (Hilfskopien nach dem Export stehen lassen) und +// *csv-gefrorene-ausschliessen* (gefrorene Layer nicht exportieren). // // popup_list statt radio_column: set_tile/get_tile auf einer // boxed_radio_column liefern/erwarten den KEY des gewaehlten radio_button @@ -23,6 +24,11 @@ csv_export_konfig : dialog { width = 55; } + : toggle { + key = "gefrorene_ausschliessen"; + label = "Bloecke auf gefrorenen Layern nicht exportieren"; + } + spacer; : boxed_column { diff --git a/dcl/omniflo_ladeschleifen.dcl b/dcl/omniflo_ladeschleifen.dcl new file mode 100644 index 0000000..d0129ad --- /dev/null +++ b/dcl/omniflo_ladeschleifen.dcl @@ -0,0 +1,47 @@ +// ============================================================ +// omniflo_ladeschleifen.dcl - Ladeschleifen-Auswahl Dialog fuer Omniflo +// Zeigt die Ladeschleifen aus omniflo_ladeschleifen.json mit Details an. +// ============================================================ + +omniflo_ladeschleifen : dialog { + label = "Omniflo Ladeschleife Auswahl"; + + : row { + : popup_list { + key = "ladeschleife"; + label = "Ladeschleife:"; + width = 50; + } + : edit_box { + key = "val_sivasnr"; + label = "SivasNr:"; + width = 22; + is_enabled = false; + } + } + + : row { + : edit_box { + key = "val_profiltyp"; + label = "Profiltyp:"; + width = 16; + is_enabled = false; + } + : edit_box { + key = "val_laenge"; + label = "Laenge:"; + width = 16; + is_enabled = false; + } + } + + : row { + : edit_box { + key = "val_hoehe"; + label = "Hoehe (mm):"; + edit_width = 10; + } + } + + ok_cancel; +} diff --git a/lang/de_DE.json b/lang/de_DE.json index b9457cc..585a0d9 100644 --- a/lang/de_DE.json +++ b/lang/de_DE.json @@ -478,6 +478,9 @@ "kreisel-warn-core-fehlt": "\n[KreiselInsert] WARNUNG: ssg_core.lsp nicht gefunden - Standardwerte.", "omni-abbruch": "\nAbgebrochen.", "omni-abbruch-bogen": "\n[BOGEN] Abgebrochen.", + "omni-abbruch-ladeschleife": "\n[LADESCHLEIFE] Abgebrochen.", + "omni-ladeschleife-dialog-ladefehler": "Ladeschleifen-Dialog konnte nicht geladen werden.", + "omni-ladeschleife-keine-gefunden": "Keine Ladeschleifen%1 gefunden.", "omni-abbruch-omni": "\n[OMNI] Abgebrochen.", "omni-abbruch-weiche": "\n[WEICHE] Abgebrochen.", "omni-bogen-dialog-ladefehler": "Bogen-Dialog konnte nicht geladen werden.", @@ -717,6 +720,7 @@ "exp-unitmark-ids": "\n[EXPORT] %1 Einheiten-Proxy(s) mit ID versehen.", "exp-kette-luecke": "\n[EXPORT] WARNUNG: Kette '%1' reisst ab (kein K1 auf dem letzten K2) - %2 Baustein(e) als eigene Teilkette weitergefuehrt, Einheitengrenzen dort pruefen.", "exp-hilfskopien-behalten": "\n[EXPORT] csv_leave_proxies=1: %1 %2 bleiben in der Zeichnung (Abschalten: (dbg-schalter-off \"csv_leave_proxies\"))", + "exp-gefroren-ausgelassen": "\n[EXPORT] %1 Bloecke auf gefrorenen Layern nicht exportiert (abschaltbar in CSV_EXPORT_KONFIG).", "exp-art-separator": "Separator-Kopie(n)", "exp-art-element": "Element-Kopie(n)", "exp-art-einheit": "Einheiten-Proxy(s)", diff --git a/lang/en_GB.json b/lang/en_GB.json index 7877a4f..4eebc3a 100644 --- a/lang/en_GB.json +++ b/lang/en_GB.json @@ -478,6 +478,9 @@ "kreisel-warn-core-fehlt": "\n[KreiselInsert] WARNING: ssg_core.lsp not found - using defaults.", "omni-abbruch": "\nCancelled.", "omni-abbruch-bogen": "\n[ARC] Cancelled.", + "omni-abbruch-ladeschleife": "\n[LOADING LOOP] Cancelled.", + "omni-ladeschleife-dialog-ladefehler": "Loading loop dialog could not be loaded.", + "omni-ladeschleife-keine-gefunden": "No loading loops%1 found.", "omni-abbruch-omni": "\n[OMNI] Cancelled.", "omni-abbruch-weiche": "\n[SWITCH] Cancelled.", "omni-bogen-dialog-ladefehler": "Arc dialog could not be loaded.", @@ -717,6 +720,7 @@ "exp-unitmark-ids": "\n[EXPORT] %1 unit proxy(s) given an ID.", "exp-kette-luecke": "\n[EXPORT] WARNING: chain '%1' is broken (no K1 at the last K2) - %2 element(s) continued as a separate sub-chain, check the unit boundaries there.", "exp-hilfskopien-behalten": "\n[EXPORT] csv_leave_proxies=1: %1 %2 remain in the drawing (switch off: (dbg-schalter-off \"csv_leave_proxies\"))", + "exp-gefroren-ausgelassen": "\n[EXPORT] %1 blocks on frozen layers not exported (can be switched off in CSV_EXPORT_KONFIG).", "exp-art-separator": "separator copy(ies)", "exp-art-element": "element copy(ies)", "exp-art-einheit": "unit proxy(ies)", diff --git a/lib/export_sivas.py b/lib/export_sivas.py index 22ad293..6e425bb 100644 --- a/lib/export_sivas.py +++ b/lib/export_sivas.py @@ -14,7 +14,8 @@ Neues CSV-Format: - IDs: kommaseparierte Liste der ID-Attribute aller Bloecke der Zeile (eigene Spalte, nicht mehr Teil des details-JSON). - - Omniflo Bogen/Weiche: gruppiert nach SivasNummer, Anzahl summiert + - Omniflo (TEILEART "Omniflo ..."): je Nummer aus dem ARTINR-Attribut + (kommagetrennt) eine Zeile, Anzahl summiert; TEF-Teile als "Omniflo TEF" - Omniflo Gerade: gruppiert nach ARTINR-Attribut, Laenge[mm] summiert - ILS 2.0 Kreisel: gruppiert nach Kreiselart+Abstand+Anzahl Separatoren/ Scanner/Rampen, Anzahl summiert @@ -34,7 +35,8 @@ Aufruf: Argumente: export_raw.json - JSON-Datei mit allen INSERT-Entities aus der Zeichnung - data_dir - Pfad zum data/-Verzeichnis (mit json/ Unterordner) + data_dir - Pfad zum data/-Verzeichnis (derzeit ungenutzt, bleibt + fuer den Aufrufer export.lsp erhalten) output.csv - Ziel-CSV-Datei (reine Merkmalnummern, fuer den Sivas-Import) @@ -71,47 +73,11 @@ def load_json(path): return json.load(f) -def build_lookup(boegen, weichen): - """Erzeugt ein Dict: SivasNr (als String) -> (typ, eintrag)""" - lookup = {} - for b in boegen: - lookup[str(b["Sivasnr"])] = ("bogen", b) - for w in weichen: - lookup[str(w["Sivasnr"])] = ("weiche", w) - return lookup - - -def classify_weiche(eintrag): - """Bestimmt den Weichen-Subtyp fuer die ILS-Automation-Zaehlung.""" - wt = eintrag.get("WeichenTyp", "") - profil = eintrag.get("ProfilTyp", "") - if "WEICHENKOERPER" in profil.upper(): - return "weichenkoerper" - if wt == "Einzelweiche": - return "einzelweiche" - if wt in ("Doppelweiche", "Dreiwegeweiche"): - return "doppelweiche" - if wt in ("Deltaweiche", "Dreifachweiche") or "DELTA" in profil.upper(): - return "deltaweiche" - if wt == "Sternweiche" or "STAR" in profil.upper(): - return "sternweiche" - return "einzelweiche" - - def get_id(block): """Liest das eindeutige ID-Attribut eines Blocks (von ssg-id-check-all vergeben).""" return block.get("attribs", {}).get("ID", "") -def format_sivasnr(sivasnr): - """ - Wandelt einen "+"-separierten Sivasnr-Wert (Rohformat aus den JSON-Katalogen, - dort weiterhin benoetigt fuer Dateinamen-Referenzen) in eine reine - kommaseparierte Liste fuer die Ausgabe (CSV/Block-Attribut) um. - """ - return ", ".join(p.strip() for p in str(sivasnr).split("+") if p.strip()) - - # --- Sivas-Merkmalnummern: Anzeigetexte, die nicht 1:1 aus dem Attribut # uebernommen werden koennen (Attribute bleiben ASCII, siehe CLAUDE.md- # Konvention "Alle Texte in Dateien ohne Umlaute" - Sivas erwartet aber die @@ -218,42 +184,6 @@ def gefaellestrecke_signature(block): ) -def expand_tef_components(sivasnr_parts, sivasnr_tef): - """Ersetzt "0_BG*"-Platzhalter-Teile in sivasnr_parts durch die dahinter - liegenden echten TEF-Sivasnummern (Katalogfeld SivasnrTEF). - - "0_BG*"-Werte im Sivasnr-Rohwert (z.B. "834372404+0_BG071090") sind KEINE - echten Sivasnummern, sondern reine Blocknamen-Platzhalter fuer eine TEF- - Baugruppe aus mehreren realen Teilen - "0_BG071090" steht z.B. fuer die - drei echten Teile "0_B10071"+"0_B10090"+"0_B10090" (siehe SivasnrTEF im - Katalog, omniflo_weichen.json/omniflo_boegen.json). Ohne diese Aufloesung - wuerde "0_BG071090" selbst als (nicht existente) Sivasnummer gezaehlt und - die echten Teile (u.a. 0_B10071) fehlten in der Summierung. - Reale TEF-Einzelteile, die bereits direkt im Sivasnr-Rohwert stehen - (Praefix "0_B", aber nicht "0_BG", z.B. "821104026+0_B10071"), sind schon - echte Sivasnummern und werden unveraendert uebernommen. - Bei mehreren "0_BG*"-Platzhaltern im selben Rohwert (TEF beidseitig) wird - SivasnrTEF zu gleichen Teilen aufgeteilt - der Katalog listet die Teile - je Seite hintereinander in SivasnrTEF. - """ - bg_count = sum(1 for p in sivasnr_parts if p.startswith("0_BG")) - if bg_count == 0: - return list(sivasnr_parts) - - tef_parts = [p.strip() for p in str(sivasnr_tef or "").split("+") if p.strip()] - chunk_size = len(tef_parts) // bg_count if bg_count else 0 - - expanded = [] - tef_index = 0 - for part in sivasnr_parts: - if part.startswith("0_BG"): - expanded.extend(tef_parts[tef_index:tef_index + chunk_size]) - tef_index += chunk_size - else: - expanded.append(part) - return expanded - - def parse_float_list(csv_str): """Kommagetrennten Attribut-String (z.B. L_GF_m) in Liste von floats.""" out = [] @@ -443,17 +373,21 @@ ILS_SIVASNR = { } -def process_blocks(blocks, lookup): +def process_blocks(blocks): """ Verarbeitet alle Bloecke. + Omniflo-Elemente werden ueber das TEILEART-Attribut ("Omniflo ...") + erkannt, ihre Sivas-Nummern kommen - wie beim Geruest - ausschliesslich + aus dem ARTINR-Attribut (kommagetrennt, TEF-Teile dort bereits + aufgeloest). Ein Katalog-Lookup ueber den Blocknamen findet nicht statt. + Rueckgabe: items - Liste der CSV-Zeilen als Dicts counters - Zaehler fuer ILS-Automation-Summierungszeile """ - # Gruppen: sivasnr_str -> {anzahl, ids} - bogen_groups = {} # sivasnr -> dict - weiche_groups = {} # sivasnr -> dict + # Omniflo: artinr -> {teileart, anzahl, ids} + omniflo_groups = {} # Gerade: artinr_str -> {anzahl, laenge_mm_total, ids} gerade_groups = {} kreisel_list = [] # Liste von blocks @@ -467,14 +401,6 @@ def process_blocks(blocks, lookup): geruest_list = [] # Liste von GR_-Geruest-Baugruppenbloecken, je einer Zeile counters = { - "anzahl_boegen": 0, - "anzahl_weichenkoerper": 0, - "anzahl_einzelweichen": 0, - "anzahl_deltaweichen": 0, - "anzahl_doppel_dreiwegeweichen": 0, - "anzahl_sternweichen": 0, - "gesamtlaenge_ap110": 0.0, - "gesamtlaenge_ap60": 0.0, "anzahl_kreisel": 0, "anzahl_kreisel_pinband": 0, "sep_kreisel_pin": 0, @@ -544,76 +470,9 @@ def process_blocks(blocks, lookup): counters["anzahl_geruest"] += 1 continue - # --- Omniflo Bogen oder Weiche (erkannt via Katalog) --- - if bname in lookup: - typ, eintrag = lookup[bname] - sivasnr_raw = eintrag.get("Sivasnr", bname) - sivasnr_parts = [p.strip() for p in str(sivasnr_raw).split("+")] - has_tef = any(p.startswith("0_B") for p in sivasnr_parts) - block_id = get_id(block) - - if typ == "bogen": - if has_tef and len(sivasnr_parts) > 1: - # Multi-Komponenten: jede Komponente separat gruppieren - # ("0_BG*"-Platzhalter werden ueber SivasnrTEF in ihre - # echten Einzelteile aufgeloest, siehe expand_tef_components) - expanded_parts = expand_tef_components(sivasnr_parts, eintrag.get("SivasnrTEF")) - for i, comp_sivasnr in enumerate(expanded_parts): - comp_id = f"{block_id}.t{i+1}" - if comp_sivasnr not in bogen_groups: - bogen_groups[comp_sivasnr] = {"anzahl": 0, "ids": []} - bogen_groups[comp_sivasnr]["anzahl"] += 1 - bogen_groups[comp_sivasnr]["ids"].append(comp_id) - else: - # Normal: alle als eine Komponente - sivasnr = format_sivasnr(sivasnr_raw) - if sivasnr not in bogen_groups: - bogen_groups[sivasnr] = {"anzahl": 0, "ids": []} - bogen_groups[sivasnr]["anzahl"] += 1 - bogen_groups[sivasnr]["ids"].append(block_id) - counters["anzahl_boegen"] += 1 - - elif typ == "weiche": - subtyp = classify_weiche(eintrag) - if has_tef and len(sivasnr_parts) > 1: - # Multi-Komponenten: jede Komponente separat gruppieren - # ("0_BG*"-Platzhalter werden ueber SivasnrTEF in ihre - # echten Einzelteile aufgeloest, siehe expand_tef_components) - expanded_parts = expand_tef_components(sivasnr_parts, eintrag.get("SivasnrTEF")) - for i, comp_sivasnr in enumerate(expanded_parts): - comp_id = f"{block_id}.t{i+1}" - if comp_sivasnr.startswith("0_B"): - # TEF-Komponente (Bogen) in bogen_groups - if comp_sivasnr not in bogen_groups: - bogen_groups[comp_sivasnr] = {"anzahl": 0, "ids": []} - bogen_groups[comp_sivasnr]["anzahl"] += 1 - bogen_groups[comp_sivasnr]["ids"].append(comp_id) - else: - # Weichen-Komponente in weiche_groups - if comp_sivasnr not in weiche_groups: - weiche_groups[comp_sivasnr] = {"anzahl": 0, "ids": []} - weiche_groups[comp_sivasnr]["anzahl"] += 1 - weiche_groups[comp_sivasnr]["ids"].append(comp_id) - else: - # Normal: alle als eine Komponente - sivasnr = format_sivasnr(sivasnr_raw) - if sivasnr not in weiche_groups: - weiche_groups[sivasnr] = {"anzahl": 0, "ids": []} - weiche_groups[sivasnr]["anzahl"] += 1 - weiche_groups[sivasnr]["ids"].append(block_id) - if subtyp == "einzelweiche": - counters["anzahl_einzelweichen"] += 1 - elif subtyp in ("doppelweiche", "dreiwegeweiche"): - counters["anzahl_doppel_dreiwegeweichen"] += 1 - elif subtyp == "deltaweiche": - counters["anzahl_deltaweichen"] += 1 - elif subtyp == "sternweiche": - counters["anzahl_sternweichen"] += 1 - elif subtyp == "weichenkoerper": - counters["anzahl_weichenkoerper"] += 1 - continue - # --- Omniflo Gerade (AP110) --- + # VOR dem allgemeinen Omniflo-Zweig: Geraden tragen ggf. ebenfalls + # TEILEART "Omniflo ...", brauchen aber die Laengensumme. if matches_any(bname, BLOCKPATTERNS.get("pattern_gerade", [])): attribs = block.get("attribs", {}) artinr = attribs.get("ARTINR", "") @@ -628,7 +487,33 @@ def process_blocks(blocks, lookup): gerade_groups[key]["anzahl"] += 1 gerade_groups[key]["laenge_mm"] += laenge gerade_groups[key]["ids"].append(get_id(block)) - counters["gesamtlaenge_ap110"] += laenge + continue + + # --- Omniflo-Element (Bogen, Weiche, Ladeschleife, TEF, ...) --- + # Erkennung ueber TEILEART, Sivas-Nummern aus ARTINR - wie beim + # Geruest eine Zeile je Nummer, hier aber ueber ALLE Bloecke + # gruppiert. Die DWGs fuehren TEF-Teile bereits aufgeloest im ARTINR + # (z.B. "834372002, 0_B10090, 0_B10090"). TEF-Teile ("0_B*") laufen + # unter "Omniflo TEF", damit dasselbe Teil aus Bogen und Weiche EINE + # Zeile bleibt. + attribs = block.get("attribs", {}) + teileart = attribs.get("TEILEART", "") + if teileart.startswith("Omniflo"): + artinr_list = [a.strip() for a in attribs.get("ARTINR", "").split(",") if a.strip()] + block_id = get_id(block) + if not artinr_list: + print(f"[export_sivas] WARNUNG: Omniflo-Block {bname} (ID {block_id}) " + f"ohne ARTINR - nicht exportiert.", file=sys.stderr) + continue + for i, artinr in enumerate(artinr_list): + comp_id = f"{block_id}.t{i+1}" if len(artinr_list) > 1 else block_id + if artinr not in omniflo_groups: + omniflo_groups[artinr] = { + "teileart": "Omniflo TEF" if artinr.startswith("0_B") else teileart, + "anzahl": 0, "ids": [], + } + omniflo_groups[artinr]["anzahl"] += 1 + omniflo_groups[artinr]["ids"].append(comp_id) continue # --- ILS Eckrad (vor Kreisel pruefen: pattern_kreisel schliesst @@ -695,27 +580,10 @@ def process_blocks(blocks, lookup): items = [] nr = 1 - for sivasnr, g in bogen_groups.items(): - teileart = "TEF Bogen" if str(sivasnr).startswith("0_B") else "Omniflo Bogen" + for sivasnr, g in omniflo_groups.items(): items.append({ "nr": nr, - "teileart": teileart, - "sivasnr": sivasnr, - "sivasnr_quoted": False, - "bezeichnung": "", - "dispgruppe": 10, - "anzahl": g["anzahl"], - "laenge_mm": "", - "ids": g["ids"], - "details": {}, - }) - nr += 1 - - for sivasnr, g in weiche_groups.items(): - teileart = "TEF Weiche" if str(sivasnr).startswith("0_B") else "Omniflo Weiche" - items.append({ - "nr": nr, - "teileart": teileart, + "teileart": g["teileart"], "sivasnr": sivasnr, "sivasnr_quoted": False, "bezeichnung": "", @@ -842,7 +710,7 @@ def process_blocks(blocks, lookup): # ILS_SIVASNR - JEDE Artikelnummer bekommt ihre EIGENE Sivas-Zeile (Sivas # kennt nur eine Sivasnr je Zeile), gleiche Artikelnummern INNERHALB # derselben Baugruppe werden dabei zu einer Zeile mit anzahl>1 - # zusammengefasst (wie bogen_groups/weiche_groups oben). Die volle + # zusammengefasst (wie omniflo_groups oben). Die volle # LAENGE der Baugruppe steht auf JEDER so entstandenen Zeile - Sivas hat # kein Konzept einer "gemeinsamen" Laenge ueber mehrere Zeilen hinweg. for block in geruest_list: @@ -1026,22 +894,15 @@ def main(): sys.exit(1) raw_json_path = sys.argv[1] - data_dir = sys.argv[2] + # sys.argv[2] (data_dir) wird derzeit nicht gebraucht - Omniflo-Nummern + # kommen aus ARTINR, nicht mehr aus dem Katalog. Argument bleibt fuer + # den Aufrufer (export.lsp) bestehen. output_csv = sys.argv[3] blocks = load_json(raw_json_path) - boegen_path = os.path.join(data_dir, "json", "omniflo_boegen.json") - weichen_path = os.path.join(data_dir, "json", "omniflo_weichen.json") + print(f"[export_sivas] {len(blocks)} Bloecke geladen.") - boegen = load_json(boegen_path) if os.path.exists(boegen_path) else [] - weichen = load_json(weichen_path) if os.path.exists(weichen_path) else [] - - lookup = build_lookup(boegen, weichen) - - print(f"[export_sivas] {len(blocks)} Bloecke geladen, " - f"{len(boegen)} Boegen, {len(weichen)} Weichen im Katalog.") - - items, _ = process_blocks(blocks, lookup) + items, _ = process_blocks(blocks) header = "Nr;TeileArt;SivasNummer;Bezeichnung;Dispogruppe;Anzahl;Laenge[mm];IDs;details" with open(output_csv, "w", encoding="utf-8") as f: diff --git a/menu/SSG_LIB.cui b/menu/SSG_LIB.cui index e2db2fd..03285bb 100644 --- a/menu/SSG_LIB.cui +++ b/menu/SSG_LIB.cui @@ -332,415 +332,421 @@ ^C^C(ssg-ensure "OmniModulInsert") OMNI_KettenFoerderer - + + + Ladeschleifen + ^C^C(ssg-ensure "OmniModulInsert") OMNI_LADESCHLEIFE_AP110 + + + TV W-W kpl ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_W - + TV W-AP110 kpl ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP110 - + TV W-AP60 oben kpl. ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP60 - + TV W-AP110-W kpl ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP110_W - + TV W-AP oben kpl ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP - + TV 80 ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_80 - + TV 50 ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_50 - + Endplatte Al-Profil AP schraubbar ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_ENDPLATTE - + Anschlag AP-Ende fuer Spulenzug ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_ANSCHLAG - + TV-A fuer AP110/AP60 kpl ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_A_AP110_AP60 - + TV-A fuer AP60/ST ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_A_AP60_ST - + TV-A fuer AP110/ST kpl ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_A_AP110_ST - + TV-SW II fuer SW-SW ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_II_SW_SW - + TV-SW III fuer SW-AP110-SW ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_III_AP110_SW - + TV-SW III fuer SW-AP110 ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_III_AP110 - + TV-SW IV fuer Anschluss SW-AP60 ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_IV_AP60 - + TV-SW IV fuer SW-ST ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_SW_IV_ST - + Muffe ^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_MUFFE - + APB 110 R400/45 140 nur fuer Delta ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R400_45_140 - + APB 110 R550/45 194 nur fuer Delta ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_45_194 - + APBW 110 R550/22,5 360x248,5 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_225_360 - + APBW 110 R550/22,5 410x298,5 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_225_410A - + APBW 110 R550/22,5 410x78,5 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_225_410B - + APBW 110 R550/22,5 410x98,5 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_225_410C - + APBW 110 R550/67,5 360x598,5 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_675_360 - + APBW 110 R400/67,5 260x398,5 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R400_675_260 - + APBW 110 R550/45 77x160 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_45_77 - + APBW 110 R550/67,5 125x83,5 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_675_125 - + APBW 110 R750/90 200x290 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R750_90_200 - + APBW 110 R650/90 300x190 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R650_90_300 - + APBW 110 R550/67,5 208x347 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_675_208 - + APBW 110 R550/67,5 58x497 ^C^C(ssg-ensure "OmniModulInsert") OMNI_APBW_R550_675_58 - + Element bearbeiten ^C^C(ssg-ensure "OmniModulInsert") OMNI_EDIT - + Geruest... ^C^C(ssg-ensure "GeruestInsert") GERUEST - + Marker einfuegen ^C^C(ssg-ensure "Tro_Edit") TRO_INSERT - + Marker bearbeiten ^C^C(ssg-ensure "Tro_Edit") TRO_EDIT - + Bearbeiten (Auto) ^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT - + Verbindung einfuegen ^C^C(ssg-ensure "Connection_Edit") CONNECTION_INSERT - + Verbindung bearbeiten ^C^C(ssg-ensure "Connection_Edit") CONNECTION_EDIT - + Eingang ^C^C(ssg-ensure "SSG_LIB_Commands") ILS_EINGANG_INSERT - + Ausgang ^C^C(ssg-ensure "SSG_LIB_Commands") ILS_AUSGANG_INSERT - + SPS Schliessen ^C^C - + Export Sivas ^C^C(ssg-ensure "export") EXPORTSIVAS - + Export CSV ^C^C(ssg-ensure "export") EXPORTCSV - + Umschalten 2D und 3D ^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_SWITCH - + Alle Bloecke auf 2D ^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_ALL_2D - + Alle Bloecke auf 3D ^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_ALL_3D - + Sprache ^C^C(ssg-ensure "SSG_LIB_Commands") SSG_SPRACHE - + Planquadrate an/aus ^C^C(ssg-ensure "DrawPlanquadrate") PLANQUADRATE_TOGGLE - + CSV-Export ^C^C(ssg-ensure "export") CSV_EXPORT_KONFIG - + alle Tests ausfuehren und exportieren ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) (c:SSG_RUN_ALL_TESTS_EXPORT) - + Tests ausfuehren und stehen lassen ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) (c:SSG_RUN_ALL_TESTS_OFFEN) - + Export CSV/Sivas ALL ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_export_all.lsp")) (c:TEST_EXPORT_ALL) - + Kreisel ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_kreisel.lsp")) (c:TEST_KREISEL) - + Foerderer ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_foerderer.lsp")) (c:TEST_FOERDERER) - + Foerderer-Linienzug ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_linienzug.lsp")) (c:TEST_LINIENZUG) (c:TEST_LINIENZUG_STUFE2) - + Omniflo ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo.lsp")) (c:TEST_OMNIFLO) - + Omniflo Strecke ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_omniflo_strecke.lsp")) (c:TEST_OMNIFLO_STRECKE) - + Gefaellestrecke ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_gefaellestrecke.lsp")) (c:TEST_GEFAELLESTRECKE) - + Mubea Gesamtmodell ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_mubea.lsp")) (c:TEST_MUBEA) - + HundM05 Kreisel-Abschnitt ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")) (c:TEST_HUNDM05) - + KS 2D/3D pruefen (CSV) ^C^C(load (strcat (getenv "DXFMAKRO") "/Lisp/ks_pruefung.lsp")) KS_PRUEFEN - + Kreisel bearbeiten (ssg-ensure "KreiselInsert") KreiselEdit - + Omniflo Element bearbeiten (ssg-ensure "OmniModulInsert") OMNI_EDIT - + Gefaellestrecke bearbeiten (ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_EDIT - + VarioFoerderer bearbeiten (ssg-ensure "VarioFoerderer") VARIOFOERDERER_EDIT - + TRO-Marker bearbeiten (ssg-ensure "Tro_Edit") TRO_EDIT - + Verbindung bearbeiten (ssg-ensure "Connection_Edit") CONNECTION_EDIT - + SSG Bearbeiten (Auto) (ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT @@ -760,13 +766,13 @@ Geruest... - + - - - - + + + + ILS @@ -922,12 +928,18 @@ - - + + Ladeschleifen + + + + + + Element bearbeiten - + @@ -1161,443 +1173,443 @@ - + Verbinder ~TV W-W kpl - - - - - - ~TV W-AP110 kpl - ~TV W-AP60 oben kpl. + ~TV W-AP110 kpl - ~TV W-AP110-W kpl + ~TV W-AP60 oben kpl. - ~TV W-AP oben kpl + ~TV W-AP110-W kpl - ~TV 80 + ~TV W-AP oben kpl - ~TV 50 + ~TV 80 - ~Endplatte Al-Profil AP schraubbar + ~TV 50 - ~Anschlag AP-Ende fuer Spulenzug + ~Endplatte Al-Profil AP schraubbar - ~TV-A fuer AP110/AP60 kpl + ~Anschlag AP-Ende fuer Spulenzug - ~TV-A fuer AP60/ST + ~TV-A fuer AP110/AP60 kpl - ~TV-A fuer AP110/ST kpl + ~TV-A fuer AP60/ST - ~TV-SW II fuer SW-SW + ~TV-A fuer AP110/ST kpl - ~TV-SW III fuer SW-AP110-SW + ~TV-SW II fuer SW-SW - ~TV-SW III fuer SW-AP110 + ~TV-SW III fuer SW-AP110-SW - ~TV-SW IV fuer Anschluss SW-AP60 + ~TV-SW III fuer SW-AP110 - ~TV-SW IV fuer SW-ST + ~TV-SW IV fuer Anschluss SW-AP60 - ~Muffe + ~TV-SW IV fuer SW-ST + + ~Muffe + + + + - + Boegen fuer Weichen ~APB 110 R400/45 140 nur fuer Delta - - - - - - ~APB 110 R550/45 194 nur fuer Delta - ~APBW 110 R550/22,5 360x248,5 + ~APB 110 R550/45 194 nur fuer Delta - ~APBW 110 R550/22,5 410x298,5 + ~APBW 110 R550/22,5 360x248,5 - ~APBW 110 R550/22,5 410x78,5 + ~APBW 110 R550/22,5 410x298,5 - ~APBW 110 R550/22,5 410x98,5 + ~APBW 110 R550/22,5 410x78,5 - ~APBW 110 R550/67,5 360x598,5 + ~APBW 110 R550/22,5 410x98,5 - ~APBW 110 R400/67,5 260x398,5 + ~APBW 110 R550/67,5 360x598,5 - ~APBW 110 R550/45 77x160 + ~APBW 110 R400/67,5 260x398,5 - ~APBW 110 R550/67,5 125x83,5 + ~APBW 110 R550/45 77x160 - ~APBW 110 R750/90 200x290 + ~APBW 110 R550/67,5 125x83,5 - ~APBW 110 R650/90 300x190 + ~APBW 110 R750/90 200x290 - ~APBW 110 R550/67,5 208x347 + ~APBW 110 R650/90 300x190 - ~APBW 110 R550/67,5 58x497 + ~APBW 110 R550/67,5 208x347 - - - SPS - - - Eingang + ~APBW 110 R550/67,5 58x497 - + + + + SPS + + - Ausgang + Eingang - SPS Schliessen + Ausgang + + SPS Schliessen + + + + - + TRO Marker einfuegen - - - - - - Marker bearbeiten - Bearbeiten (Auto) + Marker bearbeiten + + Bearbeiten (Auto) + + + + - + Connections Verbindung einfuegen - - - - - - Verbindung bearbeiten + + Verbindung bearbeiten + + + + Bearbeiten (Auto) - + - + Export Export Sivas - + Export CSV - + - + Konfiguration Umschalten 2D und 3D - - - - - - Alle Bloecke auf 2D - Alle Bloecke auf 3D + Alle Bloecke auf 2D - Sprache + Alle Bloecke auf 3D - Planquadrate an/aus + Sprache - CSV-Export + Planquadrate an/aus + + CSV-Export + + + + - + Tests alle Tests ausfuehren und exportieren - - - - - - Tests ausfuehren und stehen lassen - Export CSV/Sivas ALL + Tests ausfuehren und stehen lassen + + Export CSV/Sivas ALL + + + + Kreisel - + Foerderer - + Foerderer-Linienzug - + Omniflo - + Omniflo Strecke - + Gefaellestrecke - + Mubea Gesamtmodell - + HundM05 Kreisel-Abschnitt - + KS 2D/3D pruefen (CSV) - + - + POP501 SSG_LIB Edit Context Kreisel bearbeiten - + Omniflo Element bearbeiten - + Gefaellestrecke bearbeiten - + VarioFoerderer bearbeiten - + TRO-Marker bearbeiten - + Verbindung bearbeiten - + SSG Bearbeiten (Auto) - + diff --git a/menu/SSG_LIB.mnu b/menu/SSG_LIB.mnu index 7d8945f..cd6e675 100644 --- a/menu/SSG_LIB.mnu +++ b/menu/SSG_LIB.mnu @@ -75,6 +75,7 @@ [Scanner]^C^C(ssg-ensure "OmniModulInsert") OMNI_SCANNER [<-Bürstenbremse]^C^C(ssg-ensure "OmniModulInsert") OMNI_BUERSTENBREMSE [~KettenFoerderer]^C^C(ssg-ensure "OmniModulInsert") OMNI_KettenFoerderer +[Ladeschleifen]^C^C(ssg-ensure "OmniModulInsert") OMNI_LADESCHLEIFE_AP110 [->Verbinder] [~TV W-W kpl]^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_W [~TV W-AP110 kpl]^C^C(ssg-ensure "OmniModulInsert") OMNI_TV_W_AP110 diff --git a/tests/test_export_eingang_ausgang.py b/tests/test_export_eingang_ausgang.py index 816daf3..0d94552 100644 --- a/tests/test_export_eingang_ausgang.py +++ b/tests/test_export_eingang_ausgang.py @@ -78,7 +78,7 @@ class TestSivasSchliesstAus: _block("Eingang_2D", "0050"), _block("Ausgang_3D", "0051"), ] - items, counters = export_sivas.process_blocks(blocks, lookup={}) + items, counters = export_sivas.process_blocks(blocks) arten = {it.get("teileart", "") for it in items} assert "Eingang" not in arten diff --git a/tests/test_export_sivas_omniflo.py b/tests/test_export_sivas_omniflo.py new file mode 100644 index 0000000..3c545ff --- /dev/null +++ b/tests/test_export_sivas_omniflo.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +test_export_sivas_omniflo.py - Omniflo-Zeilen im Sivas-Export. +Laeuft komplett ohne BricsCAD (reine Python-Logik). + +Omniflo-Elemente werden ueber das TEILEART-Attribut erkannt, ihre Sivas- +Nummern kommen - wie beim Geruest - ausschliesslich aus dem ARTINR-Attribut +(kommagetrennt, TEF-Teile dort bereits aufgeloest). Kein Katalog-Lookup. +""" + +import os +import sys + +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "lib")) + +import export_sivas # noqa: E402 + + +def _block(block_name, teileid, teileart=None, artinr=None, **extra): + attribs = {"ID": teileid} + if teileart is not None: + attribs["TEILEART"] = teileart + if artinr is not None: + attribs["ARTINR"] = artinr + attribs.update(extra) + return {"block_name": block_name, "x": 0.0, "y": 0.0, "z": 0.0, + "rotation": 0.0, "attribs": attribs} + + +def _zeilen(blocks): + items, _ = export_sivas.process_blocks(blocks) + return {it["sivasnr"]: it for it in items} + + +def test_einfache_teile_je_nummer_eine_zeile(): + zeilen = _zeilen([ + _block("834372027", "0001", "Omniflo Einzelweiche", "834372027"), + _block("834372027", "0002", "Omniflo Einzelweiche", "834372027"), + _block("821104033", "0003", "Omniflo Bogen", "821104033"), + ]) + assert zeilen["834372027"]["teileart"] == "Omniflo Einzelweiche" + assert zeilen["834372027"]["anzahl"] == 2 + assert zeilen["834372027"]["ids"] == ["0001", "0002"] + assert zeilen["821104033"]["teileart"] == "Omniflo Bogen" + assert zeilen["821104033"]["anzahl"] == 1 + + +def test_mehrteilige_weiche_mit_tef(): + zeilen = _zeilen([ + _block("834372002+0_BG090090", "0010", "Omniflo Einzelweiche", + "834372002, 0_B10090, 0_B10090"), + ]) + assert zeilen["834372002"]["anzahl"] == 1 + assert zeilen["834372002"]["ids"] == ["0010.t1"] + assert zeilen["0_B10090"]["teileart"] == "Omniflo TEF" + assert zeilen["0_B10090"]["anzahl"] == 2 + assert zeilen["0_B10090"]["ids"] == ["0010.t2", "0010.t3"] + + +def test_tef_teil_aus_bogen_und_weiche_in_einer_zeile(): + items, _ = export_sivas.process_blocks([ + _block("821104025+0_B10090", "0020", "Omniflo Bogen", "821104025, 0_B10090"), + _block("834372002+0_BG090090", "0021", "Omniflo Einzelweiche", + "834372002, 0_B10090, 0_B10090"), + ]) + tef = [it for it in items if it["sivasnr"] == "0_B10090"] + assert len(tef) == 1 + assert tef[0]["anzahl"] == 3 + + +def test_ladeschleife_wird_exportiert(): + zeilen = _zeilen([ + _block("824331125", "0030", "Omniflo Ladeschleife", "824331125"), + ]) + assert zeilen["824331125"]["teileart"] == "Omniflo Ladeschleife" + + +def test_omniflo_ohne_artinr_warnt_und_fehlt(capsys): + items, _ = export_sivas.process_blocks([ + _block("834372027", "0040", "Omniflo Einzelweiche", ""), + ]) + assert items == [] + assert "ohne ARTINR" in capsys.readouterr().err + + +def test_block_ohne_teileart_wird_ignoriert(): + items, _ = export_sivas.process_blocks([ + _block("Scanner", "0050", artinr=""), + _block("827064041", "0051", artinr="827064041"), + ]) + assert items == [] + + +def test_geruest_unveraendert(): + zeilen = _zeilen([ + _block("GR_Saeulen_20260928112449", "0060", "Geruest Saeule 2 Zoll", + "821006051,821004201,825002022,825002022", LAENGE="2500"), + ]) + assert zeilen["825002022"]["anzahl"] == 2 + assert zeilen["825002022"]["teileart"] == "Geruest Saeule 2 Zoll" + assert zeilen["825002022"]["ids"] == ["0060"] + assert zeilen["825002022"]["dispgruppe"] == 20 diff --git a/tests/test_unit.lsp b/tests/test_unit.lsp index 3672d95..4f61f54 100644 --- a/tests/test_unit.lsp +++ b/tests/test_unit.lsp @@ -503,6 +503,29 @@ (tu-eq "csv:export-modus-setzen/ungueltig-ignoriert" "separator_track" *csv-export-modus*) (csv:export-modus-setzen _modus-alt) + + ;; --- Gefrorene Layer: Schalter + Hilfskopien-Ausschluss (file-frei) --- + ;; Records (hilfsobjekt wrapper ...) mit Symbolen als Stand-ins fuer + ;; Entities; das Praedikat ersetzt ssg-ent-layer-gefroren-p. + (setq _gef-alt (csv:gefrorene-ausschliessen-p)) + (csv:gefrorene-ausschliessen-setzen T) + (tu-true "csv:gefrorene-ausschliessen/an" (csv:gefrorene-ausschliessen-p)) + (csv:gefrorene-ausschliessen-setzen nil) + (tu-nil "csv:gefrorene-ausschliessen/aus" (csv:gefrorene-ausschliessen-p)) + (csv:gefrorene-ausschliessen-setzen _gef-alt) + + (setq _gef-recs '((sep1 vf1 "SEP") (sep2 vf2 "SEP") (mark1 vf1 "AS") (unit1 gf1 "E" 1))) + (tu-eq "csv:hilfskopien-ausschluss/wrapper-vf1-gefroren" '(sep1 mark1) + (csv:hilfskopien-ausschluss _gef-recs (function (lambda (w) (eq w 'vf1))))) + (tu-eq "csv:hilfskopien-ausschluss/zwei-wrapper" '(sep2 unit1) + (csv:hilfskopien-ausschluss _gef-recs + (function (lambda (w) (member w '(vf2 gf1)))))) + (tu-nil "csv:hilfskopien-ausschluss/nichts-gefroren" + (csv:hilfskopien-ausschluss _gef-recs (function (lambda (w) nil)))) + (tu-nil "csv:hilfskopien-ausschluss/leere-liste" + (csv:hilfskopien-ausschluss nil (function (lambda (w) T)))) + (tu-nil "csv:hilfskopien-ausschluss/record-ohne-wrapper" + (csv:hilfskopien-ausschluss '((sep1)) (function (lambda (w) T)))) )