252 lines
9.6 KiB
Markdown
252 lines
9.6 KiB
Markdown
# 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):**
|
|
|
|
```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:**
|
|
|
|
```sh
|
|
python lib/create_assemblies.py --in <Eingabeordner> --out <Ausgabeordner>
|
|
```
|
|
|
|
**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:**
|
|
- .par-Dateien im angegebenen Eingabeordner
|
|
- 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.
|
|
|
|
---
|
|
|
|
## 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 oder Visualisierung) bereitzustellen.
|
|
|
|
### Aufrufmöglichkeiten
|
|
|
|
**Ü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:**
|
|
|
|
```sh
|
|
python lib/save_stl.py --in <Eingabeordner> --out <Ausgabeordner>
|
|
```
|
|
|
|
**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:**
|
|
- .asm-Dateien im angegebenen Eingabeordner (z.B. aus create_assemblies)
|
|
- **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.
|
|
|
|
---
|
|
|
|
## 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.
|
|
|
|
### Aufrufmöglichkeiten
|
|
|
|
**Ü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:**
|
|
|
|
- `--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:**
|
|
- .par-Dateien im angegebenen Eingabeordner
|
|
- **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.
|
|
- Fehlerhafte Dateien führen nicht zum Abbruch des gesamten Prozesses.
|
|
|
|
---
|
|
|
|
## 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).
|
|
|
|
---
|
|
|
|
## 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.
|