initialer commit

This commit is contained in:
2025-12-02 16:21:38 +01:00
parent 7fdf173cb2
commit 015bae5fbd
6 changed files with 663 additions and 5 deletions
+138 -5
View File
@@ -1,8 +1,141 @@
# drt-verbindungszaehler
# DRT-Verbindungszähler - DXF-Analyse-Tool
Für die Kalkulation eines DRT-Gerüsts ist neben der Anzahl und Länge von Trägern auch die Anzahl und Art der Verbindungen zwischen den Trägern relevant.
Die Verbindungen können aus dem Layout in Form von Schnittpunkten der Gerüstlinien gelesen werden.
Ein Python-basiertes Werkzeug zur automatischen Erkennung und Markierung von Schnittpunkten zwischen Linien in DXF-Dateien.
Dieses Tool zählt alle Schnittpunkte zwischen Linien auf vorgegebenen Layern. Dabei wird zwischen Eckverbindung, T-Verbindung und Kreuzverbindung unterschieden.
## Überblick
Ausgabe ist ein Layout, in dem alle gezählten Verbindungen markiert sind, sowie eine Textdatei, in der die Anzahl und Positionen der Verbindungen aufgeführt werden.
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
├── 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.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 `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
```batch
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:
```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 `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:
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.dxf
zeichnung_analyse_20241202_14-30.txt
```
## Funktionsweise
1. **setenv.bat** richtet die Verzeichnisstruktur ein und lädt die Konfigurationswerte aus `defaults.cfg`
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. `defaults.cfg` ö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 `defaults.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 `defaults.cfg` angegebenen 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