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
verbindungszaehler/
├── verbindungszaehler.bat # Hauptskript zum Starten der Analyse
├── setenv.bat # Umgebungsvariablen und Verzeichnisstruktur
├── defaults.cfg # Standardkonfiguration
├── 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.pymit der KlasseIntersectionAnalyzer
Installation
- Projekt in ein beliebiges Verzeichnis entpacken
- Sicherstellen, dass Python installiert ist
- Benötigte Python-Pakete installieren (z.B.
pip install ezdxf) - DXF-Dateien im
input/-Verzeichnis ablegen
Verwendung
Methode 1: Alle Dateien im Input-Verzeichnis analysieren
Doppelklick auf verbindungszaehler.bat oder per Kommandozeile:
verbindungszaehler.bat
Alle DXF-Dateien im input/-Verzeichnis werden automatisch mit den Einstellungen aus defaults.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 defaults.cfg analysiert.
Methode 3: Einzelne Datei per Kommandozeile
verbindungszaehler.bat "C:\Pfad\zur\datei.dxf"
Konfiguration
defaults.cfg
Die Datei defaults.cfg enthält alle Einstellungen für die Analyse. Passen Sie diese Werte nach Bedarf an:
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 defaults.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:
-
[Dateiname]markiert[Datum]_[Zeit].dxf
DXF-Datei mit eingezeichneten Kreisen an allen gefundenen Schnittpunkten -
[Dateiname]analyse[Datum]_[Zeit].txt
Textbericht mit Details zu den gefundenen Verbindungen (Koordinaten, Anzahl, etc.)
Beispiel:
zeichnung_markiert_20241202_14-30.dxf
zeichnung_analyse_20241202_14-30.txt
Funktionsweise
- setenv.bat richtet die Verzeichnisstruktur ein und lädt die Konfigurationswerte aus
defaults.cfg - verbindungszaehler.bat verarbeitet die angegebene Datei (oder alle Dateien im Input-Ordner) und ruft das Python-Skript auf
- analyze.py lädt die DXF-Datei und übergibt sie zusammen mit den Konfigurationsparametern an den
IntersectionAnalyzer - Der Analyzer findet Schnittpunkte zwischen Linien auf den angegebenen Layern innerhalb der definierten Toleranz
- Gefundene Schnittpunkte werden mit Kreisen (Radius aus
MARK_RADIUS) markiert - Ergebnisse werden als neue DXF-Datei und Textbericht gespeichert
Workflow-Beispiel
- DXF-Dateien in den
input/-Ordner kopieren defaults.cfgöffnen und gewünschte Layer-Namen, Toleranz und Markierungsradius eintragenverbindungszaehler.batper Doppelklick starten oder eine einzelne DXF-Datei auf die Batch-Datei ziehen- 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
defaults.cfgexakt 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
defaults.cfgangegebenen Layer in der DXF-Datei existieren - Erhöhen Sie den TOLERANCE-Wert in
defaults.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