# 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 --out ``` 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 --out ``` **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 --out ``` 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 --out ``` **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 --out ``` **Direkt über die Kommandozeile:** ```sh python lib/read_variables.py --in --out ``` **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": , "hoehe": } } ``` ### 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 --json_dimensions <3D-JSON> --json_2d <2D-JSON> [--tolerance ] [--result ] ``` **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 --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.