Files
drt-verbindungszaehler/README.md
T

146 lines
5.7 KiB
Markdown

# DRT-Verbindungszähler - DXF-Analyse-Tool
Ein Python-basiertes Werkzeug zur automatischen Erkennung und Markierung von Schnittpunkten zwischen Linien in DXF-Dateien.
## Überblick
Dieses Projekt analysiert DXF-Dateien und identifiziert Verbindungs- bzw. Schnittpunkte zwischen Linien auf verschiedenen Layern. Die gefundenen Schnittpunkte werden mit Kreisen markiert und in einer separaten DXF-Datei sowie einem Textbericht ausgegeben.
## Projektstruktur
```text
verbindungszaehler/
├── verbindungszaehler.bat # Hauptskript zum Starten der Analyse
├── config/
│ └── config.cfg # Standardkonfiguration
├── scripts/
│ └── setenv.bat # Umgebungsvariablen und Verzeichnisstruktur
├── src/
│ └── lib/
│ ├── analyze.py # Python-Analyseskript
│ └── dxf_analyzer.py # Kernlogik
├── input/ # Eingabeverzeichnis für DXF-Dateien
└── output/ # Ausgabeverzeichnis für Ergebnisse
```
## Voraussetzungen
- Windows-Betriebssystem
- Python 3.x installiert und im PATH verfügbar
- Python-Bibliothek für DXF-Verarbeitung `ezdxf`
- Modul `dxf_analyzer.py` mit der Klasse `IntersectionAnalyzer`
## Installation
1. Projekt in ein beliebiges Verzeichnis entpacken
2. Sicherstellen, dass Python installiert ist
3. Benötigte Python-Pakete installieren (z.B. `pip install ezdxf`)
4. DXF-Dateien im `input/`-Verzeichnis ablegen
## Verwendung
### Methode 1: Alle Dateien im Input-Verzeichnis analysieren
Doppelklick auf `verbindungszaehler.bat` oder per Kommandozeile:
```batch
verbindungszaehler.bat
```
Alle DXF-Dateien im `input/`-Verzeichnis werden automatisch mit den Einstellungen aus `config.cfg` analysiert.
### Methode 2: Einzelne Datei per Drag & Drop
Ziehen Sie eine DXF-Datei direkt auf die `verbindungszaehler.bat` und lassen Sie sie los. Die Datei wird sofort mit den Einstellungen aus `config/config.cfg` analysiert.
### Methode 3: Einzelne Datei per Kommandozeile
```batch
verbindungszaehler.bat "C:\Pfad\zur\datei.dxf"
```
## Konfiguration
### config.cfg
Die Datei `config.example.cfg` enthält alle Einstellungen für die Analyse. Für individuelle Parameter muss eine Kopie von `config.example.cfg` erstellt und in `config.cfg` umbenannt werden. Diese dient nun als Konfigurationsdatei des Projekts.
Passen Sie diese Werte in `config.cfg` nach Bedarf an:
```cfg
LAYERS=D-1,D-5
TOLERANCE=0.06
MARK_RADIUS=150
```
**Parameter-Erklärung:**
- **LAYERS**: Kommagetrennte Liste der zu analysierenden Layer (z.B. "D-1,D-5,D-3")
- **TOLERANCE**: Maximaler Abstand in DXF-Einheiten, bei dem zwei Punkte als identisch gelten (für ungenaue Zeichnungen)
- **MARK_RADIUS**: Radius der Kreise in DXF-Einheiten, die Schnittpunkte markieren
**Hinweis:** Nach Änderungen in `config.cfg` werden die neuen Werte bei der nächsten Ausführung automatisch verwendet.
## Ausgabe
Das Tool erzeugt für jede analysierte DXF-Datei zwei Dateien im `output/`-Verzeichnis:
1. **[Dateiname]_markiert_[Datum]_[Zeit].dxf**
DXF-Datei mit eingezeichneten Kreisen an allen gefundenen Schnittpunkten
2. **[Dateiname]_analyse_[Datum]_[Zeit].txt**
Textbericht mit Details zu den gefundenen Verbindungen (Koordinaten, Anzahl, etc.)
**Beispiel:**
```text
zeichnung_markiert_20241202_14-30-25.dxf
zeichnung_analyse_20241202_14-30-25.txt
```
## Funktionsweise
1. **setenv.bat** richtet die Verzeichnisstruktur ein und lädt die Konfigurationswerte aus `config.cfg` im `config/`-Ordner
2. **verbindungszaehler.bat** verarbeitet die angegebene Datei (oder alle Dateien im Input-Ordner) und ruft das Python-Skript auf
3. **analyze.py** lädt die DXF-Datei und übergibt sie zusammen mit den Konfigurationsparametern an den `IntersectionAnalyzer`
4. Der Analyzer findet Schnittpunkte zwischen Linien auf den angegebenen Layern innerhalb der definierten Toleranz
5. Gefundene Schnittpunkte werden mit Kreisen (Radius aus `MARK_RADIUS`) markiert
6. Ergebnisse werden als neue DXF-Datei und Textbericht gespeichert
## Workflow-Beispiel
1. DXF-Dateien in den `input/`-Ordner kopieren
2. `config.cfg` im `config/`-Ordner öffnen und gewünschte Layer-Namen, Toleranz und Markierungsradius eintragen
3. `verbindungszaehler.bat` per Doppelklick starten **oder** eine einzelne DXF-Datei auf die Batch-Datei ziehen
4. Ergebnisse im `output/`-Ordner überprüfen: **Bevor die Anzahl der Verbindungen weiter verwendet wird, sind die markierten Punkte im Ausgabelayout zwingend auf Fehler zu überprüfen!**
## Hinweise
- Stellen Sie sicher, dass die Layer-Namen in `config.cfg` exakt mit denen in der DXF-Datei übereinstimmen (Groß-/Kleinschreibung beachten)
- Bei sehr großen Dateien kann die Analyse einige Zeit in Anspruch nehmen
- Die Toleranz sollte an die Genauigkeit Ihrer Zeichnungen angepasst werden (typische Werte: 0.01 bis 0.1)
- Der Markierungsradius sollte groß genug sein, um in der Zeichnung sichtbar zu sein, aber klein genug, um Details nicht zu verdecken
- Ausgabedateien werden nicht überschrieben, da jede Datei einen eindeutigen Zeitstempel erhält
## Fehlerbehebung
##### "Datei nicht gefunden"
Überprüfen Sie den Pfad zur DXF-Datei oder legen Sie Dateien im `input/`-Verzeichnis ab.
##### "Keine Schnittpunkte gefunden"
- Prüfen Sie, ob die in `config.cfg` angegebenen Layer in der DXF-Datei existieren
- Erhöhen Sie den TOLERANCE-Wert in `config.cfg`, falls Linien nicht exakt verbunden sind
##### Python-Fehler
Stellen Sie sicher, dass alle erforderlichen Python-Bibliotheken installiert sind.
##### Drag & Drop funktioniert nicht
Stellen Sie sicher, dass Sie die Datei auf `verbindungszaehler.bat` (nicht auf `setenv.bat`) ziehen.
## Autor
Simon Hensch