This commit is contained in:
2026-04-09 16:21:40 +02:00
46 changed files with 271 additions and 64 deletions
+14 -6
View File
@@ -1,10 +1,18 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
setlocal
SET "MANAGE=%~dp0manage_interpreter.bat"
call setenv.bat
CALL "%MANAGE%" activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
REM Beispielaufruf mit Parametern:
REM --in: Ordner mit .par-Dateien (optional. Standard: Input)
REM --out: Zielverzeichnis (optional. Standard: Work)
pushd "%PROJECT%"
python %PROJECT_LIB%\create_assemblies.py %*
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.create_assemblies %*
set PYTHON_EXIT=%ERRORLEVEL%
popd
CALL "%MANAGE%" deactivate
exit /b %PYTHON_EXIT%
+15 -3
View File
@@ -1,6 +1,18 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
setlocal
SET "MANAGE=%~dp0manage_interpreter.bat"
call setenv.bat
CALL "%MANAGE%" activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
python "%PROJECT_LIB%\diff_dimensions.py" %*
pushd "%PROJECT%"
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.diff_dimensions %*
set PYTHON_EXIT=%ERRORLEVEL%
popd
CALL "%MANAGE%" deactivate
exit /b %PYTHON_EXIT%
+1 -1
View File
@@ -23,4 +23,4 @@ set /p TOLERANCE=Gib die Toleranz ein (Standard: %DEFAULT_TOLERANCE%):
if "%TOLERANCE%"=="" set "TOLERANCE=%DEFAULT_TOLERANCE%"
REM Aufruf des Skripts mit den eingegebenen oder Standardwerten
call diff_dimensions.bat --type %TYPE% --json_2d %JSON2D% --json_dimensions %JSONDIM% --tolerance %TOLERANCE%
call "%~dp0diff_dimensions.bat" --type %TYPE% --json_2d %JSON2D% --json_dimensions %JSONDIM% --tolerance %TOLERANCE%
+1 -1
View File
@@ -1,4 +1,4 @@
@echo off
call setenv.bat
call "%~dp0setenv.bat"
start
+14 -6
View File
@@ -1,10 +1,18 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
setlocal
SET "MANAGE=%~dp0manage_interpreter.bat"
call setenv.bat
CALL "%MANAGE%" activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
REM Beispielaufruf mit Parametern:
REM --in: Ordner mit .asm-Dateien (optional. Standard: Work)
REM --out: Zielverzeichnis (optional. Standard: Work\stl_export)
pushd "%PROJECT%"
python %PROJECT_LIB%\read_variables.py %*
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.read_variables %*
set PYTHON_EXIT=%ERRORLEVEL%
popd
CALL "%MANAGE%" deactivate
exit /b %PYTHON_EXIT%
+15
View File
@@ -0,0 +1,15 @@
call setenv.bat
if not exist %PROJECT%\.venv (
ECHO Initialisiere Python virtual environment...
py -m venv %PROJECT%\.venv --upgrade-deps
ECHO Erfolgreich.
call %PROJECT%\.venv\Scripts\activate.bat
ECHO Installiere erforderliche Python Packages...
pip install -r %PROJECT_LIB%/requirements.txt -q
ECHO Erfolgreich
deactivate
) ELSE (
ECHO Erforderliche Python Packages bereits installiert!
)
+35
View File
@@ -0,0 +1,35 @@
@echo off
CALL "%~dp0setenv.bat"
IF /I "%1"=="activate" GOTO activate
IF /I "%1"=="deactivate" GOTO deactivate
IF /I "%1"=="activate_interpreter" GOTO activate
IF /I "%1"=="deactivate_interpreter" GOTO deactivate
GOTO :eof
:activate
REM Interpreter wählen
IF DEFINED NETWORK_PYTHON (
SET PYTHON_EXE=%NETWORK_PYTHON%\python.exe
) ELSE (
SET PYTHON_EXE=python
)
REM venv sicherstellen
IF NOT EXIST "%PROJECT%\.venv" (
"%PYTHON_EXE%" -m venv "%PROJECT%\.venv"
)
REM venv aktivieren
CALL "%PROJECT%\.venv\Scripts\activate.bat"
REM Interpreter festnageln
SET VIRTUAL_ENV_PYTHON=%PYTHON_EXE%
GOTO :eof
:deactivate
CALL "%PROJECT%\.venv\Scripts\deactivate.bat"
SET VIRTUAL_ENV_PYTHON=
GOTO :eof
+14 -6
View File
@@ -1,10 +1,18 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
setlocal
SET "MANAGE=%~dp0manage_interpreter.bat"
call setenv.bat
CALL "%MANAGE%" activate
if errorlevel 1 (
echo ERROR: Failed to activate Python environment
exit /b 1
)
REM Beispielaufruf mit Parametern:
REM --in: Ordner mit .asm-Dateien (optional. Standard: Work)
REM --out: Zielverzeichnis (optional. Standard: Work\stl_export)
pushd "%PROJECT%"
python %PROJECT_LIB%\save_stl.py %*
"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.save_stl %*
set PYTHON_EXIT=%ERRORLEVEL%
popd
CALL "%MANAGE%" deactivate
exit /b %PYTHON_EXIT%
+8 -11
View File
@@ -1,17 +1,14 @@
@echo off
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt
pushd %~dp0\..
REM for /f "delims=" %%i in ('git rev-parse --show-toplevel') do set SSG_RD_DIR=%%i
set PROJECT=%cd%
set PROJECT_DIR=%cd%
set PROJECT_BIN=%PROJECT_DIR%\bin
set PROJECT_LIB=%PROJECT_DIR%\lib
set PROJECT_WORK=%PROJECT_DIR%\work
set PROJECT_DATA=%PROJECT_DIR%\data
set PROJECT_INPUT=%PROJECT_DIR%\input
set PROJECT_BIN=%PROJECT%\bin
set PROJECT_LIB=%PROJECT%\lib
set PROJECT_WORK=%PROJECT%\work
set PROJECT_DATA=%PROJECT%\data
set PROJECT_INPUT=%PROJECT%\input
set PROJECT_TEMPLATE=\\ssg.local\freigaben\RuleDesigner\Templates\CreateAssemblies
if not exist %PROJECT_WORK% mkdir %PROJECT_WORK%
@@ -23,4 +20,4 @@ set PROJECT_JSON_TEFBOGEN=%SSG_RD_DIR%\SVGs\Omniflo\python\TEFBogen\json
set PROJECT_JSON_TEFWEICHE=%SSG_RD_DIR%\SVGs\Omniflo\python\TEFWeiche\json
popd
goto :eof
goto :eof
+153 -30
View File
@@ -1,39 +1,60 @@
# Dokumentation: create_assemblies, save_stl & read_variables
# Dokumentation: CAD-Automatisierungsskripte
## Übersicht
| Skript | Batch-Datei | Zweck |
| ------ | ----------- | ----- |
| `lib/create_assemblies.py` | `bin/create_assemblies.bat` | Erzeugt .asm-Baugruppen aus .par-Dateien |
| `lib/save_stl.py` | `bin/save_stl.bat` | Exportiert .asm-Baugruppen als STL-Dateien |
| `lib/read_variables.py` | `bin/get_dimensions.bat` | Liest Maße aus .par-Dateien und speichert als JSON |
| `lib/diff_dimensions.py` | `bin/diff_dimensions.bat` | Vergleicht 3D-Maße (JSON) mit 2D-Zeichnungsmaßen |
| *(kein Python)* | `bin/get_all_differences.bat` | Interaktiver Wrapper für diff_dimensions |
| *(kein Python)* | `bin/get_cmd.bat` | Öffnet Kommandozeile mit gesetzten Umgebungsvariablen |
| *(kein Python)* | `bin/setenv.bat` | Setzt alle Umgebungsvariablen für das Projekt |
---
## 1. create_assemblies
### Zweck
Das Skript erstellt für jede .par-Datei im Eingabeordner eine neue .asm-Baugruppe, indem es eine Platzhalter-Baugruppe (dummy.asm) kopiert und darin die Platzhalter-Komponente (dummy.par) durch die jeweilige .par-Datei ersetzt.
### Aufrufmöglichkeiten
#### Über die Batch-Datei (empfohlen unter Windows):
**Über die Batch-Datei (empfohlen unter Windows):**
```bat
bin\create_assemblies.bat --in <Eingabeordner> --out <Ausgabeordner>
```
- Die Batch-Datei setzt Umgebungsvariablen und ruft das Python-Skript mit den übergebenen Parametern auf.
#### Direkt über die Kommandozeile:
Die Batch-Datei setzt Umgebungsvariablen und ruft das Python-Skript mit den übergebenen Parametern auf.
**Direkt über die Kommandozeile:**
```sh
python lib/create_assemblies.py --in <Eingabeordner> --out <Ausgabeordner>
```
#### Parameter:
**Parameter:**
- `--in`: Pfad zum Ordner mit .par-Dateien (optional, Standard: Umgebungsvariable PROJECT_INPUT oder ./input)
- `--out`: Zielordner für die erzeugten .asm-Dateien (optional, Standard: ./work)
### Input/Output
- **Input:**
- **Input:**
- .par-Dateien im angegebenen Eingabeordner
- dummy.asm und dummy.par im data/-Verzeichnis (werden als Vorlage und Platzhalter verwendet)
- **Output:**
- dummy.asm und dummy.par im Netzwerkpfad PROJECT_TEMPLATE (werden als Vorlage und Platzhalter verwendet)
- **Output:**
- Für jede .par-Datei wird eine .asm-Datei im Ausgabeverzeichnis erzeugt.
- Temporäre Dateien (_temp.asm, .cfg) werden nach Verarbeitung gelöscht.
### Hinweise
- Solid Edge muss installiert sein, da das Skript über COM darauf zugreift.
- Die Platzhalter-Komponente in dummy.asm muss exakt dummy.par heißen.
- Die Vorlage (dummy.asm) wird aus dem Netzwerkpfad `PROJECT_TEMPLATE` geladen (Standard: `\\ssg.local\freigaben\RuleDesigner\Templates\CreateAssemblies`).
- Fehlerhafte oder fehlende Platzhalter werden übersprungen und führen nicht zum Abbruch des gesamten Prozesses.
---
@@ -41,34 +62,40 @@ python lib/create_assemblies.py --in <Eingabeordner> --out <Ausgabeordner>
## 2. save_stl
### Zweck
Das Skript exportiert alle .asm-Baugruppen in einem Ordner als STL-Dateien. Es dient dazu, die zuvor erzeugten Baugruppen für die Weiterverarbeitung (z.B. 3D-Druck) bereitzustellen.
Das Skript exportiert alle .asm-Baugruppen in einem Ordner als STL-Dateien. Es dient dazu, die zuvor erzeugten Baugruppen für die Weiterverarbeitung (z.B. 3D-Druck oder Visualisierung) bereitzustellen.
### Aufrufmöglichkeiten
#### Über die Batch-Datei (empfohlen unter Windows):
**Über die Batch-Datei (empfohlen unter Windows):**
```bat
bin\save_stl.bat --in <Eingabeordner> --out <Ausgabeordner>
```
- Die Batch-Datei setzt Umgebungsvariablen und ruft das Python-Skript mit den übergebenen Parametern auf.
#### Direkt über die Kommandozeile:
Die Batch-Datei setzt Umgebungsvariablen und ruft das Python-Skript mit den übergebenen Parametern auf.
**Direkt über die Kommandozeile:**
```sh
python lib/save_stl.py --in <Eingabeordner> --out <Ausgabeordner>
```
#### Parameter:
**Parameter:**
- `--in`: Pfad zum Ordner mit .asm-Dateien (optional, Standard: Umgebungsvariable PROJECT_WORK oder ./work)
- `--out`: Zielordner für die STL-Dateien (optional, Standard: ./work/STL_Export)
### Input/Output
- **Input:**
- **Input:**
- .asm-Dateien im angegebenen Eingabeordner (z.B. aus create_assemblies)
- **Output:**
- **Output:**
- Für jede .asm-Datei wird eine .stl-Datei im Ausgabeverzeichnis erzeugt.
- Temporäre .cfg- und .log-Dateien werden nach dem Export gelöscht.
### Hinweise
- Solid Edge muss installiert sein, da das Skript über COM darauf zugreift.
- Das Skript ist robust gegenüber Fehlern beim Export einzelner Dateien (Fehler werden gemeldet, der Prozess läuft weiter).
- Nach dem Export werden überflüssige .cfg- und .log-Dateien im Eingabe- und Ausgabeverzeichnis entfernt.
@@ -78,36 +105,46 @@ python lib/save_stl.py --in <Eingabeordner> --out <Ausgabeordner>
## 3. read_variables
### Zweck
Das Skript liest aus allen .par-Dateien in einem Verzeichnis die benutzerdefinierten Variablen 'Mittiges_Koordinatensystem_X_Translation' und 'Mittiges_Koordinatensystem_Y_Translation' aus und speichert die Werte als Breite und Höhe in einer JSON-Datei.
Das Skript liest aus allen .par-Dateien in einem Verzeichnis die benutzerdefinierten Variablen `Mittiges_Koordinatensystem_X_Translation` und `Mittiges_Koordinatensystem_Y_Translation` aus und speichert die Werte als Breite und Höhe in einer JSON-Datei.
### Aufrufmöglichkeiten
#### Über die Kommandozeile oder Batch-Datei:
**Über die Batch-Datei (empfohlen unter Windows):**
```bat
bin\get_dimensions.bat --in <Eingabeordner> --out <Ausgabeordner>
```
**Direkt über die Kommandozeile:**
```sh
python lib/read_variables.py --in <Eingabeordner> --out <Ausgabeordner>
```
#### Parameter:
**Parameter:**
- `--in`: Pfad zum Ordner mit .par-Dateien (optional, Standard: Umgebungsvariable PROJECT_INPUT oder ./input)
- `--out`: Zielordner für die JSON-Ausgabe (optional, Standard: Umgebungsvariable PROJECT_WORK oder ./work)
### Input/Output
- **Input:**
- **Input:**
- .par-Dateien im angegebenen Eingabeordner
- **Output:**
- **Output:**
- Eine JSON-Datei im Ausgabeverzeichnis, benannt nach dem Eingabeordner (z.B. input.json), mit folgendem Aufbau:
```json
{
"Dateiname_ohne_Endung": {
"breite": <Wert>,
"hoehe": <Wert>
},
...
}
}
```
### Hinweise
- Solid Edge muss installiert sein, da das Skript über COM darauf zugreift.
- Die Variablen werden mit 2000 multipliziert und auf drei Nachkommastellen gerundet.
- Falls eine .par-Datei die benötigten Variablen nicht enthält, wird sie übersprungen.
@@ -115,14 +152,100 @@ python lib/read_variables.py --in <Eingabeordner> --out <Ausgabeordner>
---
- **Umgebungsvariablen:**
Die Batch-Dateien rufen vorab setenv.bat auf, um Umgebungsvariablen wie PROJECT_LIB, PROJECT_WORK, PROJECT_INPUT, PROJECT_DATA zu setzen. Diese sollten korrekt konfiguriert sein.
- **Voraussetzungen:**
- Python (mit win32com)
- Solid Edge (für COM-Zugriff)
- **Fehlerbehandlung:**
Fehlerhafte oder fehlende Dateien werden übersprungen, der Prozess läuft weiter.
## 4. diff_dimensions
### Zweck
Das Skript vergleicht 3D-Bauteilmaße (aus einer JSON-Datei erzeugt von `read_variables`) mit 2D-Zeichnungsmaßen (aus einer JSON-Datei des SVG-Editors). Einträge, bei denen Breite oder Höhe außerhalb der Toleranz abweichen, werden in einer Ausgabe-JSON gespeichert. So lassen sich Inkonsistenzen zwischen 3D-Modell und 2D-Zeichnung schnell identifizieren.
### Aufrufmöglichkeiten
**Über die Batch-Datei:**
```bat
bin\diff_dimensions.bat --type <Typ> --json_dimensions <3D-JSON> --json_2d <2D-JSON> [--tolerance <Wert>] [--result <Ausgabedatei>]
```
**Interaktiv (mit Abfragen):**
```bat
bin\get_all_differences.bat
```
Fragt Typ, Dateinamen und Toleranz interaktiv ab und ruft dann `diff_dimensions.bat` auf.
**Direkt über die Kommandozeile:**
```sh
python lib/diff_dimensions.py --type <Typ> --json_dimensions <3D-JSON> --json_2d <2D-JSON>
```
**Parameter:**
- `--type`: Art des Bauteils: `BOGEN`, `WEICHE`, `TEFBOGEN` oder `TEFWEICHE` (bestimmt das Eingabeverzeichnis für die 2D-JSON)
- `--json_dimensions`: Dateiname der 3D-Maße-JSON (aus `read_variables`, liegt in PROJECT_WORK)
- `--json_2d`: Dateiname der 2D-Maße-JSON (liegt im typabhängigen Verzeichnis)
- `--tolerance`: Toleranz in Millimetern (optional, Standard: `0.05`)
- `--result`: Dateiname der Ausgabedatei (optional, Standard: `Differenzen_2D_3D.json`)
- `--output_dir`: Ausgabeverzeichnis (optional, Standard: Umgebungsvariable PROJECT_WORK)
### Input/Output
- **Input:**
- `--json_dimensions`: JSON-Datei mit 3D-Maßen (Schlüssel: SIVAS-Nummer, Felder: `breite`, `hoehe`)
- `--json_2d`: JSON-Datei mit 2D-Maßen (Liste mit Feldern `Sivasnr`, `Objekte_width_mm`, `Objekte_height_mm`)
- **Output:**
- JSON-Datei mit allen Einträgen, deren Maße außerhalb der Toleranz liegen, inkl. Differenzwerten (`w_diff`, `h_diff`). Bei übereinstimmenden Maßen wird keine Ausgabedatei erzeugt.
### Beispielaufruf
```bat
bin\diff_dimensions.bat --type BOGEN --json_dimensions Bogen_3D.json --json_2d Bogen_2D.json --tolerance 0.1 --result diff_bogen.json
```
### Hinweise
- Erfordert kein Solid Edge — reine JSON-Verarbeitung.
- Die Umgebungsvariablen `PROJECT_JSON_BOGEN`, `PROJECT_JSON_WEICHE`, `PROJECT_JSON_TEFBOGEN`, `PROJECT_JSON_TEFWEICHE` müssen für den `--type`-Parameter korrekt gesetzt sein (via setenv.bat).
---
Wenn du eine Beispielkonfiguration oder weitere Details (z.B. zu setenv.bat oder den Umgebungsvariablen) benötigst, sag gerne Bescheid!
## 5. Batch-Hilfsskripte
### setenv.bat
Setzt alle Projektumgebungsvariablen. Wird von allen anderen Batch-Dateien automatisch aufgerufen.
| Variable | Standardwert | Bedeutung |
| -------- | ------------ | --------- |
| `PROJECT_DIR` | Verzeichnis des Code-Ordners | Wurzelverzeichnis des Projekts |
| `PROJECT_BIN` | `%PROJECT_DIR%\bin` | Verzeichnis der Batch-Dateien |
| `PROJECT_LIB` | `%PROJECT_DIR%\lib` | Verzeichnis der Python-Skripte |
| `PROJECT_WORK` | `%PROJECT_DIR%\work` | Arbeitsverzeichnis (Zwischenergebnisse) |
| `PROJECT_DATA` | `%PROJECT_DIR%\data` | Datenverzeichnis |
| `PROJECT_INPUT` | `%PROJECT_DIR%\input` | Eingabeverzeichnis (.par-Dateien) |
| `PROJECT_TEMPLATE` | `\\ssg.local\freigaben\RuleDesigner\Templates\CreateAssemblies` | Netzwerkpfad zur dummy.asm-Vorlage |
| `PROJECT_JSON_BOGEN` | `%SSG_RD_DIR%\SVGs\Omniflo\python\OFBogen\json` | 2D-JSON-Verzeichnis für Bögen |
| `PROJECT_JSON_WEICHE` | `%SSG_RD_DIR%\SVGs\Omniflo\python\OFWeiche\json` | 2D-JSON-Verzeichnis für Weichen |
| `PROJECT_JSON_TEFBOGEN` | `%SSG_RD_DIR%\SVGs\Omniflo\python\TEFBogen\json` | 2D-JSON-Verzeichnis für TEF-Bögen |
| `PROJECT_JSON_TEFWEICHE` | `%SSG_RD_DIR%\SVGs\Omniflo\python\TEFWeiche\json` | 2D-JSON-Verzeichnis für TEF-Weichen |
### get_cmd.bat
Ruft `setenv.bat` auf und öffnet anschließend eine Kommandozeile mit gesetzten Umgebungsvariablen. Nützlich, um Skripte manuell mit korrekter Umgebung zu testen.
### get_all_differences.bat
Interaktiver Wrapper für `diff_dimensions.bat`. Fragt Typ, JSON-Dateinamen und Toleranz per Eingabeaufforderung ab (mit vordefinierten Standardwerten) und startet dann den Vergleich.
---
## Voraussetzungen
- **Python** mit den Paketen `win32com` (pywin32) und `pythoncom`
- **Solid Edge** (für COM-Zugriff bei `create_assemblies`, `save_stl`, `read_variables`)
- **Netzwerkzugriff** auf `\\ssg.local\freigaben\RuleDesigner\Templates\CreateAssemblies` (für `create_assemblies`)
## Fehlerbehandlung
Fehlerhafte oder fehlende Dateien werden bei allen Skripten übersprungen — der Prozess läuft jeweils weiter und gibt eine Fehlermeldung aus.
View File
+1
View File
@@ -0,0 +1 @@
pywin32
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.