initialer commit
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user