Files
dxfmakros/doc/tools.md
T

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

  1. JSON-Datei einlesen und nach Schalter-Kriterien filtern
  2. Fuer jede gefilterte Sivasnr die DXF-Datei aus data/omniflo/ laden
  3. Einfuegepunkt gemaess Typ-Kriterium geometrisch berechnen
  4. $INSBASE im DXF-Header setzen und Datei nach results/ 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.

Hier die Bögen: Boegen.

--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 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

  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 Hier eine Übersicht wie die gesamte Datei aussieht Übersicht

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

  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:

[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.