From b9a33def8bb2ab28813e1ab6d6349b52cb0bd530 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 12 Jun 2026 17:57:07 +0200 Subject: [PATCH] Doku der Tools aktualisiert --- doc/tools.md | 56 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/doc/tools.md b/doc/tools.md index 5b4aa66..f4d0b78 100644 --- a/doc/tools.md +++ b/doc/tools.md @@ -35,11 +35,14 @@ Diese Werkzeuge ermöglichen die massenhafte Aufbereitung von einzelnen dxf Date - [--number SIVASNR](#--number-sivasnr-1) - [Uebersicht K-Zuordnung](#uebersicht-k-zuordnung) - [Umgebungsvariablen](#umgebungsvariablen-1) -- [set_attributs](#set_attributs) +- [set\_attributs](#set_attributs) - [Aufruf](#aufruf-2) - [Datenquellen](#datenquellen-2) - [Ablauf](#ablauf-2) - [Konfiguration (attradd.cfg)](#konfiguration-attraddcfg) + - [Attribute Omniflo Kurve (Bogen)](#attribute-omniflo-kurve-bogen) + - [Attribute Omniflo Weiche](#attribute-omniflo-weiche) + - [CSV-Export-Felder (Merkmale)](#csv-export-felder-merkmale) - [Schalter](#schalter-2) - [--number SIVASNR / -n SIVASNR](#--number-sivasnr---n-sivasnr) - [--dry-run / -d](#--dry-run---d) @@ -276,7 +279,12 @@ Nur die angegebene 9-stellige Sivasnr verarbeiten. Kombinierbar mit jedem Schalt # set_attributs -Fuegt Attribute (ATTDEF) zu allen Omniflo DXF-Dateien hinzu. Die Attribut-Tags und deren Werte werden ueber eine Konfigurationsdatei gesteuert. +Fuegt Attribute (ATTDEF) zu allen Omniflo DXF-Dateien hinzu und verpackt die +gesamte Geometrie in eine benannte Blockdefinition. Die Attribut-Tags und deren +Werte werden ueber eine Konfigurationsdatei gesteuert. + +**Voraussetzung:** Die Quelldateien in `data/omniflo/` sollten zuvor durch +`set_einfuegepkt.py` verarbeitet worden sein, damit `$INSBASE` korrekt gesetzt ist. ## Aufruf @@ -291,7 +299,7 @@ python lib/set_attributs.py [--number SIVASNR] [--dry-run] | `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 | +| `data/omniflo/*.dxf` | DXF-Quelldateien (Basis: Ausgabe von `set_einfuegepkt.py`) | ## Ablauf @@ -299,7 +307,35 @@ python lib/set_attributs.py [--number SIVASNR] [--dry-run] 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 +5. Alle Entities (Geometrie + ATTDEFs) in eine Blockdefinition verschieben: + - Blockname = Sivasnummer (identisch mit dem Dateinamen ohne `.dxf`) + - Basispunkt der Blockdefinition = `$INSBASE` aus dem DXF-Header +6. Im Modelspace einen INSERT auf den neuen Block einfuegen, mit ATTRIB-Entities + befuellt aus den ATTDEF-Standardwerten (ermoeglicht Attributanzeige per Klick in BricsCAD) +7. Ergebnis nach `results/omniflo/` speichern + +## Ausgabestruktur (DXF) + +``` +BLOCKS + BLOCK "" (Basispunkt = $INSBASE) + + ATTDEF BESCHR = "..." + ATTDEF ARTINR = "..." + ... + ENDBLK + +ENTITIES (Modelspace) + INSERT "" at (0, 0) + ATTRIB BESCHR = "..." + ATTRIB ARTINR = "..." + ... + SEQEND +``` + +Der INSERT im Modelspace traegt die konkreten Attributwerte und ist in BricsCAD +per Klick editierbar. Die Blockdefinition mit ATTDEFs dient als Vorlage fuer +den Block-Import via `import_element_as_block` (omniflo_utils.py). ## Konfiguration (attradd.cfg) @@ -319,8 +355,6 @@ Quellwerte koennen sein: | `RADIUS` | `Radius` | Kurvenradius in mm | | `WINKEL` | `KurvenWinkel` | Kurvenwinkel in Grad | | `SIVASNR_TEF` | `SivasnrTEF` | Sivas-Nr. des TEF-Antriebs (leer = kein Antrieb) | -| `HOEHE` | `"2000"` | Montagehoehe in mm (wird beim Export aus Z-Koordinate aktualisiert) | -| `DREHUNG` | `"0"` | Drehwinkel in Grad (wird beim Export aus CAD-Rotation aktualisiert) | | `LAYER` | *(aus [layer])* | Layer-Name gemaess Kategorisierung | ### Attribute Omniflo Weiche @@ -334,8 +368,6 @@ Quellwerte koennen sein: | `WINKEL` | `KurvenWinkel` | Kurvenwinkel in Grad | | `RICHTUNG` | `KurvenRichtung` | Richtungskennung (1=Links, 2=Rechts, 3=Beide, 7=Dreiweg) | | `SIVASNR_TEF` | `SivasnrTEF` | Sivas-Nr. des TEF-Antriebs (leer = kein Antrieb) | -| `HOEHE` | `"2000"` | Montagehoehe in mm (wird beim Export aus Z-Koordinate aktualisiert) | -| `DREHUNG` | `"0"` | Drehwinkel in Grad (wird beim Export aus CAD-Rotation aktualisiert) | | `LAYER` | *(aus [layer])* | Layer-Name gemaess Kategorisierung | ### CSV-Export-Felder (Merkmale) @@ -365,6 +397,14 @@ CSV-Format: `Elementnummer;TeileArt;TeileId;Bezeichnung;Anzahl;Merkmale` | `Antrieb Kurve` | `SivasnrTEF` != null | bool | | `SivasNummer` | JSON `Sivasnr` | string | + +Höhe und Drehung werden beim Export selbst aus den Blockinformationen entnommen und dann ins json geschrieben. + +| ATTDEF-Tag | Quelle | Beschreibung | +| --- | --- | --- | +| `HOEHE` | `"2000"` | Montagehoehe in mm (wird beim Export aus Z-Koordinate aktualisiert) | +| `DREHUNG` | `"0"` | Drehwinkel in Grad (wird beim Export aus CAD-Rotation aktualisiert) | + ## Schalter ### --number SIVASNR / -n SIVASNR