diff --git a/README.md b/README.md index aaf11a9..9392fa4 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,17 @@ Dieses Projekt analysiert DXF-Dateien und identifiziert Verbindungs- bzw. Schnit ```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 +├── 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 @@ -44,11 +47,11 @@ Doppelklick auf `verbindungszaehler.bat` oder per Kommandozeile: verbindungszaehler.bat ``` -Alle DXF-Dateien im `input/`-Verzeichnis werden automatisch mit den Einstellungen aus `defaults.cfg` analysiert. +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 `defaults.cfg` analysiert. +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 @@ -58,9 +61,9 @@ verbindungszaehler.bat "C:\Pfad\zur\datei.dxf" ## Konfiguration -### defaults.cfg +### config.cfg -Die Datei `defaults.cfg` enthält alle Einstellungen für die Analyse. Passen Sie diese Werte nach Bedarf an: +Die Datei `config.cfg` enthält alle Einstellungen für die Analyse. Passen Sie diese Werte nach Bedarf an: ```cfg LAYERS=D-1,D-5 @@ -74,7 +77,7 @@ MARK_RADIUS=150 - **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. +**Hinweis:** Nach Änderungen in `config.cfg` werden die neuen Werte bei der nächsten Ausführung automatisch verwendet. ## Ausgabe @@ -89,13 +92,13 @@ Das Tool erzeugt für jede analysierte DXF-Datei zwei Dateien im `output/`-Verze **Beispiel:** ```text -zeichnung_markiert_20241202_14-30.dxf -zeichnung_analyse_20241202_14-30.txt +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 `defaults.cfg` +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 @@ -105,13 +108,13 @@ zeichnung_analyse_20241202_14-30.txt ## Workflow-Beispiel 1. DXF-Dateien in den `input/`-Ordner kopieren -2. `defaults.cfg` öffnen und gewünschte Layer-Namen, Toleranz und Markierungsradius eintragen +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 `defaults.cfg` exakt mit denen in der DXF-Datei übereinstimmen (Groß-/Kleinschreibung beachten) +- 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 @@ -125,8 +128,8 @@ zeichnung_analyse_20241202_14-30.txt ##### "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 +- 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 diff --git a/config/config.cfg b/config/config.cfg new file mode 100644 index 0000000..a16df04 --- /dev/null +++ b/config/config.cfg @@ -0,0 +1,3 @@ +LAYERS=D-1,D-5 +TOLERANCE=0.05 +MARK_RADIUS=150 \ No newline at end of file diff --git a/defaults.cfg b/defaults.cfg deleted file mode 100644 index c9a40da..0000000 --- a/defaults.cfg +++ /dev/null @@ -1,3 +0,0 @@ -LAYERS=D-1,D-5 -TOLERANCE=0.06 -MARK_RADIUS=150 \ No newline at end of file diff --git a/setenv.bat b/scripts/setenv.bat similarity index 65% rename from setenv.bat rename to scripts/setenv.bat index 85a9987..b77d7d8 100644 --- a/setenv.bat +++ b/scripts/setenv.bat @@ -1,10 +1,11 @@ @echo off REM Basisverzeichnis bestimmen -pushd %~dp0\ +pushd %~dp0\.. set PROJECT=%cd% -set SCRIPT_DIR=%PROJECT%\lib +set SCRIPT_DIR=%PROJECT%\src\lib +set CONFIG_DIR=%PROJECT%\config set INPUT_DIR=%PROJECT%\input set OUTPUT_DIR=%PROJECT%\output @@ -13,8 +14,8 @@ if not exist "%INPUT_DIR%" mkdir "%INPUT_DIR%" if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%" REM Defaults aus cfg-Datei laden -if exist defaults.cfg ( - for /f "usebackq tokens=1,2 delims==" %%A in ("defaults.cfg") do ( +if exist "%CONFIG_DIR%\config.cfg" ( + for /f "usebackq tokens=1,2 delims==" %%A in ("%CONFIG_DIR%\config.cfg") do ( set %%A=%%B ) ) diff --git a/lib/analyze.py b/src/lib/analyze.py similarity index 92% rename from lib/analyze.py rename to src/lib/analyze.py index e6ac2f0..c55b6f8 100644 --- a/lib/analyze.py +++ b/src/lib/analyze.py @@ -22,10 +22,10 @@ def main(): base_name = dxf_file.stem script_dir = Path(__file__).resolve().parent - output_dir = (script_dir / ".." / "output").resolve() + output_dir = (script_dir / ".." / ".." / "output").resolve() output_dir.mkdir(parents=True, exist_ok=True) - datum = datetime.now().strftime("%Y%m%d_%H-%M") + datum = datetime.now().strftime("%Y%m%d_%H-%M-%S") output_dxf = output_dir / f"{base_name}_markiert_{datum}.dxf" output_txt = output_dir / f"{base_name}_analyse_{datum}.txt" diff --git a/lib/dxf_analyzer.py b/src/lib/dxf_analyzer.py similarity index 100% rename from lib/dxf_analyzer.py rename to src/lib/dxf_analyzer.py diff --git a/verbindungszaehler.bat b/verbindungszaehler.bat index ef0979b..1aa4660 100644 --- a/verbindungszaehler.bat +++ b/verbindungszaehler.bat @@ -2,7 +2,7 @@ setlocal enabledelayedexpansion REM Umgebungsvariablen laden – immer relativ zum Batch-Datei-Verzeichnis -call "%~dp0setenv.bat" +call "%~dp0\scripts\setenv.bat" REM Kommandozeilenparameter prüfen und Defaults verwenden, falls Parameter fehlen if not "%~2"=="" (