12 KiB
set_einfuegepunkt
Setzt den Einfuegepunkt ($INSBASE) von Omniflo DXF-Dateien anhand geometrischer Kriterien.
Aufruf
bin\set_einfuegepunkt.bat [--schalter] [--number SIVASNR]
Das Batch-Skript ruft setenv.bat auf und startet lib/set_einfuegepkt.py mit den uebergebenen Argumenten.
Datenquellen
| Pfad | Inhalt |
|---|---|
data/json/omniflo_boegen.json |
Liste aller Boegen mit Sivasnr, ProfilTyp, Radius, KurvenWinkel etc. |
data/json/omniflo_weichen.json |
Liste aller Weichen mit Sivasnr, ProfilTyp, WeichenTyp, KurvenWinkel etc. |
data/omniflo/*.dxf |
Die DXF-Quelldateien (je Sivasnr eine Datei) |
Die JSON-Dateien liefern die IDs (Sivasnr) und Metadaten zur Filterung. Die DXF-Dateien enthalten die Geometrie (Linien, Boegen), aus der der Einfuegepunkt berechnet wird.
Ablauf
- JSON-Datei einlesen und nach Schalter-Kriterien filtern
- Fuer jede gefilterte Sivasnr die DXF-Datei aus
data/omniflo/laden - Einfuegepunkt gemaess Typ-Kriterium geometrisch berechnen
$INSBASEim DXF-Header setzen und Datei nachresults/speichern
Schalter
--boegen
Alle Eintraege aus omniflo_boegen.json (27 Items, KurvenWinkel 22.5/45/67.5/90/180).
Kriterium: Schnittpunkt der Tangenten am Anfangs- und Endpunkt der Bogenkurve. Bei 180-Grad-Boegen wird der Mittelpunkt zwischen Start und Ende verwendet.
--weichen45
Einzel-, Doppel- und Dreiwegeweichen mit KurvenWinkel 45 (32 Items).
Kriterium: Schnittpunkt der laengsten vertikalen Linie mit der Tangente am oberen Bogenpunkt. Bei mehreren Boegen wird der mit dem hoechsten Y-Wert gewaehlt.
--weichen90
Einzel-, Doppel- und Dreiwegeweichen mit KurvenWinkel 90 (24 Items).
Kriterium: Wie --weichen45.
--weichenkoerper
Alle Weichen mit KurvenWinkel 22.5 (8 Items: Einzel-/Doppel-/Dreiwegeweiche).
Kriterium: Schnittpunkt der laengsten Diagonale mit der laengsten vertikalen Linie (Konvergenzpunkt aller Linien).
--weichen-parallel
Einzel-, Doppel- und Dreiwegeweichen mit KurvenWinkel 0, ohne Sternweiche (8 Items).
Kriterium: Wie --weichenkoerper.
--delta
Deltaweichen (1 Item).
Kriterium: Mittelpunkt der laengsten horizontalen Linie.
--dreifachweiche
Dreifachweichen (6 Items).
Kriterium: Mittelpunkt der laengsten horizontalen Linie.
--sternweiche
Sternweiche (1 Item).
Kriterium: Zentrum, berechnet als Mittelpunkt der laengsten horizontalen Linie (entspricht dem Schnittpunkt der horizontalen und vertikalen Mittelachse).
--number SIVASNR
Optionaler Filter: nur die angegebene 9-stellige Sivasnr verarbeiten. Kombinierbar mit jedem Typ-Schalter.
--show-omniflo
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
Hier die Weichen
.
Hier die erzeugte dxf Datei der Einfügepunkte als Beispiel des letzte Laufs
Abdeckung
Alle 107 Items (27 Boegen + 80 Weichen) sind exklusiv genau einem Schalter zugeordnet. Keine Ueberlappungen, keine Luecken.
Uebersicht aller Schalter
| Schalter | Items | WeichenTyp | KurvenWinkel | Einfuegepunkt-Kriterium |
|---|---|---|---|---|
--boegen |
27 | - | 22.5, 45, 67.5, 90, 180 | Tangentenschnittpunkt am Bogen (180: Mittelpunkt) |
--weichen45 |
32 | Einzel-, Doppel-, Dreiwegeweiche | 45 | Tangente oberer Bogenpunkt x laengste Vertikale |
--weichen90 |
24 | Einzel-, Doppel-, Dreiwegeweiche | 90 | Tangente oberer Bogenpunkt x laengste Vertikale |
--weichenkoerper |
8 | Einzel-, Doppel-, Dreiwegeweiche | 22.5 | Laengste Diagonale x laengste Vertikale |
--weichen-parallel |
8 | Einzel-, Doppel-, Dreiwegeweiche | 0 | Laengste Diagonale x laengste Vertikale |
--dreifachweiche |
6 | Dreifachweiche | 90 | Mittelpunkt laengste Horizontale |
--delta |
1 | Deltaweiche | 90 | Mittelpunkt laengste Horizontale |
--sternweiche |
1 | Sternweiche | 0 | Zentrum (Mittelpunkt laengste Horizontale) |
| Gesamt | 107 |
Umgebungsvariablen
Werden durch bin/setenv.bat gesetzt:
| Variable | Verwendung |
|---|---|
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
- JSON-Daten und SWITCH_FILTERS (aus utils.py) laden
- Fuer jede gefilterte Sivasnr die DXF-Datei laden
- Kx-Position geometrisch berechnen (abhaengig von Typ und Schalter)
- 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:
Hier eine Übersicht wie die gesamte Datei aussieht

Hier die erzeugte dxf Datei mit den Koordinatensystemen 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
- Konfiguration aus
cfg/attradd.cfglesen - JSON-Daten laden und Lookup-Tabelle (Sivasnr -> Typ + Eintrag) erstellen
- Fuer jede Sivasnr die DXF-Datei oeffnen, bestehende ATTDEFs entfernen
- Neue ATTDEFs gemaess Config einfuegen (Layer
ATTRIB, unterhalb der Geometrie) - Ergebnis nach
results/omniflo/speichern
Konfiguration (attradd.cfg)
Die Config-Datei ist im INI-Format mit Abschnitten je Elementtyp:
[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.
