Beispieldateien der Übersicht für alle Einfügepunkte und alle Koordinatensysteme in Doku dazu

This commit is contained in:
2026-05-15 12:01:20 +02:00
parent c4901aeff3
commit 5c92c98f7e
5 changed files with 450951 additions and 1 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+235 -1
View File
@@ -1,3 +1,49 @@
- [set\_einfuegepunkt](#set_einfuegepunkt)
- [Aufruf](#aufruf)
- [Datenquellen](#datenquellen)
- [Ablauf](#ablauf)
- [Schalter](#schalter)
- [--boegen](#--boegen)
- [--weichen45](#--weichen45)
- [--weichen90](#--weichen90)
- [--weichenkoerper](#--weichenkoerper)
- [--weichen-parallel](#--weichen-parallel)
- [--delta](#--delta)
- [--dreifachweiche](#--dreifachweiche)
- [--sternweiche](#--sternweiche)
- [--number SIVASNR](#--number-sivasnr)
- [--show-omniflo](#--show-omniflo)
- [Abdeckung](#abdeckung)
- [Uebersicht aller Schalter](#uebersicht-aller-schalter)
- [Umgebungsvariablen](#umgebungsvariablen)
- [set\_koords](#set_koords)
- [Aufruf](#aufruf-1)
- [Datenquellen](#datenquellen-1)
- [Ablauf](#ablauf-1)
- [Schalter](#schalter-1)
- [--k1set](#--k1set)
- [--k2set](#--k2set)
- [--k3set](#--k3set)
- [--k4set](#--k4set)
- [--set-all](#--set-all)
- [--force](#--force)
- [--show-omniflo](#--show-omniflo-1)
- [--test](#--test)
- [--number SIVASNR](#--number-sivasnr-1)
- [Uebersicht K-Zuordnung](#uebersicht-k-zuordnung)
- [Umgebungsvariablen](#umgebungsvariablen-1)
- [attradd](#attradd)
- [Aufruf](#aufruf-2)
- [Datenquellen](#datenquellen-2)
- [Ablauf](#ablauf-2)
- [Konfiguration (attradd.cfg)](#konfiguration-attraddcfg)
- [Schalter](#schalter-2)
- [--number SIVASNR / -n SIVASNR](#--number-sivasnr---n-sivasnr)
- [--dry-run / -d](#--dry-run---d)
- [Umgebungsvariablen](#umgebungsvariablen-2)
# set_einfuegepunkt
Setzt den Einfuegepunkt (`$INSBASE`) von Omniflo DXF-Dateien anhand geometrischer Kriterien.
@@ -35,6 +81,9 @@ Alle Eintraege aus `omniflo_boegen.json` (27 Items, KurvenWinkel 22.5/45/67.5/90
**Kriterium:** Schnittpunkt der Tangenten am Anfangs- und Endpunkt der Bogenkurve. Bei 180-Grad-Boegen wird der Mittelpunkt zwischen Start und Ende verwendet.
Hier die Bögen:
![Boegen](images/einfuegepunkte-boegen.png).
### --weichen45
Einzel-, Doppel- und Dreiwegeweichen mit KurvenWinkel 45 (32 Items).
@@ -86,7 +135,10 @@ Optionaler Filter: nur die angegebene 9-stellige Sivasnr verarbeiten. Kombinierb
Erzeugt eine Uebersichts-DXF (`results/omniflo_uebersicht.dxf`) mit allen Omniflo-Elementen. Die Elemente werden in Reihen nach Typ gruppiert angezeigt. Jedes Element erhaelt:
- Den Dateinamen als Beschriftung oberhalb
- Ein rotes Kreuz am Einfuegepunkt
- Eine blaue Linie vom Einfuegepunkt zum tiefsten Punkt des Elements
Hier die Weichen
![Weichen](images/einfuegepunkte-weichen.png).
Hier die erzeugte [dxf Datei der Einfügepunkte als Beispiel](dxf/omniflo_uebersicht.dxf) des letzte Laufs
## Abdeckung
@@ -114,3 +166,185 @@ Werden durch `bin/setenv.bat` gesetzt:
|---|---|
| `DXFM_DATA` | Pfad zu `data/` (JSON + DXF Quelldateien) |
| `DXFM_RESULTS` | Pfad zu `results/` (Ausgabe) |
---
# set_koords
Setzt Koordinatensystem-Bloecke (K1, K2, K3, K4) in Omniflo DXF-Dateien. Jeder Block enthaelt drei Linien vom Ursprung: rot (X-Achse, Laenge 1), gruen (Y-Achse, Laenge 2), blau (Z-Achse, Laenge 3).
## Aufruf
```
python lib/set_koords.py [--schalter] [--number SIVASNR] [--force]
```
## Datenquellen
| Pfad | Inhalt |
|---|---|
| `data/json/omniflo_boegen.json` | Liste aller Boegen mit Sivasnr, ProfilTyp etc. |
| `data/json/omniflo_weichen.json` | Liste aller Weichen mit Sivasnr, ProfilTyp etc. |
| `data/omniflo/*.dxf` / `results/*.dxf` | DXF-Quelldateien (bevorzugt aus results/, Fallback data/omniflo/) |
## Ablauf
1. JSON-Daten und SWITCH_FILTERS (aus utils.py) laden
2. Fuer jede gefilterte Sivasnr die DXF-Datei laden
3. Kx-Position geometrisch berechnen (abhaengig von Typ und Schalter)
4. Block-Referenz mit korrekter Rotation einfuegen und DXF nach `results/` speichern
## Schalter
### --k1set
K1 an alle Boegen und Weichen setzen.
- **Boegen:** Beginn der obersten horizontalen Linie. x rechts, y oben, z aus Zeichenebene (rz=0).
- **Weichen:** Beginn der untersten vertikalen Linie. x oben, y links, z aus Zeichenebene (rz=90).
### --k2set
K2 an alle Boegen und Weichen setzen (linker Bogenzweig). Nutzt dieselben SWITCH_FILTERS wie set_einfuegepkt.py.
- **Boegen:** Position am anderen Ende der Kette (Gerade-Bogen-Gerade). x tangential zur Linie, zur Bogenmitte zeigend. 180-Grad-Sonderfall: rz=0.
- **Weichen (weichen45, weichen90, weichen_parallel):** Folgt dem Bogenzweig bis zum Ende. x tangential, bei Doppelweichen: linker Zweig.
- **Weichenkoerper:** Ende der linken langen Diagonale.
- **Dreifach-/Delta-/Sternweiche:** Linkes Ende der laengsten horizontalen Linie.
### --k3set
K3 an Weichen mit 2+ Boegen setzen (rechter Zweig). Gleiche Logik wie K2, aber rechter Ast (groesstes x). Nur bei: Doppelweichen, Dreiwegeweichen, Dreifachweiche, Delta, Stern, Weichenkoerper Doppel/Dreiwege.
### --k4set
K4 an Weichen setzen (oberes Ende der K1-Linie). Rotation wie K1 (rz=90). Kein K4 bei: Boegen, Doppelweiche, Dreifachweiche, Deltaweiche.
### --set-all
Alle Koordinatensysteme (K1-K4) in einem Durchgang setzen.
### --force
Bestehende Kx ueberschreiben (sonst skip wenn vorhanden). Duplikate werden immer bereinigt (letztes bleibt).
### --show-omniflo
Erzeugt eine Uebersichts-DXF (`results/koords_uebersicht.dxf`) mit allen Omniflo-Elementen und farbigen Kreuzen an den K-Positionen:
| Koordinatensystem | Farbe |
|---|---|
| K1 | rot |
| K2 | orange |
| K3 | gelb |
| K4 | gruen |
So sehen in der Übersicht die Markierungen von K1 bis K4 aus:![Markierungen über K1, .. K4](images/omniflo-setkoords1.png)
Hier eine Übersicht wie die gesamte Datei aussieht
![Übersicht](images/omniflo-setkoords2.png)
Hier die erzeugte [dxf Datei mit den Koordinatensystemen](dxf/koords_uebersicht.dxf) als Beispiel des letzte Laufs
### --test
Erzeugt Testdatei (`results/ks_test.dxf`) mit 4 Koordinatensystemen und verifiziert das Ruecklesen.
### --number SIVASNR
Nur die angegebene 9-stellige Sivasnr verarbeiten. Kombinierbar mit jedem Schalter.
## Uebersicht K-Zuordnung
| K | Boegen | Weichen | Weichenkoerper | Dreifach/Delta/Stern |
|---|---|---|---|---|
| K1 | Oberste H-Linie (rz=0) | Unterste V-Linie (rz=90) | Unterste V-Linie (rz=90) | Unterste V-Linie (rz=90) |
| K2 | Anderes Kettenende | Linker Bogenzweig | Linke Diagonale | Linkes H-Linienende |
| K3 | - | Rechter Bogenzweig (2+ Boegen) | Rechte Diagonale (2+ Diag.) | Rechtes H-Linienende |
| K4 | - | Oberes K1-Linienende | Oberes K1-Linienende | Sternweiche: ja |
## Umgebungsvariablen
| Variable | Verwendung |
|---|---|
| `DXFM_DATA` | Pfad zu `data/` (JSON + DXF Quelldateien) |
| `DXFM_RESULTS` | Pfad zu `results/` (Ausgabe) |
---
# attradd
Fuegt Attribute (ATTDEF) zu allen Omniflo DXF-Dateien hinzu. Die Attribut-Tags und deren Werte werden ueber eine Konfigurationsdatei gesteuert.
## Aufruf
```
python lib/attradd.py [--number SIVASNR] [--dry-run]
```
## Datenquellen
| Pfad | Inhalt |
|---|---|
| `cfg/attradd.cfg` | Attribut-Konfiguration (Tags und Quellfelder je Elementtyp) |
| `data/json/omniflo_boegen.json` | Liste aller Boegen mit Metadaten |
| `data/json/omniflo_weichen.json` | Liste aller Weichen mit Metadaten |
| `data/omniflo/*.dxf` | DXF-Quelldateien |
## Ablauf
1. Konfiguration aus `cfg/attradd.cfg` lesen
2. JSON-Daten laden und Lookup-Tabelle (Sivasnr -> Typ + Eintrag) erstellen
3. Fuer jede Sivasnr die DXF-Datei oeffnen, bestehende ATTDEFs entfernen
4. Neue ATTDEFs gemaess Config einfuegen (Layer `ATTRIB`, unterhalb der Geometrie)
5. Ergebnis nach `results/omniflo/` speichern
## Konfiguration (attradd.cfg)
Die Config-Datei ist im INI-Format mit Abschnitten je Elementtyp:
```ini
[bogen]
BESCHR = ProfilTyp
ARTINR = Sivasnr
TEILEART = "Omniflo Kurve"
LAYER = "A-OF-Bogen"
RADIUS = Radius
WINKEL = KurvenWinkel
SIVASNR_TEF = SivasnrTEF
[weiche]
BESCHR = ProfilTyp
ARTINR = Sivasnr
TEILEART = "Omniflo Weiche"
LAYER = "A-OF-Weiche"
WEICHENTYP = WeichenTyp
WINKEL = KurvenWinkel
RADIUS = Breite
SIVASNR_TEF = SivasnrTEF
```
Quellwerte koennen sein:
- **JSON-Feldname** (z.B. `ProfilTyp`) - Wert wird aus dem JSON-Eintrag gelesen
- **Fester Text** in Anfuehrungszeichen (z.B. `"Omniflo Kurve"`)
- **Platzhalter** `{sivasnr}` - wird durch die Sivasnr ersetzt
## Schalter
### --number SIVASNR / -n SIVASNR
Nur die angegebene Sivasnr verarbeiten.
### --dry-run / -d
Nur anzeigen welche Attribute gesetzt wuerden, ohne DXF-Dateien zu schreiben.
## Umgebungsvariablen
| Variable | Verwendung |
|---|---|
| `DXFM_DATA` | Pfad zu `data/` (JSON + DXF Quelldateien) |
| `DXFM_CFG` | Pfad zu `cfg/` (attradd.cfg) |
| `DXFM_RESULTS` | Pfad zu `results/` (Ausgabe nach `results/omniflo/`) |
Alle drei haben Fallback auf relative Pfade vom Projektverzeichnis.