feat: Sivas-Merkmale 4427-4432 (AS-/ES-Element) im Export befuellen
Die Streckenbloecke GF_N und VF_N tragen Winkel und Seite ihres AS-/ES-
Elements bereits als Attribute des gemeinsamen Schemas (WINKEL_AS/SEITE_AS/
WINKEL_ES/SEITE_ES, *strecke-attr-front* in ssg_core.lsp). Diese Information
landet jetzt auch im details-JSON des Sivas-Exports.
Zuordnung (Sivas-Hierarchie: 4431/4432 schalten Winkel und Seite frei):
4431/4432 AS-/ES-Element vorhanden Ja/Nein
4427/4429 Winkel "30 °"/"90 °"
4428/4430 Seite links/rechts
Die Zuordnung steht vollstaendig in cfg/sivas.cfg - mit denselben sechs
Zeilen in [gefaellestrecke] und [variofoerderer], jeweils direkt hinter 2950,
was auch die Reihenfolge im details-JSON bestimmt.
Ob ein Element vorhanden ist, entscheidet ausschliesslich WINKEL_AS/WINKEL_ES:
das Schema laesst den Winkel leer, wenn keines gewaehlt wurde, waehrend
SEITE_AS/SEITE_ES mit "rechts" immer einen Vorgabewert tragen. Ohne Element
bleiben Winkel UND Seite leer, damit in Sivas keine Seite unter einem
"Nein"-Knoten haengt.
Weitere Punkte:
- sivas_mapping: neuer Dekorator @braucht_attribs. Ein so markierter
Transform wird als fn(wert, attribs) statt fn(wert) aufgerufen und sieht
damit die uebrigen Attribute des Blocks - noetig, weil die Seite vom
Winkel abhaengt. Ohne diese Klammer muessten bedingte Merkmale wieder als
Python-Code aus der Config herauswandern.
- Die Winkel-Schreibweise der Sivas-Auswahlliste ("30 °" mit Leerzeichen vor
dem Gradzeichen) steht als Tabelle [as_es_winkel_anzeige] in sivas.cfg,
Bauart wie [geruest_typ_anzeige] - weicht Sivas davon ab, ist das die
einzige Stelle zum Nachziehen.
- gefaellestrecke_signature beruecksichtigt AS/ES: zwei sonst baugleiche
Gefaellestrecken mit AS links bzw. rechts bleiben getrennte Zeilen, sonst
zeigte die gemeinsame Zeile nur die Seite des ersten Blocks.
- Altbestand ohne diese Attribute meldet "Nein" statt abzubrechen.
- Merkmalsstamm_in_Sivas.xlsx auf den aktuellen Sivas-Stand gebracht
(enthaelt neben 4427-4432 auch 4002, 7010-7013 und Klartext-Korrekturen;
4339/4383 heissen jetzt eindeutig "... Gefaellestrecke"/"... Variofoerderer").
- 12 neue Tests in tests/test_export_sivas_as_es.py, ohne BricsCAD lauffaehig.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,8 @@ der Wahrheit ist der Code in `lib/export_sivas.py` - diese Datei ist ein
|
||||
Backup/Nachschlagewerk, bei Aenderungen am Code bitte hier nachziehen.
|
||||
|
||||
Stand: abgeglichen mit `lib/export_sivas.py` nach der Umstellung von
|
||||
beschreibenden JSON-Keys auf reine Merkmalnummern (Sept. 2026).
|
||||
beschreibenden JSON-Keys auf reine Merkmalnummern (Sept. 2026), ergaenzt um
|
||||
die AS-/ES-Element-Merkmale 4427-4432 (Okt. 2026).
|
||||
|
||||
## ILS 2.0 Kreisel (SivasNr 6200, Dispogruppe 20)
|
||||
|
||||
@@ -59,6 +60,7 @@ immer 1. Sivas kennt je Streckengruppe nur EIN Gefaelle-Segment-Paar
|
||||
| 4381 | Streckengruppe - Anzahl der Separatoren - Variofoerderer | `ANZAHL_SEPARATOR` | **voller Blockwert** (Aufteilung noch offen, siehe 4337) |
|
||||
| 4382 | (dieselbe Bezeichnung wie 4338 im Merkmalstamm) | - | fest `SEPARATOR_BEARBEITUNG_ANZEIGE` |
|
||||
| 4383 | Streckengruppe - Anzahl der Scanner (Vario-Anteil) | `ANZAHL_SCANNER` | **voller Blockwert** |
|
||||
| 4427-4432 | AS-/ES-Element (vorhanden/Winkel/Seite) | `WINKEL_AS`/`SEITE_AS`/`WINKEL_ES`/`SEITE_ES` | siehe eigener Abschnitt unten |
|
||||
| 3992 | Geruest fuer Einzelmodul | `GERUEST_EINZELMODUL` | wie Kreisel |
|
||||
| 3993 | Geruestoption fuer Einzelmodul | `GERUEST_TYP` | wie Kreisel |
|
||||
|
||||
@@ -86,9 +88,56 @@ Stueckzahl der Gruppe steht im Merkmal 4311.
|
||||
| 4337 | Streckengruppe - Anzahl der Separatoren - Gefaellestrecke | `ANZAHL_SEPARATOR` | direkt (kein Split noetig, kein Vario-Anteil vorhanden) |
|
||||
| 4338 | Streckengruppe - Bearbeitung Gefaellestreckenteilstueck fuer Separator (829516050) | - | fest `SEPARATOR_BEARBEITUNG_ANZEIGE` |
|
||||
| 4339 | Streckengruppe - Anzahl der Scanner | `ANZAHL_SCANNER` | direkt |
|
||||
| 4427-4432 | AS-/ES-Element (vorhanden/Winkel/Seite) | `WINKEL_AS`/`SEITE_AS`/`WINKEL_ES`/`SEITE_ES` | siehe eigener Abschnitt unten |
|
||||
| 3992 | Geruest fuer Einzelmodul | `GERUEST_EINZELMODUL` | wie Kreisel |
|
||||
| 3993 | Geruestoption fuer Einzelmodul | `GERUEST_TYP` | wie Kreisel |
|
||||
|
||||
Die Gruppierung (`gefaellestrecke_signature`) beruecksichtigt AS-/ES-Element
|
||||
mit: zwei sonst baugleiche Gefaellestrecken mit AS links bzw. AS rechts
|
||||
bleiben getrennte Zeilen, sonst zeigte die gemeinsame Zeile nur die Seite des
|
||||
ersten Blocks.
|
||||
|
||||
## AS-/ES-Element (4427-4432) - gilt fuer VF_N UND GF_N
|
||||
|
||||
Die Zuordnung steht vollstaendig in `cfg/sivas.cfg` - mit denselben sechs
|
||||
Zeilen in `[gefaellestrecke]` UND `[variofoerderer]`, weil beide Blockarten
|
||||
dieselben Attribute des gemeinsamen Strecken-Schemas tragen
|
||||
(`*strecke-attr-front*` in `ssg_core.lsp`). In `export_sivas.py` stehen nur
|
||||
die Transform-Funktionen.
|
||||
|
||||
Sivas-Hierarchie (Merkmalstamm): 4431/4432 (`"Ja"`/`"Nein"`) sind die
|
||||
Oberknoten, Winkel und Seite haengen als Unterknoten darunter - darum auch
|
||||
diese Reihenfolge in der Config.
|
||||
|
||||
| Merkmalnr | Bezeichnung (Merkmalstamm) | Block-Attribut | Transform | Berechnung |
|
||||
|---|---|---|---|---|
|
||||
| 4431 | AS-Element | `WINKEL_AS` | `as_es_vorhanden` | `"Ja"`, wenn ein Winkel gesetzt ist, sonst `"Nein"` |
|
||||
| 4427 | AS-Element - Winkel | `WINKEL_AS` | `as_es_winkel` | Optionswert der Auswahlliste (`"30"` -> `"30 °"`, Tabelle `[as_es_winkel_anzeige]`); leer, wenn kein AS-Element |
|
||||
| 4428 | AS-Element - Seite | `SEITE_AS` | `as_seite` | kleingeschrieben (`"links"`/`"rechts"`); leer, wenn kein AS-Element |
|
||||
| 4432 | ES-Element | `WINKEL_ES` | `as_es_vorhanden` | wie 4431 |
|
||||
| 4429 | ES-Element - Winkel | `WINKEL_ES` | `as_es_winkel` | wie 4427 |
|
||||
| 4430 | ES-Element - Seite | `SEITE_ES` | `es_seite` | wie 4428 |
|
||||
|
||||
**Warum der Winkel ueber das Vorhandensein entscheidet und nicht die Seite:**
|
||||
das Schema laesst `WINKEL_AS`/`WINKEL_ES` leer, wenn kein Element gewaehlt
|
||||
wurde, waehrend `SEITE_AS`/`SEITE_ES` mit `"rechts"` immer einen Vorgabewert
|
||||
tragen. Ohne Element bleiben darum Winkel UND Seite leer - sonst stuende in
|
||||
Sivas eine Seite unter einem `"Nein"`-Knoten.
|
||||
|
||||
**Winkel-Schreibweise:** die Sivas-Auswahlliste fuehrt `"30 °"`/`"90 °"` (mit
|
||||
Leerzeichen vor dem Gradzeichen), das Block-Attribut dagegen die nackte Zahl.
|
||||
Die Uebersetzung steht als Tabelle `[as_es_winkel_anzeige]` in `sivas.cfg`
|
||||
(gleiche Bauart wie `[geruest_typ_anzeige]`) - weicht Sivas davon ab, ist das
|
||||
die einzige Stelle zum Nachziehen. Ein Winkel ohne Eintrag dort wird
|
||||
unveraendert uebernommen.
|
||||
|
||||
**Neu im Mapping-Mechanismus:** `4428`/`4430` brauchen ein ZWEITES Attribut
|
||||
(die Seite haengt am Winkel). Dafuer gibt es in `sivas_mapping.py` den
|
||||
Dekorator `@braucht_attribs` - ein so markierter Transform wird als
|
||||
`fn(wert, attribs)` statt `fn(wert)` aufgerufen und sieht damit die uebrigen
|
||||
Attribute des Blocks. Ohne diese Klammer muessten bedingte Merkmale wieder
|
||||
als Python-Code aus der Config herauswandern.
|
||||
|
||||
## ILS 2.0 Zusatzmodul (SivasNr 6215, Dispogruppe 20)
|
||||
|
||||
BTMT-Beladestationen UND Abwurfstationen (Klammerbuegel-Entladung) in EINER
|
||||
|
||||
Reference in New Issue
Block a user