feat: Eingang/Ausgang-Symbole als eigene CSV-Zeile + in TrackIds
Die Materialfluss-Ein-/Ausgangssymbole (Bloecke Eingang_<DIM>/Ausgang_<DIM>,
eingefuegt ueber ils-insert-station) erscheinen jetzt NUR im CSV-Export als
eigene TeileArt-Zeile ("Eingang"/"Ausgang", Merkmale wie BTMT). Wie
Separator/AS/ES nehmen sie als freie Umlauf-Punkte (KREISEL_UMLAUF_TEILEARTEN)
an der TrackIds-Spalte teil und tauchen so auch auf Kreiseln auf, auf deren
Bahn sie liegen. Der Sivas-Export schliesst sie bewusst aus.
- cfg/export.cfg: pattern_eingang/pattern_ausgang
- Lisp/export.lsp: csv:collect-export-blocks sammelt beide Muster
- Lisp/ssg_id.lsp: ssg-id-collect-blocks erfasst sie (ssg-id-check-all fuellt
das nachgetragene ID-ATTDEF, dokumentiert in data/ils/allocations.json)
- lib/export_csv.py: Klassifikations-Zweige Eingang/Ausgang
- lib/export_neighbors.py: KREISEL_UMLAUF_TEILEARTEN um Eingang/Ausgang erweitert
- lib/export_sivas.py: Eingang/Ausgang uebersprungen (kein Sivas-Eintrag)
- Tests: test_export_eingang_ausgang.py + Kreisel-Umlauf-Test
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
52b0699862
commit
1d082ccde7
+25
-5
@@ -70,8 +70,8 @@ Bounding-Boxen braucht).
|
||||
`vla-update` auf, das allein reichte in diesem Fall nicht aus.
|
||||
7. **`csv:collect-export-blocks`** — sammelt alle relevanten top-level
|
||||
INSERTs (Kreisel, Omniflo, VF/GF-Wrapper, Separator/Scanner,
|
||||
BTMT-Stationen) ueber die Blockname-Muster aus `cfg/export.cfg`
|
||||
`[blockpattern]`.
|
||||
BTMT-Stationen, Eingang/Ausgang) ueber die Blockname-Muster aus
|
||||
`cfg/export.cfg` `[blockpattern]`.
|
||||
8. **`csv:block-to-json`** je Fund — siehe naechster Abschnitt.
|
||||
|
||||
### `csv:block-to-json` — Inhalt eines JSON-Eintrags
|
||||
@@ -277,7 +277,8 @@ Zu beachten:
|
||||
Eine grosse Schleife über alle rohen JSON-Blöcke ordnet jeden Block anhand
|
||||
der `cfg/export.cfg [blockpattern]`-Muster einer TeileArt zu (Kreisel,
|
||||
Eckrad, Omniflo Bogen/Weiche/Gerade, VF-Strecke, Gefaellestrecke,
|
||||
Strecke-Modul, Separator, Scanner, BTMT Be-/Entladung) und baut daraus ein
|
||||
Strecke-Modul, Separator, Scanner, BTMT Be-/Entladung, Eingang/Ausgang) und
|
||||
baut daraus ein
|
||||
Item-dict mit `teileart`, `teileid`, `bezeichnung`, `planquadrat`,
|
||||
`merkmale` und den bbox-/KOS-Spalten (`bbox_columns`). VF_n/GF_n-Items
|
||||
bekommen dabei zusaetzlich `x`/`y` (Kettenanfang, fuer die Schleuselement-
|
||||
@@ -299,6 +300,24 @@ Default 210x150x14mm) und der bekannten Position/Rotation eine synthetische
|
||||
`_bbox`, damit der Separator trotzdem an der Nachbarschaftserkennung
|
||||
teilnimmt.
|
||||
|
||||
#### Eingang/Ausgang — nur im CSV-Export
|
||||
|
||||
Die Materialfluss-Ein-/Ausgangssymbole (Bloecke `Eingang_<DIM>`/`Ausgang_<DIM>`,
|
||||
eingefuegt ueber `ils-insert-station`, Befehle `ILS_EINGANG_INSERT`/
|
||||
`ILS_AUSGANG_INSERT`) werden **nur im CSV-Export** als eigene Zeile gefuehrt
|
||||
(TeileArt `"Eingang"`/`"Ausgang"`, Merkmale wie BTMT: ARTINR/Hoehe/Drehung).
|
||||
`export_sivas.py` ueberspringt sie bewusst — ein Fluss-Symbol hat keinen
|
||||
eigenen Sivas-Artikel.
|
||||
|
||||
Wie Separator/AS/ES nehmen sie als **freie Umlauf-Punkte**
|
||||
(`KREISEL_UMLAUF_TEILEARTEN`) an der `"TrackIds"`-Spalte teil und tauchen so
|
||||
auch auf einem Kreisel auf, auf dessen Bahn sie liegen. Voraussetzung fuer
|
||||
eine ueber Exportlaeufe stabile TeileId ist ein `ID`-ATTDEF in den DWGs
|
||||
(nachgetragen, dokumentiert in `data/ils/allocations.json`); `ssg-id-check-all`
|
||||
fuellt es vor jedem Export, und `ssg-id-collect-blocks` (`Lisp/ssg_id.lsp`)
|
||||
erfasst die Bloecke dafuer. Fehlt die ID (noch), greift wie bei BTMT eine
|
||||
lauf-lokale Fallback-Nummer (`EIN-`/`AUS-`-Praefix).
|
||||
|
||||
### 2. `compute_neighbor_ids` — die generische Bounding-Box-Nachbarschaft
|
||||
|
||||
Datei `lib/export_neighbors.py`. Testet drei Gruppen gegeneinander (NICHT
|
||||
@@ -347,8 +366,9 @@ Weichen zu einer widerspruchsfreien Nachbarschaft zusammenfuehrt. Fuer jeden
|
||||
echten Kreisel werden alle Punkte gesammelt, die dort geometrisch liegen:
|
||||
|
||||
- freie Punkte (`KREISEL_UMLAUF_TEILEARTEN` in `lib/export_neighbors.py`:
|
||||
Separator, BTMT Beladung, BTMT Entladung — alles Stationen direkt auf der
|
||||
Bahn/dem Track), deren Bounding-Box die Kreisel-Box ueberschneidet,
|
||||
Separator, BTMT Beladung, BTMT Entladung, Eingang, Ausgang — alles
|
||||
Stationen/Markierungen direkt auf der Bahn/dem Track), deren Bounding-Box
|
||||
die Kreisel-Box ueberschneidet,
|
||||
- die Kreisel-Kreisel-Weichen aus Schritt 3 (in BEIDEN beteiligten
|
||||
Kreisel-Umlaeufen, da eine Weiche der gemeinsame Verzweigungspunkt ist —
|
||||
man kann von Kreisel A nach B und zurueck),
|
||||
|
||||
Reference in New Issue
Block a user