Compare commits
50 Commits
2315f9fc0b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| aea8c5e029 | |||
| eb04b9d73a | |||
| 8e8ce9e676 | |||
| 9fa569e449 | |||
| b959208ddc | |||
| aeb34cd85a | |||
| a3715cd036 | |||
| 099630ca86 | |||
| 0defdc24cc | |||
| fb25aca5ce | |||
| 901844fcb8 | |||
| a74f7e5e3a | |||
| af957c6ccd | |||
| 6898a37570 | |||
| b72c792850 | |||
| b9a71ae07c | |||
| 8e36935c4e | |||
| 8ad8297bce | |||
| 767883d406 | |||
| b7bbee5429 | |||
| 48c0450fe8 | |||
| cd1af92967 | |||
| 34135bcd28 | |||
| cd318d4c0d | |||
| 7287dad368 | |||
| b39442165e | |||
| ff924b1e51 | |||
| 5b1eb66860 | |||
| de2e49cc96 | |||
| 478469780d | |||
| 70d7149683 | |||
| 9d487dcba1 | |||
| 2af0c72cac | |||
| 76d8829ef5 | |||
| bd951d2dd2 | |||
| 650cfadc71 | |||
| 4c741a0783 | |||
| 2ad5433503 | |||
| 9f339a5495 | |||
| dad82b64f4 | |||
| d5c58a65db | |||
| 0401d26d58 | |||
| 58a70e1358 | |||
| 51828ff7e6 | |||
| de8c5112e0 | |||
| 1e16e4ab43 | |||
| ce007c080a | |||
| 747d08dd27 | |||
| 3bf78f5d33 | |||
| bcb80a7ce2 |
@@ -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%
|
||||
|
||||
@@ -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%
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
@echo off
|
||||
call setenv.bat
|
||||
call "%~dp0setenv.bat"
|
||||
start
|
||||
|
||||
|
||||
@@ -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%
|
||||
|
||||
@@ -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!
|
||||
)
|
||||
@@ -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
|
||||
@@ -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%
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
pywin32
|
||||
@@ -4,13 +4,14 @@ import argparse
|
||||
import win32com.client
|
||||
import pythoncom
|
||||
|
||||
def export_assemblies_to_stl(input_dir, output_dir):
|
||||
def export_assemblies_to_stl(input_dir, output_dir, filter_name=None, minimized=False):
|
||||
pythoncom.CoInitialize()
|
||||
|
||||
try:
|
||||
# Solid Edge starten oder verbinden
|
||||
se_app = win32com.client.Dispatch("SolidEdge.Application")
|
||||
se_app.Visible = True
|
||||
se_app.WindowState = 2 if minimized else 1
|
||||
|
||||
documents = se_app.Documents
|
||||
|
||||
@@ -18,6 +19,8 @@ def export_assemblies_to_stl(input_dir, output_dir):
|
||||
|
||||
for filename in os.listdir(input_dir):
|
||||
if filename.lower().endswith(".asm"):
|
||||
if filter_name and filter_name.lower() not in filename.lower():
|
||||
continue
|
||||
asm_path = os.path.join(input_dir, filename)
|
||||
stl_filename = os.path.splitext(filename)[0] + ".stl"
|
||||
stl_path = os.path.join(output_dir, stl_filename)
|
||||
@@ -29,7 +32,7 @@ def export_assemblies_to_stl(input_dir, output_dir):
|
||||
doc = documents.Open(asm_path)
|
||||
# STL exportieren in den Unterordner
|
||||
doc.SaveAs(stl_path)
|
||||
print(f"→ Exported to: {stl_path}")
|
||||
print(f"-> Exported to: {stl_path}")
|
||||
except Exception as e:
|
||||
print(f"Error processing {filename}: {e}")
|
||||
finally:
|
||||
@@ -69,6 +72,8 @@ if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Exportiert alle .asm-Dateien in einem Ordner nach STL.")
|
||||
parser.add_argument("--in", dest="input_dir", required=False, help="Ordner mit .asm-Dateien (Standard: WORK oder ../work)")
|
||||
parser.add_argument("--out", dest="output_dir", required=False, help="Zielordner für STL-Dateien (Standard: work/STL_Export)")
|
||||
parser.add_argument("--filter", dest="filter_name", required=False, help="Nur Dateien verarbeiten, deren Name diesen String enthält")
|
||||
parser.add_argument("--se-minimized", dest="minimized", action="store_true", default=False, help="Solid Edge minimiert starten")
|
||||
|
||||
if len(sys.argv) == 2 and sys.argv[1] in ("-h", "--help"):
|
||||
parser.print_help()
|
||||
@@ -97,4 +102,7 @@ if __name__ == "__main__":
|
||||
print(f"Input folder not found: {input_dir}")
|
||||
sys.exit(1)
|
||||
|
||||
export_assemblies_to_stl(input_dir, output_dir)
|
||||
if args.filter_name:
|
||||
print(f"Filtering files containing: '{args.filter_name}'\n")
|
||||
|
||||
export_assemblies_to_stl(input_dir, output_dir, args.filter_name, args.minimized)
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Projektübersicht
|
||||
|
||||
**SSG-Ruledesigner-Konfigurator** ist die Library der Schönenberger GmbH für den
|
||||
RuleDesigner Fusion (RD Fusion) — ein PDM-System zur Verwaltung von CAD-Daten. Der
|
||||
**RuleDesigner Configurator** ist eine *low-code*-Programmierumgebung, über die das PDM
|
||||
an externe Systeme (Datenbanken, CAD wie Solid Edge, Export nach CSV/JSON) angebunden
|
||||
wird. Dieses Repo bündelt Konfigurationen, Layouts, Bibliotheken und Schulungs-Doku für
|
||||
den abteilungsübergreifenden Einsatz bei Schönenberger.
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
```text
|
||||
SSG-Ruledesigner-Konfigurator/
|
||||
├── MAIN_SSG.rdx # Haupt-Konfiguration (RuleDesigner)
|
||||
├── Sub_DWG2SWG.rdx # Teil-Konfiguration DWG→SWG
|
||||
├── Editor2DLibrary/ # 2D-Editor-Bibliothek
|
||||
├── CAD/ # CAD-Daten
|
||||
├── CSV/ # CSV-Daten/Exporte
|
||||
├── SVGs/ # SVG-Grafiken
|
||||
├── Pictures/ # Bilder
|
||||
├── HallenLayouts/ # Hallen-Layouts
|
||||
├── Sessions/ # Session-Daten
|
||||
├── Doku/ # Dokumentation
|
||||
├── wiki/ # Wiki (Roadmap, Home, Schulungs-Doku)
|
||||
├── _setenv.bat # Umgebung setzen
|
||||
└── cleanLocalShapes.bat # Lokale Shapes bereinigen
|
||||
```
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Die `.rdx`-Dateien sind RuleDesigner-Configurator-Projekte (low code).
|
||||
- Ausführliche Doku und Roadmap liegen im `wiki/` (siehe `Readme.md` für Links).
|
||||
- Ziel: Programmierarbeiten künftig durch hauseigene Mitarbeiter (nach Schulung).
|
||||
@@ -0,0 +1,452 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="297mm"
|
||||
height="210mm"
|
||||
viewBox="0 0 297 210"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
|
||||
sodipodi:docname="Varioförderer_abwärts.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="0.52221046"
|
||||
inkscape:cx="1171.9413"
|
||||
inkscape:cy="251.81418"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1009"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g13" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
transform="matrix(0.23034607,0,0,0.23034607,0.53613215,11.200168)"
|
||||
id="g13">
|
||||
<g
|
||||
transform="matrix(0.93111819,0,0,0.96168343,42.607341,-3.2012156)"
|
||||
id="g41">
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="123"
|
||||
height="96"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
transform="matrix(-1,0,0,1,294,178)"
|
||||
id="rect1" />
|
||||
<path
|
||||
d="m 171,178 122.88,96"
|
||||
stroke="#e59edd"
|
||||
stroke-width="4"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path1" />
|
||||
<path
|
||||
d="M 295,272 703.758,520.544"
|
||||
stroke="#7030a0"
|
||||
stroke-width="4"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path2" />
|
||||
<path
|
||||
d="M 972.8,635.36 704,519"
|
||||
stroke="#00b0f0"
|
||||
stroke-width="4"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path3" />
|
||||
<path
|
||||
d="M 1116.08,668.6 974,635"
|
||||
stroke="#c1e5f5"
|
||||
stroke-width="4"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path4" />
|
||||
<text
|
||||
fill="#7030a0"
|
||||
font-family="Symbol, Symbol_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="43px"
|
||||
transform="translate(429.665,319)"
|
||||
id="text4"></text>
|
||||
<text
|
||||
fill="#7030a0"
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="24px"
|
||||
transform="translate(456.665,319)"
|
||||
id="text5">F</text>
|
||||
<text
|
||||
fill="#00b0f0"
|
||||
font-family="Symbol, Symbol_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="43px"
|
||||
transform="translate(803.268,617)"
|
||||
id="text6"></text>
|
||||
<text
|
||||
fill="#00b0f0"
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="24px"
|
||||
transform="translate(830.268,617)"
|
||||
id="text7">S</text>
|
||||
<path
|
||||
d="M 0,0 C 28.842,37.2866 34.2679,71.9892 32.7764,106"
|
||||
stroke="#7030a0"
|
||||
stroke-width="3"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(1,0,0,-1,480.5,380.5)"
|
||||
id="path7" />
|
||||
<path
|
||||
d="M 0,0 C 26.5571,21.2117 32.3714,48.3031 33,77"
|
||||
stroke="#00b0f0"
|
||||
stroke-width="3"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,797.5,558.5)"
|
||||
id="path8" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(131.297,162)"
|
||||
id="text8">Ho</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(1116.31,708)"
|
||||
id="text9">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(1135.14,708)"
|
||||
id="text10">1</text>
|
||||
<path
|
||||
d="m 295.979,218 h 406.759 v 2 H 295.979 Z m 7.497,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 391.765,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.367,-0.36 -0.278,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.638,-0.89 -0.36,-1.367 0.278,-0.477 0.89,-0.639 1.367,-0.36 z"
|
||||
id="path10" />
|
||||
<path
|
||||
d="m 704,452 v 59.488"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path11" />
|
||||
<path
|
||||
d="m 973,467 v 36.381"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path12" />
|
||||
<path
|
||||
d="m 705.979,479 h 264.842 v 2 H 705.979 Z m 7.497,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 249.848,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.368,-0.36 -0.278,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.638,-0.89 -0.36,-1.367 0.279,-0.477 0.891,-0.639 1.368,-0.36 z"
|
||||
id="path13" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(489.106,209)"
|
||||
id="text13">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(502.44,209)"
|
||||
id="text14">F</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(825.829,455)"
|
||||
id="text15">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(839.163,455)"
|
||||
id="text16">S</text>
|
||||
<path
|
||||
d="m 1107,669 c 0,-4.971 4.03,-9 9,-9 4.97,0 9,4.029 9,9 0,4.971 -4.03,9 -9,9 -4.97,0 -9,-4.029 -9,-9 z"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path16" />
|
||||
<path
|
||||
d="m 162,178 c 0,-4.971 4.029,-9 9,-9 4.971,0 9,4.029 9,9 0,4.971 -4.029,9 -9,9 -4.971,0 -9,-4.029 -9,-9 z"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path17" />
|
||||
<path
|
||||
d="M 1,1.98013 1.0001,112.925 H -0.999897 L -0.999998,1.98013 Z M -5.53044,9.47613 -3.97253e-8,-0.0046346 5.53045,9.47612 C 5.80873,9.95317 5.6476,10.5655 5.17055,10.8438 4.6935,11.1221 4.08118,10.9609 3.8029,10.4839 L -0.863777,2.48387 H 0.863781 L -3.80288,10.4839 c -0.27828,0.477 -0.8906,0.6382 -1.36765,0.3599 C -5.64758,10.5655 -5.80872,9.95318 -5.53044,9.47613 Z M 5.53054,105.429 1.0489e-4,114.91 -5.53035,105.429 c -0.27828,-0.477 -0.11714,-1.089 0.35991,-1.367 0.47705,-0.279 1.08937,-0.117 1.36765,0.36 l 4.666672,8 h -1.727558 l 4.666656,-8 c 0.27828,-0.477 0.8906,-0.639 1.36765,-0.36 0.47706,0.278 0.63819,0.89 0.35991,1.367 z"
|
||||
transform="matrix(1,0,0,-1,1183,635.906)"
|
||||
id="path18" />
|
||||
<path
|
||||
d="m 1.00001,1.98 9e-5,29.6399 H -0.999901 L -0.999994,1.98 Z M -5.53042,9.47615 2.40488e-8,-0.0046346 5.53048,9.47611 C 5.80876,9.95316 5.64762,10.5655 5.17057,10.8438 4.69352,11.122 4.0812,10.9609 3.80292,10.4839 L -0.863771,2.48387 H 0.863787 L -3.80286,10.4839 c -0.27827,0.477 -0.89059,0.6382 -1.36764,0.3599 C -5.64756,10.5655 -5.80869,9.9532 -5.53042,9.47615 Z M 5.53052,24.1237 1.04963e-4,33.6045 -5.53037,24.1238 c -0.27828,-0.4771 -0.11715,-1.0894 0.3599,-1.3677 0.47705,-0.2782 1.08937,-0.1171 1.36765,0.3599 l 4.666696,8 h -1.727558 l 4.666642,-8 c 0.27828,-0.477 0.8906,-0.6382 1.36765,-0.3599 0.47705,0.2783 0.63819,0.8906 0.35991,1.3676 z"
|
||||
transform="matrix(1,0,0,-1,1183,668.6)"
|
||||
id="path19" />
|
||||
<path
|
||||
d="M 0,0 199.69,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,1190.69,519)"
|
||||
id="path20" />
|
||||
<path
|
||||
d="M 0,0 65.4454,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,1190.45,635)"
|
||||
id="path21" />
|
||||
<path
|
||||
d="M 0,0 65.4454,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,1197.45,669)"
|
||||
id="path22" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(1203.12,582)"
|
||||
id="text22">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(1221.95,582)"
|
||||
id="text23">S</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(1201.32,662)"
|
||||
id="text24">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(1220.15,662)"
|
||||
id="text25">AS</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(1025.92,465)"
|
||||
id="text26">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(1039.25,465)"
|
||||
id="text27">AS</text>
|
||||
<path
|
||||
d="m 975.98,481 h 136.22 v 2 H 975.98 Z m 7.496,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 121.224,-11.06 9.48,5.53 -9.48,5.531 c -0.48,0.278 -1.09,0.117 -1.37,-0.36 -0.28,-0.477 -0.11,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.47,-0.278 -0.64,-0.89 -0.36,-1.367 0.28,-0.477 0.89,-0.639 1.37,-0.36 z"
|
||||
id="path27" />
|
||||
<path
|
||||
d="M 1114,477 V 615.439"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path28" />
|
||||
<path
|
||||
d="m 123.188,271.022 -0.184,-92.04 2,-0.004 0.184,92.04 z m 6.516,-7.509 -5.512,9.492 -5.549,-9.47 c -0.279,-0.477 -0.119,-1.089 0.357,-1.368 0.477,-0.28 1.089,-0.12 1.368,0.357 l 4.683,7.99 -1.727,0.004 4.65,-8.009 c 0.278,-0.478 0.89,-0.64 1.367,-0.363 0.478,0.277 0.64,0.889 0.363,1.367 z m -11.215,-77.026 5.511,-9.492 5.549,9.47 c 0.28,0.477 0.12,1.089 -0.357,1.368 -0.476,0.28 -1.089,0.12 -1.368,-0.357 l -4.683,-7.99 1.728,-0.004 -4.651,8.009 c -0.277,0.478 -0.889,0.64 -1.367,0.363 -0.477,-0.277 -0.64,-0.889 -0.362,-1.367 z"
|
||||
id="path29" />
|
||||
<path
|
||||
d="M 0,0 38.6295,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,153.63,273)"
|
||||
id="path30" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(74.7453,401)"
|
||||
id="text30">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(93.5786,401)"
|
||||
id="text31">F</text>
|
||||
<path
|
||||
d="M 0,0 45.3722,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,153.372,178)"
|
||||
id="path31" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(68.8266,230)"
|
||||
id="text32">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(87.6599,230)"
|
||||
id="text33">ES</text>
|
||||
<path
|
||||
d="M 1,1.9794 1.0001,243.656 H -0.999896 L -0.999999,1.9794 Z M -5.53044,9.47613 2.45822e-8,-0.0046346 5.53045,9.47613 C 5.80873,9.95318 5.64759,10.5655 5.17054,10.8438 4.69349,11.1221 4.08117,10.9609 3.80289,10.4839 L -0.863778,2.48387 H 0.86378 l -4.66666,8.00003 c -0.27828,0.477 -0.8906,0.6382 -1.36765,0.3599 C -5.64759,10.5655 -5.80872,9.95318 -5.53044,9.47613 Z M 5.53055,236.159 1.04757e-4,245.64 -5.53034,236.159 c -0.27829,-0.477 -0.11715,-1.089 0.3599,-1.368 0.47705,-0.278 1.08937,-0.117 1.36765,0.36 l 4.666673,8 h -1.727558 l 4.666665,-8 c 0.27828,-0.477 0.8906,-0.638 1.36765,-0.36 0.47705,0.279 0.63819,0.891 0.35991,1.368 z"
|
||||
transform="matrix(1,0,0,-1,124,518.635)"
|
||||
id="path33" />
|
||||
<path
|
||||
d="M 0,0 156.35,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,271.349,519)"
|
||||
id="path34" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(213.958,347)"
|
||||
id="text34">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(227.292,347)"
|
||||
id="text35">ES</text>
|
||||
<path
|
||||
d="m 172.98,359 h 120.304 v 2 H 172.98 Z m 7.496,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.09,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 105.312,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.367,-0.36 -0.279,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.639,-0.89 -0.36,-1.367 0.278,-0.477 0.89,-0.639 1.367,-0.36 z"
|
||||
id="path35" />
|
||||
<path
|
||||
d="m 173,293 v 80.092"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path36" />
|
||||
<rect
|
||||
x="294"
|
||||
y="272"
|
||||
width="410"
|
||||
height="249"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
id="rect36" />
|
||||
<rect
|
||||
x="704"
|
||||
y="519"
|
||||
width="269"
|
||||
height="116"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
id="rect37" />
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="144"
|
||||
height="34"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
transform="matrix(-1,0,0,1,1117,635)"
|
||||
id="rect38" />
|
||||
<path
|
||||
d="m 704,210 v 50"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path38" />
|
||||
<path
|
||||
d="m 173,119 v 30.704"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path39" />
|
||||
<path
|
||||
d="m 172.971,126 h 940.919 v 2 H 172.971 Z m 7.505,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 925.914,-11.06 9.48,5.53 -9.48,5.531 c -0.48,0.278 -1.09,0.117 -1.37,-0.36 -0.28,-0.477 -0.12,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.48,-0.278 -0.64,-0.89 -0.36,-1.367 0.28,-0.477 0.89,-0.639 1.37,-0.36 z"
|
||||
id="path40" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(605.305,154)"
|
||||
id="text40">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(618.638,154)"
|
||||
id="text41">1</text>
|
||||
<path
|
||||
d="M 1114,109 V 456.164"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path41" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,452 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="297mm"
|
||||
height="210mm"
|
||||
viewBox="0 0 297 210"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
|
||||
sodipodi:docname="Varioförderer_aufwärts.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="0.73851712"
|
||||
inkscape:cx="501.00396"
|
||||
inkscape:cy="561.25984"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1009"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
transform="matrix(0.23034607,0,0,0.23034607,0.93511915,3.6997708)"
|
||||
id="g30">
|
||||
<path
|
||||
d="m 294.979,214 h 406.759 v 2 H 294.979 Z m 7.497,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 391.765,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.367,-0.36 -0.278,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.638,-0.89 -0.36,-1.367 0.278,-0.477 0.89,-0.639 1.367,-0.36 z"
|
||||
id="path1" />
|
||||
<path
|
||||
d="m 704,205 v 59.488"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path2" />
|
||||
<path
|
||||
d="m 295,204 v 59.488"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path3" />
|
||||
<path
|
||||
d="m 973,205 v 59.488"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path4" />
|
||||
<path
|
||||
d="m 705.979,214 h 264.842 v 2 H 705.979 Z m 7.497,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 249.848,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.368,-0.36 -0.278,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.638,-0.89 -0.36,-1.367 0.279,-0.477 0.891,-0.639 1.368,-0.36 z"
|
||||
id="path5" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(487.134,199)"
|
||||
id="text5">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(500.468,199)"
|
||||
id="text6">F</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(825.829,199)"
|
||||
id="text7">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(839.163,199)"
|
||||
id="text8">S</text>
|
||||
<path
|
||||
d="M 1,1.98013 1.0001,112.925 H -0.999897 L -0.999998,1.98013 Z M -5.53044,9.47613 -3.97253e-8,-0.0046346 5.53045,9.47612 C 5.80873,9.95317 5.6476,10.5655 5.17055,10.8438 4.6935,11.1221 4.08118,10.9609 3.8029,10.4839 L -0.863777,2.48387 H 0.863781 L -3.80288,10.4839 c -0.27828,0.477 -0.8906,0.6382 -1.36765,0.3599 C -5.64758,10.5655 -5.80872,9.95318 -5.53044,9.47613 Z M 5.53054,105.429 1.0489e-4,114.91 -5.53035,105.429 c -0.27828,-0.477 -0.11714,-1.089 0.35991,-1.367 0.47705,-0.279 1.08937,-0.117 1.36765,0.36 l 4.666672,8 h -1.727558 l 4.666656,-8 c 0.27828,-0.477 0.8906,-0.639 1.36765,-0.36 0.47706,0.278 0.63819,0.89 0.35991,1.367 z"
|
||||
transform="matrix(1,0,0,-1,1183,387.906)"
|
||||
id="path8" />
|
||||
<path
|
||||
d="m 1.00001,1.98 9e-5,29.6399 H -0.999901 L -0.999994,1.98 Z M -5.53042,9.47615 2.40488e-8,-0.0046346 5.53048,9.47611 C 5.80876,9.95316 5.64762,10.5655 5.17057,10.8438 4.69352,11.122 4.0812,10.9609 3.80292,10.4839 L -0.863771,2.48387 H 0.863787 L -3.80286,10.4839 c -0.27827,0.477 -0.89059,0.6382 -1.36764,0.3599 C -5.64756,10.5655 -5.80869,9.9532 -5.53042,9.47615 Z M 5.53052,24.1237 1.04963e-4,33.6045 -5.53037,24.1238 c -0.27828,-0.4771 -0.11715,-1.0894 0.3599,-1.3677 0.47705,-0.2782 1.08937,-0.1171 1.36765,0.3599 l 4.666696,8 h -1.727558 l 4.666642,-8 c 0.27828,-0.477 0.8906,-0.6382 1.36765,-0.3599 0.47705,0.2783 0.63819,0.8906 0.35991,1.3676 z"
|
||||
transform="matrix(1,0,0,-1,1183,421.6)"
|
||||
id="path9" />
|
||||
<path
|
||||
d="M 0,0 76.4572,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,1190.46,272)"
|
||||
id="path10" />
|
||||
<path
|
||||
d="M 0,0 65.4454,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,1190.45,388)"
|
||||
id="path11" />
|
||||
<path
|
||||
d="M 0,0 65.4454,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,1197.45,422)"
|
||||
id="path12" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(1203.12,335)"
|
||||
id="text12">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(1221.95,335)"
|
||||
id="text13">S</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(1201.32,415)"
|
||||
id="text14">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(1220.15,415)"
|
||||
id="text15">ES</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(1025.92,202)"
|
||||
id="text16">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(1039.25,202)"
|
||||
id="text17">ES</text>
|
||||
<path
|
||||
d="m 975.98,214 h 136.22 v 2 H 975.98 Z m 7.496,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 121.224,-11.06 9.48,5.53 -9.48,5.531 c -0.48,0.278 -1.09,0.117 -1.37,-0.36 -0.28,-0.477 -0.11,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.47,-0.278 -0.64,-0.89 -0.36,-1.367 0.28,-0.477 0.89,-0.639 1.37,-0.36 z"
|
||||
id="path17" />
|
||||
<path
|
||||
d="m 1114,205 v 59.488"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path18" />
|
||||
<path
|
||||
d="m 123.188,614.022 -0.184,-92.04 2,-0.004 0.184,92.04 z m 6.516,-7.509 -5.512,9.492 -5.549,-9.47 c -0.279,-0.477 -0.119,-1.089 0.357,-1.368 0.477,-0.28 1.089,-0.12 1.368,0.357 l 4.683,7.99 -1.727,0.004 4.65,-8.009 c 0.278,-0.478 0.89,-0.64 1.367,-0.363 0.478,0.277 0.64,0.889 0.363,1.367 z m -11.215,-77.026 5.511,-9.492 5.549,9.47 c 0.28,0.477 0.12,1.089 -0.357,1.368 -0.476,0.28 -1.089,0.12 -1.368,-0.357 l -4.683,-7.99 1.728,-0.004 -4.651,8.009 c -0.277,0.478 -0.889,0.64 -1.367,0.363 -0.477,-0.277 -0.64,-0.889 -0.362,-1.367 z"
|
||||
id="path19" />
|
||||
<path
|
||||
d="M 0,0 88.0784,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,165.078,616)"
|
||||
id="path20" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(38.1987,453)"
|
||||
id="text20">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(57.0321,453)"
|
||||
id="text21">F</text>
|
||||
<path
|
||||
d="M 0,0 45.3722,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,153.372,521)"
|
||||
id="path21" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(40.9113,575)"
|
||||
id="text22">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(59.7446,575)"
|
||||
id="text23">AS</text>
|
||||
<path
|
||||
d="M 1,1.9794 1.0001,341.406 H -0.999896 L -0.999999,1.9794 Z M -5.53044,9.47613 -1.09084e-8,-0.0046346 5.53045,9.47613 C 5.80873,9.95318 5.64759,10.5655 5.17054,10.8438 4.69349,11.1221 4.08117,10.9609 3.80289,10.4839 L -0.863778,2.48387 H 0.86378 l -4.66667,8.00003 c -0.27828,0.477 -0.89059,0.6382 -1.36765,0.3599 -0.47705,-0.2783 -0.63818,-0.89062 -0.3599,-1.36767 z M 5.53055,333.909 1.04861e-4,343.39 -5.53034,333.909 c -0.27828,-0.477 -0.11715,-1.089 0.3599,-1.367 0.47706,-0.279 1.08937,-0.118 1.36765,0.36 l 4.666673,8 h -1.727558 l 4.666665,-8 c 0.27828,-0.478 0.8906,-0.639 1.36765,-0.36 0.47705,0.278 0.63819,0.89 0.35991,1.367 z"
|
||||
transform="matrix(1,0,0,-1,94,616.385)"
|
||||
id="path23" />
|
||||
<path
|
||||
d="M 0,0 197.424,1.04987e-4"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,281.424,273)"
|
||||
id="path24" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(213.958,202)"
|
||||
id="text24">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(227.292,202)"
|
||||
id="text25">AS</text>
|
||||
<path
|
||||
d="m 172.98,213 h 120.304 v 2 H 172.98 Z m 7.496,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.09,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 105.312,-11.06 9.481,5.53 -9.481,5.531 c -0.477,0.278 -1.089,0.117 -1.367,-0.36 -0.279,-0.477 -0.117,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.477,-0.278 -0.639,-0.89 -0.36,-1.367 0.278,-0.477 0.89,-0.639 1.367,-0.36 z"
|
||||
id="path25" />
|
||||
<path
|
||||
d="m 171,205 v 80.092"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path26" />
|
||||
<path
|
||||
d="m 172.971,670 h 940.919 v 2 H 172.971 Z m 7.505,6.53 -9.481,-5.53 9.481,-5.53 c 0.477,-0.279 1.089,-0.118 1.368,0.359 0.278,0.478 0.117,1.09 -0.36,1.368 l -8,4.667 v -1.728 l 8,4.667 c 0.477,0.278 0.638,0.89 0.36,1.368 -0.279,0.477 -0.891,0.638 -1.368,0.359 z m 925.914,-11.06 9.48,5.53 -9.48,5.531 c -0.48,0.278 -1.09,0.117 -1.37,-0.36 -0.28,-0.477 -0.12,-1.09 0.36,-1.368 l 8,-4.667 v 1.728 l -8,-4.667 c -0.48,-0.278 -0.64,-0.89 -0.36,-1.367 0.28,-0.477 0.89,-0.639 1.37,-0.36 z"
|
||||
id="path27" />
|
||||
<path
|
||||
d="M 1116,483 V 681.968"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path28" />
|
||||
<path
|
||||
d="m 171,625 v 57"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path29" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(601.134,662)"
|
||||
id="text29">L</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(614.468,662)"
|
||||
id="text30">1</text>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.23034607,0,0,0.23034607,0.53613215,2.9601198)"
|
||||
id="g13">
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="123"
|
||||
height="96"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
transform="matrix(-1,0,0,1,294,521)"
|
||||
id="rect1" />
|
||||
<path
|
||||
d="m 171,521 122.88,96"
|
||||
stroke="#e59edd"
|
||||
stroke-width="4"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path1-0" />
|
||||
<path
|
||||
d="M 0,0 410.718,344.84"
|
||||
stroke="#7030a0"
|
||||
stroke-width="4"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(1,0,0,-1,293,616.84)"
|
||||
id="path2-9" />
|
||||
<path
|
||||
d="M 972.8,388.36 704,272"
|
||||
stroke="#00b0f0"
|
||||
stroke-width="4"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path3-4" />
|
||||
<path
|
||||
d="M 1116.08,421.6 974,388"
|
||||
stroke="#c1e5f5"
|
||||
stroke-width="4"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path4-8" />
|
||||
<text
|
||||
fill="#7030a0"
|
||||
font-family="Symbol, Symbol_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="43px"
|
||||
transform="translate(411.13,582)"
|
||||
id="text4"></text>
|
||||
<text
|
||||
fill="#7030a0"
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="24px"
|
||||
transform="translate(438.13,582)"
|
||||
id="text5-8">F</text>
|
||||
<text
|
||||
fill="#00b0f0"
|
||||
font-family="Symbol, Symbol_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="43px"
|
||||
transform="translate(803.268,370)"
|
||||
id="text6-2"></text>
|
||||
<text
|
||||
fill="#00b0f0"
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="24px"
|
||||
transform="translate(830.268,370)"
|
||||
id="text7-4">S</text>
|
||||
<path
|
||||
d="m 452.5,483.5 c 35.65,34.747 46.361,64.679 47,130"
|
||||
stroke="#7030a0"
|
||||
stroke-width="3"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path7" />
|
||||
<path
|
||||
d="M 0,0 C 26.5571,21.2117 32.3714,48.3031 33,77"
|
||||
stroke="#00b0f0"
|
||||
stroke-width="3"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
transform="matrix(-1,0,0,1,797.5,311.5)"
|
||||
id="path8-5" />
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(136.448,500)"
|
||||
id="text8-5">Ho</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="27px"
|
||||
transform="translate(1116.31,461)"
|
||||
id="text9">H</text>
|
||||
<text
|
||||
font-family="Aptos, Aptos_MSFontService, sans-serif"
|
||||
font-weight="400"
|
||||
font-size="21px"
|
||||
transform="translate(1135.14,461)"
|
||||
id="text10">1</text>
|
||||
<path
|
||||
d="m 1107,422 c 0,-4.971 4.03,-9 9,-9 4.97,0 9,4.029 9,9 0,4.971 -4.03,9 -9,9 -4.97,0 -9,-4.029 -9,-9 z"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path10-1" />
|
||||
<path
|
||||
d="m 162,521 c 0,-4.971 4.029,-9 9,-9 4.971,0 9,4.029 9,9 0,4.971 -4.029,9 -9,9 -4.971,0 -9,-4.029 -9,-9 z"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="path11-7" />
|
||||
<rect
|
||||
x="294"
|
||||
y="272"
|
||||
width="410"
|
||||
height="345"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
id="rect11" />
|
||||
<rect
|
||||
x="704"
|
||||
y="272"
|
||||
width="269"
|
||||
height="116"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
id="rect12" />
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="144"
|
||||
height="34"
|
||||
stroke="#000000"
|
||||
stroke-width="2"
|
||||
stroke-miterlimit="8"
|
||||
fill="none"
|
||||
transform="matrix(-1,0,0,1,1117,388)"
|
||||
id="rect13" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,442 @@
|
||||
# Gleichungen Förderer aufwärts
|
||||
|
||||

|
||||
**violett** ist F wie _Förderer_
|
||||
**hellblau** ist S wie _Strecke_
|
||||
**AS** ist _Ausschleus_- Element
|
||||
**ES** ist _Einschleus_- Element
|
||||
|
||||
|
||||
## Gegeben
|
||||
|
||||
$H_0$, $H_1$, $L_1$, $\alpha_F$, $\alpha_S$, $L_{ES}$, $H_{ES}$, $L_{AS}$, $H_{AS}$
|
||||
|
||||
## Gesucht
|
||||
|
||||
$L_F$, $L_S$, $H_F$, $H_S$
|
||||
|
||||
---
|
||||
|
||||
## Grundgleichungen ($H_1 > H_0$, Förderrichtung: von $H_0$ nach $H_1$)
|
||||
|
||||
**(1) Horizontal:**
|
||||
|
||||
$$L_1 = L_{ES} + L_F + L_S + L_{AS}$$
|
||||
|
||||
**(2) Vertikal:**
|
||||
|
||||
$$H_1 - H_0 = H_F - H_S - H_{ES} - H_{AS}$$
|
||||
|
||||
**(3) Neigung F:**
|
||||
|
||||
$$\tan(\alpha_F) = \frac{H_F}{L_F} \quad \Rightarrow \quad H_F = L_F \cdot \tan(\alpha_F)$$
|
||||
|
||||
**(4) Neigung S:**
|
||||
|
||||
$$\tan(\alpha_S) = \frac{H_S}{L_S} \quad \Rightarrow \quad H_S = L_S \cdot \tan(\alpha_S)$$
|
||||
|
||||
---
|
||||
|
||||
## Lösung (Einsetzen von (3),(4) in (1),(2))
|
||||
|
||||
**(I)**
|
||||
|
||||
$$L_F + L_S = L_1 - L_{ES} - L_{AS}$$
|
||||
|
||||
**(II)**
|
||||
|
||||
$$L_F \cdot \tan(\alpha_F) - L_S \cdot \tan(\alpha_S) = (H_1 - H_0) + H_{ES} + H_{AS}$$
|
||||
|
||||
---
|
||||
|
||||
## Ergebnis
|
||||
|
||||
$$L_F = \frac{(H_1 - H_0 + H_{ES} + H_{AS}) + (L_1 - L_{ES} - L_{AS}) \cdot \tan(\alpha_S)}{\tan(\alpha_F) + \tan(\alpha_S)}$$
|
||||
|
||||
$$L_S = (L_1 - L_{ES} - L_{AS}) - L_F$$
|
||||
|
||||
$$H_F = L_F \cdot \tan(\alpha_F)$$
|
||||
|
||||
$$H_S = L_S \cdot \tan(\alpha_S)$$
|
||||
|
||||
|
||||
# Gleichungen Förderer abwärts
|
||||
|
||||

|
||||
|
||||
## Gegeben
|
||||
|
||||
$H_0$, $H_1$, $L_1$, $\alpha_F$, $\alpha_S$, $L_{ES}$, $H_{ES}$, $L_{AS}$, $H_{AS}$
|
||||
|
||||
## Gesucht
|
||||
|
||||
$L_F$, $L_S$, $H_F$, $H_S$
|
||||
|
||||
---
|
||||
|
||||
## Grundgleichungen ($H_0 > H_1$, Förderrichtung: von $H_0$ nach $H_1$)
|
||||
|
||||
**(1) Horizontal:**
|
||||
|
||||
$$L_1 = L_{ES} + L_F + L_S + L_{AS}$$
|
||||
|
||||
**(2) Vertikal:**
|
||||
|
||||
$$H_0 - H_1 = H_{ES} + H_F + H_S + H_{AS}$$
|
||||
|
||||
**(3) Neigung F:**
|
||||
|
||||
$$\tan(\alpha_F) = \frac{H_F}{L_F} \quad \Rightarrow \quad H_F = L_F \cdot \tan(\alpha_F)$$
|
||||
|
||||
**(4) Neigung S:**
|
||||
|
||||
$$\tan(\alpha_S) = \frac{H_S}{L_S} \quad \Rightarrow \quad H_S = L_S \cdot \tan(\alpha_S)$$
|
||||
|
||||
---
|
||||
|
||||
## Lösung (Einsetzen von (3),(4) in (1),(2))
|
||||
|
||||
**(I)**
|
||||
|
||||
$$L_F + L_S = L_1 - L_{ES} - L_{AS}$$
|
||||
|
||||
**(II)**
|
||||
|
||||
$$L_F \cdot \tan(\alpha_F) + L_S \cdot \tan(\alpha_S) = (H_0 - H_1) - H_{ES} - H_{AS}$$
|
||||
|
||||
---
|
||||
|
||||
## Ergebnis
|
||||
|
||||
$$L_F = \frac{(H_0 - H_1 - H_{ES} - H_{AS}) - (L_1 - L_{ES} - L_{AS}) \cdot \tan(\alpha_S)}{\tan(\alpha_F) - \tan(\alpha_S)}$$
|
||||
|
||||
$$L_S = (L_1 - L_{ES} - L_{AS}) - L_F$$
|
||||
|
||||
$$H_F = L_F \cdot \tan(\alpha_F)$$
|
||||
|
||||
$$H_S = L_S \cdot \tan(\alpha_S)$$
|
||||
|
||||
# Zusammenfassung
|
||||
|
||||
Wobei $\alpha_S$ normalerweise immer bei 3° liegt und $\alpha_F$ von 3,6,9,12,15.. 51° läuft.
|
||||
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Förderer-Berechnung in 2D – beide Fälle
|
||||
====================================================
|
||||
Aufwärts (H1 > H0):
|
||||
ΔH = H1 - H0
|
||||
L_F = (ΔH + H_ES + H_AS + L_rest·tan(α_S)) / (tan(α_F) + tan(α_S))
|
||||
Probe: H_F - H_S - H_ES - H_AS = ΔH
|
||||
|
||||
Abwärts (H0 > H1):
|
||||
ΔH = H0 - H1
|
||||
L_F = (ΔH - H_ES - H_AS - L_rest·tan(α_S)) / (tan(α_F) - tan(α_S))
|
||||
Probe: H_ES + H_F + H_S + H_AS = ΔH
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# ============================================================
|
||||
# KONSTANTEN [alle in Meter / Grad]
|
||||
# ============================================================
|
||||
H0 = 2.0
|
||||
H1 = 5.0
|
||||
L1 = 8.0
|
||||
L_ES = 1.0
|
||||
H_ES = 0.3
|
||||
L_AS = 1.0
|
||||
H_AS = 0.3
|
||||
|
||||
ALPHA_S = 3.0
|
||||
ALPHA_F_LIST = [3, 6, 9, 12, 15, 18, 24, 27, 33, 39, 45, 51]
|
||||
|
||||
|
||||
def berechne(h0, h1, l1, l_es, h_es, l_as, h_as, alpha_f_deg, alpha_s_deg):
|
||||
"""
|
||||
Berechnet L_F, L_S, H_F, H_S.
|
||||
Unterscheidet automatisch aufwärts/abwärts anhand h0 vs h1.
|
||||
"""
|
||||
alpha_f = math.radians(alpha_f_deg)
|
||||
alpha_s = math.radians(alpha_s_deg)
|
||||
tan_f = math.tan(alpha_f)
|
||||
tan_s = math.tan(alpha_s)
|
||||
l_rest = l1 - l_es - l_as
|
||||
|
||||
if h1 >= h0:
|
||||
# === AUFWÄRTS ===
|
||||
# (2): H1 - H0 = H_F - H_S - H_ES - H_AS
|
||||
delta_h = h1 - h0
|
||||
nenner = tan_f + tan_s
|
||||
if abs(nenner) < 1e-12:
|
||||
return None
|
||||
zaehler = (delta_h + h_es + h_as) + l_rest * tan_s
|
||||
fall = "aufwärts"
|
||||
else:
|
||||
# === ABWÄRTS ===
|
||||
# (2): H0 - H1 = H_ES + H_F + H_S + H_AS
|
||||
delta_h = h0 - h1
|
||||
nenner = tan_f - tan_s
|
||||
if abs(nenner) < 1e-12:
|
||||
return None
|
||||
zaehler = (delta_h - h_es - h_as) - l_rest * tan_s
|
||||
fall = "abwärts"
|
||||
|
||||
l_f = zaehler / nenner
|
||||
l_s = l_rest - l_f
|
||||
h_f = l_f * tan_f
|
||||
h_s = l_s * tan_s
|
||||
|
||||
# Gegenprobe
|
||||
if fall == "aufwärts":
|
||||
probe = h_f - h_s - h_es - h_as # soll = H1-H0
|
||||
else:
|
||||
probe = h_es + h_f + h_s + h_as # soll = H0-H1
|
||||
|
||||
return {
|
||||
"L_F": l_f, "L_S": l_s,
|
||||
"H_F": h_f, "H_S": h_s,
|
||||
"fall": fall, "delta_h": delta_h, "probe": probe,
|
||||
}
|
||||
|
||||
|
||||
def validierung(erg):
|
||||
probleme = []
|
||||
for key in ("L_F", "L_S", "H_F", "H_S"):
|
||||
if erg[key] < 0:
|
||||
probleme.append(f"{key} < 0")
|
||||
# L_F und L_S dürfen auch nicht > L_rest sein (implizit durch L_S < 0)
|
||||
return (len(probleme) == 0, probleme)
|
||||
|
||||
|
||||
def md_tabelle(fall_name, h0_val, h1_val):
|
||||
"""Erzeugt Markdown-Tabelle. Fall wird aus h0/h1 abgeleitet."""
|
||||
l_rest = L1 - L_ES - L_AS
|
||||
delta_h = abs(h1_val - h0_val)
|
||||
richtung = "aufwärts" if h1_val >= h0_val else "abwärts"
|
||||
|
||||
lines = []
|
||||
lines.append(f"### {fall_name}")
|
||||
lines.append(f"H₀ = {h0_val:.3f} m, H₁ = {h1_val:.3f} m → **{richtung}**, "
|
||||
f"ΔH = {delta_h:.4f} m, L_rest = {l_rest:.3f} m\n")
|
||||
|
||||
if richtung == "aufwärts":
|
||||
lines.append("Formel: L_F = (ΔH + H_ES + H_AS + L_rest·tan α_S) / "
|
||||
"(tan α_F **+** tan α_S)")
|
||||
lines.append("")
|
||||
lines.append("Probe: H_F − H_S − H_ES − H_AS = ΔH\n")
|
||||
else:
|
||||
lines.append("Formel: L_F = (ΔH − H_ES − H_AS − L_rest·tan α_S) / "
|
||||
"(tan α_F **−** tan α_S)")
|
||||
lines.append("")
|
||||
lines.append("Probe: H_ES + H_F + H_S + H_AS = ΔH\n")
|
||||
|
||||
lines.append("| α_F [°] | L_F [m] | L_S [m] | H_F [m] | H_S [m] | Probe | Status |")
|
||||
lines.append("|--------:|--------:|--------:|--------:|--------:|------:|--------|")
|
||||
|
||||
for alpha_f_deg in ALPHA_F_LIST:
|
||||
erg = berechne(h0_val, h1_val, L1, L_ES, H_ES, L_AS, H_AS,
|
||||
alpha_f_deg, ALPHA_S)
|
||||
if erg is None:
|
||||
lines.append(f"| {alpha_f_deg} | — | — | — | — | — | ⚠ Nenner = 0 |")
|
||||
continue
|
||||
|
||||
gueltig, probleme = validierung(erg)
|
||||
status = "✓ gültig" if gueltig else f"✗ {', '.join(probleme)}"
|
||||
|
||||
lines.append(
|
||||
f"| {alpha_f_deg} "
|
||||
f"| {erg['L_F']:.4f} "
|
||||
f"| {erg['L_S']:.4f} "
|
||||
f"| {erg['H_F']:.4f} "
|
||||
f"| {erg['H_S']:.4f} "
|
||||
f"| {erg['probe']:.4f} "
|
||||
f"| {status} |"
|
||||
)
|
||||
lines.append("")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def grenzen():
|
||||
"""Erzeugt Übersichtstabellen: für welche (ΔH, L1) Kombinationen
|
||||
existieren gültige Lösungen? Zeigt den kleinsten gültigen α_F.
|
||||
ΔH von 0..5 m, L1 von 3..15 m."""
|
||||
delta_h_list = [0, 1, 2, 3, 4, 5]
|
||||
l1_list = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
|
||||
lines = []
|
||||
|
||||
for richtung in ("aufwärts", "abwärts"):
|
||||
lines.append(f"### {richtung.capitalize()}\n")
|
||||
lines.append("Zelle = kleinster gültiger α_F [°], "
|
||||
"**—** = keine Lösung\n")
|
||||
|
||||
# Header
|
||||
header = "| ΔH \\ L₁ |" + "|".join(f" {l1} m " for l1 in l1_list) + "|"
|
||||
sep = "|--------:|" + "|".join("------:" for _ in l1_list) + "|"
|
||||
lines.append(header)
|
||||
lines.append(sep)
|
||||
|
||||
for dh in delta_h_list:
|
||||
if richtung == "aufwärts":
|
||||
h0, h1 = 0, dh
|
||||
else:
|
||||
h0, h1 = dh, 0
|
||||
|
||||
row = f"| {dh} m |"
|
||||
for l1 in l1_list:
|
||||
min_alpha = None
|
||||
for alpha_f_deg in ALPHA_F_LIST:
|
||||
erg = berechne(h0, h1, l1, L_ES, H_ES, L_AS, H_AS,
|
||||
alpha_f_deg, ALPHA_S)
|
||||
if erg is not None:
|
||||
gueltig, _ = validierung(erg)
|
||||
if gueltig:
|
||||
min_alpha = alpha_f_deg
|
||||
break
|
||||
if min_alpha is not None:
|
||||
row += f" {min_alpha}° |"
|
||||
else:
|
||||
row += " — |"
|
||||
lines.append(row)
|
||||
lines.append("")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def main():
|
||||
md = []
|
||||
md.append("# Förderer-Berechnung (2D-Modell)\n")
|
||||
|
||||
md.append("## Gegebene Werte\n")
|
||||
md.append("| Parameter | Wert |")
|
||||
md.append("|-----------|-----:|")
|
||||
md.append(f"| H₀ | {H0:.3f} m |")
|
||||
md.append(f"| H₁ | {H1:.3f} m |")
|
||||
md.append(f"| L₁ | {L1:.3f} m |")
|
||||
md.append(f"| L_ES | {L_ES:.3f} m |")
|
||||
md.append(f"| H_ES | {H_ES:.3f} m |")
|
||||
md.append(f"| L_AS | {L_AS:.3f} m |")
|
||||
md.append(f"| H_AS | {H_AS:.3f} m |")
|
||||
md.append(f"| α_S | {ALPHA_S:.1f}° |")
|
||||
md.append("")
|
||||
|
||||
md.append("## Ergebnisse\n")
|
||||
|
||||
# Fall 1: Aufwärts – H0=2 → H1=5
|
||||
md.append(md_tabelle("Fall 1: Aufwärts", h0_val=H0, h1_val=H1))
|
||||
|
||||
# Fall 2: Abwärts – H0=5 → H1=2 (vertauscht!)
|
||||
md.append(md_tabelle("Fall 2: Abwärts", h0_val=H1, h1_val=H0))
|
||||
|
||||
md.append("## Grenzen der Varianten\n")
|
||||
md.append(grenzen())
|
||||
|
||||
result = "\n".join(md)
|
||||
print(result)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
```
|
||||
# Förderer-Berechnung (2D-Modell)
|
||||
|
||||
## Gegebene Werte
|
||||
|
||||
| Parameter | Wert |
|
||||
|-----------|-----:|
|
||||
| H₀ | 2.000 m |
|
||||
| H₁ | 5.000 m |
|
||||
| L₁ | 8.000 m |
|
||||
| L_ES | 1.000 m |
|
||||
| H_ES | 0.300 m |
|
||||
| L_AS | 1.000 m |
|
||||
| H_AS | 0.300 m |
|
||||
| α_S | 3.0° |
|
||||
|
||||
## Ergebnisse
|
||||
|
||||
### Fall 1: Aufwärts
|
||||
H₀ = 2.000 m, H₁ = 5.000 m → **aufwärts**, ΔH = 3.0000 m, L_rest = 6.000 m
|
||||
|
||||
Formel: L_F = (ΔH + H_ES + H_AS + L_rest·tan α_S) / (tan α_F **+** tan α_S)
|
||||
|
||||
Probe: H_F − H_S − H_ES − H_AS = ΔH
|
||||
|
||||
| α_F [°] | L_F [m] | L_S [m] | H_F [m] | H_S [m] | Probe | Status |
|
||||
|--------:|--------:|--------:|--------:|--------:|------:|--------|
|
||||
| 3 | 37.3460 | -31.3460 | 1.9572 | -1.6428 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 6 | 24.8517 | -18.8517 | 2.6120 | -0.9880 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 9 | 18.5702 | -12.5702 | 2.9412 | -0.6588 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 12 | 14.7735 | -8.7735 | 3.1402 | -0.4598 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 15 | 12.2190 | -6.2190 | 3.2741 | -0.3259 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 18 | 10.3741 | -4.3741 | 3.3708 | -0.2292 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 24 | 7.8661 | -1.8661 | 3.5022 | -0.0978 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 27 | 6.9660 | -0.9660 | 3.5494 | -0.0506 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 33 | 5.5776 | 0.4224 | 3.6221 | 0.0221 | 3.0000 | ✓ gültig |
|
||||
| 39 | 4.5401 | 1.4599 | 3.6765 | 0.0765 | 3.0000 | ✓ gültig |
|
||||
| 45 | 3.7195 | 2.2805 | 3.7195 | 0.1195 | 3.0000 | ✓ gültig |
|
||||
| 51 | 3.0408 | 2.9592 | 3.7551 | 0.1551 | 3.0000 | ✓ gültig |
|
||||
|
||||
### Fall 2: Abwärts
|
||||
H₀ = 5.000 m, H₁ = 2.000 m → **abwärts**, ΔH = 3.0000 m, L_rest = 6.000 m
|
||||
|
||||
Formel: L_F = (ΔH − H_ES − H_AS − L_rest·tan α_S) / (tan α_F **−** tan α_S)
|
||||
|
||||
Probe: H_ES + H_F + H_S + H_AS = ΔH
|
||||
|
||||
| α_F [°] | L_F [m] | L_S [m] | H_F [m] | H_S [m] | Probe | Status |
|
||||
|--------:|--------:|--------:|--------:|--------:|------:|--------|
|
||||
| 3 | — | — | — | — | — | ⚠ Nenner = 0 |
|
||||
| 6 | 39.5767 | -33.5767 | 4.1597 | -1.7597 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 9 | 19.6794 | -13.6794 | 3.1169 | -0.7169 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 12 | 13.0226 | -7.0226 | 2.7680 | -0.3680 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 15 | 9.6759 | -3.6759 | 2.5926 | -0.1926 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 18 | 7.6531 | -1.6531 | 2.4866 | -0.0866 | 3.0000 | ✗ L_S < 0, H_S < 0 |
|
||||
| 24 | 5.3092 | 0.6908 | 2.3638 | 0.0362 | 3.0000 | ✓ gültig |
|
||||
| 27 | 4.5624 | 1.4376 | 2.3247 | 0.0753 | 3.0000 | ✓ gültig |
|
||||
| 33 | 3.4934 | 2.5066 | 2.2686 | 0.1314 | 3.0000 | ✓ gültig |
|
||||
| 39 | 2.7537 | 3.2463 | 2.2299 | 0.1701 | 3.0000 | ✓ gültig |
|
||||
| 45 | 2.2009 | 3.7991 | 2.2009 | 0.1991 | 3.0000 | ✓ gültig |
|
||||
| 51 | 1.7637 | 4.2363 | 2.1780 | 0.2220 | 3.0000 | ✓ gültig |
|
||||
|
||||
|
||||
## Grenzen der Varianten
|
||||
|
||||
| Parameter | Wert |
|
||||
|-----------|-----:|
|
||||
| ΔH | 0 … 5 m |
|
||||
| L₁ | 3 … 15 m |
|
||||
| α_S | 3° |
|
||||
| L_ES, L_AS | 1.000 m |
|
||||
| H_ES, H_AS | 0.300 m |
|
||||
|
||||
Zelle = kleinster gültiger α_F [°], **—** = keine Lösung
|
||||
|
||||
### Aufwärts
|
||||
|
||||
| ΔH \ L₁ | 3 m | 4 m | 5 m | 6 m | 7 m | 8 m | 9 m | 10 m | 11 m | 12 m | 13 m | 14 m | 15 m |
|
||||
|--------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|
|
||||
| 0 m | 33° | 18° | 12° | 9° | 9° | 6° | 6° | 6° | 6° | 6° | 6° | 3° | 3° |
|
||||
| 1 m | — | 39° | 33° | 24° | 18° | 15° | 15° | 12° | 12° | 12° | 9° | 9° | 9° |
|
||||
| 2 m | — | — | 45° | 39° | 33° | 24° | 24° | 24° | 18° | 15° | 15° | 15° | 12° |
|
||||
| 3 m | — | — | 51° | 45° | 39° | 33° | 33° | 27° | 24° | 24° | 24° | 18° | 18° |
|
||||
| 4 m | — | — | — | 51° | 45° | 39° | 39° | 33° | 33° | 27° | 24° | 24° | 24° |
|
||||
| 5 m | — | — | — | — | 51° | 45° | 39° | 39° | 33° | 33° | 27° | 27° | 24° |
|
||||
|
||||
### Abwärts
|
||||
|
||||
| ΔH \ L₁ | 3 m | 4 m | 5 m | 6 m | 7 m | 8 m | 9 m | 10 m | 11 m | 12 m | 13 m | 14 m | 15 m |
|
||||
|--------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|------:|
|
||||
| 0 m | 33° | 18° | 12° | 9° | 9° | 6° | 6° | 6° | 6° | 6° | 6° | 3° | 3° |
|
||||
| 1 m | 24° | 12° | 9° | 6° | 6° | 6° | 6° | — | — | — | — | — | — |
|
||||
| 2 m | — | 39° | 27° | 24° | 18° | 15° | 12° | 12° | 9° | 9° | 9° | 9° | 9° |
|
||||
| 3 m | — | 51° | 39° | 33° | 27° | 24° | 24° | 18° | 15° | 15° | 15° | 12° | 12° |
|
||||
| 4 m | — | — | 51° | 45° | 39° | 33° | 27° | 24° | 24° | 24° | 18° | 18° | 15° |
|
||||
| 5 m | — | — | — | 51° | 45° | 39° | 33° | 33° | 27° | 24° | 24° | 24° | 24° |
|
||||
|
||||
**Lücke bei ΔH = 1 m, L₁ ≥ 10 m:** Im Abwärts-Fall ist der Zähler der L_F-Formel
|
||||
$(ΔH - H_{ES} - H_{AS}) - L_{rest} \cdot \tan(α_S)$. Bei ΔH = 1 m und L₁ = 10 m wird
|
||||
$L_{rest}$ = 8 m und der Zähler = (1 − 0,3 − 0,3) − 8 · tan 3° = 0,4 − 0,419 = −0,019.
|
||||
Da der Nenner für alle α_F > 3° positiv ist, wird L_F negativ — es gibt keine gültige Lösung.
|
||||
|
||||
Weil bei so kleinem Höhenunterschied die Reststrecke mit 3°-Neigung allein schon mehr Höhe verbraucht als verfügbar ist.
|
||||
Die Reststrecke allein erzeugt durch die 3°-Neigung der S-Strecke plus H_ES + H_AS bereits mehr Höhe als der verfügbare Höhenunterschied ΔH = 1 m hergibt.
|
||||
@@ -1 +1 @@
|
||||
[{"id":"c_ILS","name":"ILS","hasShapes":false,"items":[{"id":"c_Kreiselmodule","name":"Kreisel-Module","hasShapes":true},{"id":"c_Zusatzmodul","name":"Zusatzmodul","hasShapes":true},{"id":"c_Foerderer","name":"Förderer","hasShapes":true},{"id":"c_Kurven","name":"Gefällestrecke","hasShapes":true}]},{"id":"c10","name":"PBU","hasShapes":true},{"id":"c_Background","name":"Background","hideName":true,"hasShapes":true},{"id":"c_Parts","name":"Parts","description":"Shapes used for creating new Assemblies while Session","hasShapes":true},{"id":"c_Session","name":"Session","hasShapes":true},{"id":"c_Omniflo","name":"Omniflo","hasShapes":false,"items":[{"id":"c_Boegen","name":"Bögen","hasShapes":true},{"id":"c_Gerade","name":"Aluprofil Gerade","hasShapes":true},{"id":"c_Weichen_90","name":"Weiche 90°","hasShapes":true},{"id":"c_Weichen_45","name":"Weiche 45°","hasShapes":true},{"id":"c_Weichen_Parallel","name":"Weichen Parallel","hasShapes":true},{"id":"c_Weichenkoerper","name":"Weichenkörper","hasShapes":true},{"id":"c_Weichenkombinationen","name":"Weichenkombinationen","hasShapes":true},{"id":"c_TEFElemente","name":"TEF Elemente","hasShapes":true},{"id":"c_KettenFoerderer","name":"KettenFörderer","hasShapes":true}]},{"id":"c_OmnifloBogen","name":"Omniflo Bogen","hasShapes":true,"items":[{"id":"c_Boegen_90","name":"Bögen 90°","hasShapes":true}]},{"id":"c_OmnifloWeiche","name":"Omniflo Weiche","hasShapes":true}]
|
||||
[{"id":"c_ILS","name":"ILS","hasShapes":false,"items":[{"id":"c_Kreiselmodule","name":"Kreisel-Module","hasShapes":true},{"id":"c_Zusatzmodul","name":"Zusatzmodul","hasShapes":true},{"id":"c_Foerderer","name":"Förderer","hasShapes":true},{"id":"c_Kurven","name":"Gefällestrecke","hasShapes":true}]},{"id":"c10","name":"PBU","hasShapes":true},{"id":"c_Background","name":"Background","hideName":true,"hasShapes":true},{"id":"c_Parts","name":"Parts","description":"Shapes used for creating new Assemblies while Session","hasShapes":true},{"id":"c_Session","name":"Session","hasShapes":true},{"id":"c_Omniflo","name":"Omniflo","hasShapes":false,"items":[{"id":"c_Boegen","name":"Bögen","hasShapes":true},{"id":"c_Gerade","name":"Aluprofil Gerade","hasShapes":true},{"id":"c_Weichen_90","name":"Weiche 90°","hasShapes":true},{"id":"c_Weichen_45","name":"Weiche 45°","hasShapes":true},{"id":"c_Weichen_Parallel","name":"Weichen Parallel","hasShapes":true},{"id":"c_Weichenkoerper","name":"Weichenkörper","hasShapes":true},{"id":"c_Weichenkombinationen","name":"Weichenkombinationen","hasShapes":true},{"id":"c_TEFElemente","name":"TEF Elemente","hasShapes":true},{"id":"c_KettenFoerderer","name":"KettenFörderer","hasShapes":true}]},{"id":"c_OmnifloBogen","name":"Omniflo Bogen","hasShapes":true,"items":[{"id":"c_Boegen_90","name":"Bögen 90°","hasShapes":true}]},{"id":"c_OmnifloWeiche","name":"Omniflo Weiche","hasShapes":true},{"id":"c_vario_vertikal_bogen","name":"Varioboegen vertikal","hasShapes":true}]
|
||||
|
Before Width: | Height: | Size: 512 B After Width: | Height: | Size: 553 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 527 B After Width: | Height: | Size: 568 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 465 B After Width: | Height: | Size: 531 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 475 B After Width: | Height: | Size: 540 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |