# 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