# Sivas-Merkmal-Zuordnung (export_sivas.py) Diese Datei dokumentiert, welches Block-Attribut in `export_raw.json` welche Sivas-Merkmalnummer im `details`-JSON von `export_sivas.py` befuellt (Spalte `Nr;TeileArt;SivasNummer;Bezeichnung;Dispogruppe;Anzahl;Laenge[mm];IDs;details`). Bezeichnungen stammen aus `cfg/Merkmalsstamm_in_Sivas.xlsx`. Einzige Quelle 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). ## ILS 2.0 Kreisel (SivasNr 6200, Dispogruppe 20) Gruppierung: gleiche Kreiselart+Abstand+Separatoren/Scanner/Rampen+Geruest werden zu EINER Zeile zusammengefasst (`kreisel_signature`). Die Anzahl-Spalte traegt die reale Stueckzahl der Gruppe. | Merkmalnr | Bezeichnung (Merkmalstamm) | Block-Attribut | Berechnung | |---|---|---|---| | 2952 | Kreiselhoehe in Meter | `MONTAGEHOEHE_m` | direkt | | 3510 | Kreisel oder Kreisel mit PINBAND oder Verbindungskreisel | `KREISELART` | `"PIN"` -> `"Kreisel mit PINBAND"`, sonst `"Kreisel"` | | 3511 | Kreisel - zu fertigende Menge | - | fest `"1"` (reale Stueckzahl steht in der Anzahl-Spalte der Zeile) | | 3512 | Kreisel - Abstand (Kreiselachse A - Kreiselachse B) in Meter | `ABSTAND` | `round(ABSTAND/1000, 2)` | | 3515 | Kreisel - Anzahl der Separatoren | `ANZAHL_SEPARATOR` (Fallback `N_SEPARATOREN`) | direkt | | 3517 | Kreisel - Anzahl der Scanner | `ANZAHL_SCANNER` (Fallback `N_SCANNER`) | direkt | | 3519 | Kreisel - Anzahl der Rampen | `ANZAHL_RAMPEN` (Fallback `N_RAMPEN`) | direkt | | 3992 | Geruest fuer Einzelmodul | `GERUEST_EINZELMODUL` | `"1"` -> `"Ja"`, sonst `"Nein"` | | 3993 | Geruestoption fuer Einzelmodul | `GERUEST_TYP` | Anzeige-Uebersetzung, siehe `GERUEST_TYP_ANZEIGE` (`"Schoenenberger Geruest"` -> `"Schoenenberger-Geruest"` mit Umlauten) | ## ILS 2.0 Strecke - Streckengruppe VF_N (SivasNr 6220, Dispogruppe 20) Je VF_N-Block IMMER eine eigene Zeile (keine Gruppierung), Anzahl-Spalte immer 1. Sivas kennt je Streckengruppe nur EIN Gefaelle-Segment-Paar (001/002) und EIN Vario-Segment (001). | Merkmalnr | Bezeichnung (Merkmalstamm) | Block-Attribut | Berechnung | |---|---|---|---| | 2950 | Anlagenhoehe in Meter | `MONTAGEHOEHE_m` | direkt | | 4300 | Streckengruppe | - | fest `"mehrere Objekte"` | | 4311 | Strecken- zu fertigende Menge | - | fest `"1"` | | 4312 | Streckengruppe - Gefaellestrecke (Segment 001 vorhanden) | `L_GF_m` (1. Wert vorhanden?) | `"Ja"`/`"Nein"` | | 4318 | Streckengruppe - Gefaellestrecke 001-Laenge in Meter | `L_GF_m` (1. Wert) | nur wenn Segment 1 existiert | | 4391 | Streckengruppe - Gefaellestrecke 001 -Winkel | `GF_WINKEL` (1. Wert) | `int(...)`, nur wenn Segment 1 existiert | | 4314 | Streckengruppe - Gefaellestrecke 002 (Segment vorhanden) | `L_GF_m` (2. Wert vorhanden?) | `"Ja"`/`"Nein"` | | 4319 | Streckengruppe - Gefaellestrecke 002-Laenge in Meter | `L_GF_m` (2. Wert) | nur wenn Segment 2 existiert | | 4392 | Streckengruppe - Gefaellestrecke 002- Winkel | `GF_WINKEL` (2. Wert) | `int(...)`, nur wenn Segment 2 existiert | | 4329-4334 | ...Kurven Gefaellestrecke links/rechts 90/60/30 Grad | `GF_Bogen_L_90/60/30`, `GF_Bogen_R_90/60/30` | direkt | | 4337 | Streckengruppe - Anzahl der Separatoren - Gefaellestrecke | - | **Platzhalter, fest `"0"`** (Aufteilung Gefaelle-/Vario-Anteil noch nicht umgesetzt, siehe unten) | | 4338 | Streckengruppe - Bearbeitung Gefaellestreckenteilstueck fuer Separator (829516050) | - | fest `SEPARATOR_BEARBEITUNG_ANZEIGE` = `"ohne HARTCOAT HRC 50 +/- 5"` | | 4339 | Streckengruppe - Anzahl der Scanner (Gefaelle-Anteil) | - | **Platzhalter, fest `"0"`** | | 4340 | Streckengruppe - Variofoerderer (vorhanden) | `L_VF_m` (vorhanden?) | `"Ja"`/`"Nein"` | | 4341 | ...Anzahl der Motoren fuer Vario-Foerderer (links) | `MOTORSEITE` | Anzahl Eintraege == "links" | | 4342 | ...Anzahl der Motoren fuer Vario-Foerderer (rechts) | `MOTORSEITE` | Anzahl Eintraege == "rechts" | | 4353 | Streckengruppe - Variofoerderer 001-Laenge in Meter | `L_VF_m` (1. Wert) | nur wenn Vario-Segment existiert | | 4354 | Streckengruppe - Variofoerderer 001-Richtung | `ANTRIEBFAHRTRICHTUNG` (1. Wert) | kleingeschrieben (`"Auf"` -> `"auf"`) | | 4386 | Streckengruppe - Variofoerderer 001- Winkel | `VF_WINKEL` (1. Wert) | `int(...)` | | 4373-4378 | ...Kurven Variofoerderer Aussen-/Innenbogen 90/60/30 Grad | `VF_Bogen_A_90/60/30`, `VF_Bogen_I_90/60/30` | direkt | | 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** | | 3992 | Geruest fuer Einzelmodul | `GERUEST_EINZELMODUL` | wie Kreisel | | 3993 | Geruestoption fuer Einzelmodul | `GERUEST_TYP` | wie Kreisel | **Offener Punkt:** 4337/4339 (Gefaelle-Anteil) stehen fest auf `"0"`, 4381/4383 (Vario-Anteil) tragen den KOMPLETTEN `ANZAHL_SEPARATOR`/`ANZAHL_SCANNER`-Wert des Blocks. Die korrekte Aufteilung auf beide Streckenabschnitte folgt erst, wenn die Separator-/Scanner-Zuordnung im Zeichnungsmodell selbst ueberarbeitet ist (siehe `build_variofoerderer_details` in `export_sivas.py`). ## ILS 2.0 Gefaellestrecke - eigenstaendige GF_N-Gruppe (SivasNr 6220, Dispogruppe 20) Gruppierung: gleiche Masse (Hoehe/Laenge/Winkel/Separatoren/Scanner/Typ/ Geruest) werden zu EINER Zeile zusammengefasst (`gefaellestrecke_signature`). ANDERS ALS BEI KREISEL bleibt die Anzahl-Spalte fest auf `1` - die reale Stueckzahl der Gruppe steht im Merkmal 4311. | Merkmalnr | Bezeichnung (Merkmalstamm) | Block-Attribut | Berechnung | |---|---|---|---| | 2950 | Anlagenhoehe in Meter | `MONTAGEHOEHE_m` | direkt | | 4300 | Streckengruppe | `TYP` | `"Streckengruppe"` -> `"mehrere Objekte"`, sonst (`"Gefaellestrecke"`) -> `"ein Objekt"` | | 4384 | Gefaellestrecke oder Vario-Foerderer | - | fest `"Gefaellestrecke"` | | 4311 | Strecken- zu fertigende Menge | - | Anzahl der in dieser Zeile gruppierten, baugleichen GF_N-Bloecke (Gegenstueck zur Anzahl-Spalte, die hier fest 1 ist) | | 4318 | Streckengruppe - Gefaellestrecke 001-Laenge in Meter | `L_GF_m` | direkt | | 4391 | Streckengruppe - Gefaellestrecke 001 -Winkel | `GF_WINKEL` | direkt | | 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 | | 3992 | Geruest fuer Einzelmodul | `GERUEST_EINZELMODUL` | wie Kreisel | | 3993 | Geruestoption fuer Einzelmodul | `GERUEST_TYP` | wie Kreisel | ## ILS 2.0 Zusatzmodul (SivasNr 6215, Dispogruppe 20) BTMT-Beladestationen UND Abwurfstationen (Klammerbuegel-Entladung) in EINER Zeile zusammengefasst. Anzahl-Spalte fest `1`, Bezeichnung leer, IDs beider Blockarten kombiniert. | Merkmalnr | Bezeichnung (Merkmalstamm) | Quelle | Berechnung | |---|---|---|---| | 3501 | BT - Beladung (mit Vereinzeler, ohne Separator) | Vorhandensein von BTMT-Beladung-Bloecken (`pattern_btmt_beladung`) | `"Ja"`, wenn mind. 1 Block, sonst `"Nein"` | | 3503 | Anzahl der BT - Beladung (mit Vereinzeler, ohne Separator) | Anzahl BTMT-Beladung-Bloecke | direkt gezaehlt | | 3502 | Abwurf fuer Klammerbuegel Sitzbezuege / Kleiderbuegel | Vorhandensein von Abwurf-Bloecken (`pattern_btmt_entladung`) | `"Ja"`, wenn mind. 1 Block, sonst `"Nein"` | | 3504 | Anzahl der Abwuerfe | Anzahl Abwurf-Bloecke | direkt gezaehlt | ## ILS 2.0 Automation und Pneumatik - Gesamtanlage (SivasNr 6269, Dispogruppe 20) Eine Summenzeile pro Zeichnung, nur wenn mindestens ein ILS-Element (Kreisel/ Eckrad/Variofoerderer/Gefaellestrecke/BTMT) vorhanden ist. | Merkmalnr | Bezeichnung (Merkmalstamm) | Quelle (counters/process_blocks) | Berechnung | |---|---|---|---| | 4000 | Automation | - | fest `"Ja"` (Zeile existiert nur bei `has_ils`) | | 4400 | Anzahl der Kreisel | `anzahl_kreisel` | Anzahl aller Kreisel-Bloecke (vor Gruppierung) | | 4401 | Anzahl der Kreisel mit PINBAND | `anzahl_kreisel_pinband` | | | 4402 | Anzahl der Verbindungskreisel | `anzahl_verbindungskreisel` | aktuell nie befuellt (kein Verbindungskreisel-Typ erkannt) | | 4403 | Anzahl der Weichen | `anzahl_weichen_ils` | aktuell nie befuellt (kein ILS-Weichen-Typ erkannt) | | 4404 | Anzahl der Eckraeder | `anzahl_eckraeder` | | | 4407 | Anzahl der Streckengruppen | `len(vario_list)` | Anzahl VF_N-Compound-Bloecke (TYP "Streckengruppe") - NICHT `anzahl_variofoerderer` (der zaehlt auch lose Strecke-Module mit) | | 4408 | Anzahl der Motoren in Vario-Foerderer | `anzahl_motoren_vario` | Summe `ANZAHL_VF` ueber alle VF_N-Bloecke | | 4409 | Anzahl der ETFs | `anzahl_etf` | aktuell nie befuellt | | 4410 | Anzahl der Separatoren in der Anlage | `anzahl_separatoren` | Summe ueber Kreisel+VF_N+GF_N | | 4411 | Anzahl der Scanner in der Anlage | `anzahl_scanner` | Summe ueber Kreisel+VF_N+GF_N | | 4413 | Anzahl der Separatoren - Kreisel ohne PINBAND | `sep_kreisel_ohne_pin` | | | 4414 | Anzahl der Separatoren - Kreisel mit PINBAND | `sep_kreisel_pin` | | | 4417 | Laengen aller ETFS und Zusatzstuecke (Gefaellestrecken) | `laengen_etf` | aktuell immer `0.0`, NICHT auf 2 Nachkommastellen gerundet | | 4418 | Laengen aller Gefaellestrecken | `laengen_gefaellestrecken` | auf 2 Nachkommastellen gerundet (`.2f`) | | 4419 | Laengen aller Kreisel | `laengen_kreisel` | auf 2 Nachkommastellen gerundet (`.2f`) | | 4420 | Laengen aller Vario-Foerderer | `laengen_variofoerderer` | NICHT gerundet (roher `str()`-Wert) | | 4421 | Zusatzmodul - Anzahl der BT-Beladung | `anzahl_btbeladung` | | | 4422 | Zusatzmodul - Anzahl der Abwurfstation | `anzahl_abwurfstationen` | | | 4425 | Anzahl der einzelnen Gefaellestrecken | `anzahl_gefaellestrecken` | Anzahl aller GF_N-Bloecke (vor Gruppierung) | | 4426 | Anzahl der einzelnen Vario-Foerderer | - | fest `"0"` (Konzept "einzelner Variofoerderer" getrennt von "Streckengruppe" gibt es nicht mehr) | | 4100 | Pneumatik | - | fest `"Ja"` | ## Nicht angefasst (ausserhalb dieser Umstellung) - **ILS 2.0 Eckrad** (`build_eckrad_details`): bleibt beim alten, beschreibenden Key-Format (`"Geruest fuer Einzelmodul"`/`"Geruestoption fuer Einzelmodul"`) - war nicht Teil der angefragten 5 Teilearten. - **Geruest-Baugruppen** (`build_geruest_details`, `GR_*`-Bloecke): eigenes Format ueber `ARTINR`/`BEZEICHNUNG`/`TEILEART`/`LAENGE` in den festen CSV-Spalten, nur `FARBE` bleibt als details-Key - unveraendert. - **Omniflo Bogen/Weiche/Gerade**: `details` bleibt leer (`{}`), keine Merkmalnummern-Zuordnung noetig. ## Bekannte offene Punkte 1. **4337/4339 vs. 4381/4383** (Streckengruppe VF_N): Aufteilung der Separatoren/Scanner auf Gefaelle- und Vario-Anteil ist ein Platzhalter (siehe oben) - folgt nach der Neuzuordnung von Separator/Scanner zum jeweiligen Streckenabschnitt im Zeichnungsmodell. 2. Zeichnungsseitige Datenpflege (kein Code-Thema): `GERUEST_EINZELMODUL` muss am jeweiligen Block korrekt gesetzt sein (Dialog-Haekchen beim Einfuegen) - der Export uebernimmt das Attribut unveraendert 1:1.