HundM05-Testfall und DXF-Analyse-Skripte
- lib/dxf_scan_components.py: erkennt ILS-/Omniflo-Komponenten in fremden
Projektzeichnungen und schreibt sie im Testdaten-JSON-Schema aus
- lib/dxf_abbild.py: getreue Abbildung der Bauteile einer Fremdzeichnung
(Attribute, Weltkoordinaten, Unterkomponenten) ohne Interpretation
- tests/test_hundm05.{lsp,py}, testdata/hundm05.json, conftest-Fixtures und
alltests.json-Eintrag fuer den Kreisel-Abschnitt aus ST500592_05.dxf
- menu: TEST_HUNDM05 im Testmenue, Connection_Insert/Edit in SSG_LIB.cui
- Doku: hartkodierte Pfade durch (getenv "DXFMAKRO") ersetzt
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vendored
+48
-1
@@ -49,6 +49,7 @@ Grad). Richtung `hz`/`hz_grad`: 0=Ost(+X), 90=Nord(+Y), 180=West(-X),
|
||||
| 4.3 | Omniflo TEF/Zubehoer | `omni:insert-dxf` (fester Sivasnr) | Position ja, Punkt interaktiv | 1 Punkt (nur via Wrapper) | [#43](#43-omniflo-tefzubehoer) |
|
||||
| 4.4 | Omniflo TV_*/APBW_* | — (DUMMY) | **nein** | — | [#44](#44-omniflo-tv_-apbw_) |
|
||||
| 5 | Separator/Scanner/Sensor | `ils-insert-sensor (fname)` + `_.INSERT` | **nein** (Schleife) | 1 Punkt `x,y,z` (nur via Wrapper) | [#5](#5-separatorscannersensor) |
|
||||
| 6 | Waagrechte Foerderstrecke (`gerade`) | `insert-hz-scaled-block-by-ks (blockname startpunkt laenge hz vert)` | **ja** | 1 Punkt `startpunkt` (+ `endpunkt` als Doku) | [#6](#6-waagrechte-foerderstrecke-gerade) |
|
||||
|
||||
Legende Scriptbar-Spalte:
|
||||
- **ja** — direkt per JSON aufrufbar.
|
||||
@@ -541,7 +542,53 @@ Vollstaendiges JSON (wie in `mubea.json`s Separator-Eintraegen):
|
||||
|
||||
---
|
||||
|
||||
## 6. Zusammenfassung: scriptbar vs. nicht scriptbar
|
||||
## 6. Waagrechte Foerderstrecke (`gerade`)
|
||||
|
||||
Produktionsfunktion:
|
||||
`insert-hz-scaled-block-by-ks (blockname startpunkt laenge hz-winkel vert-winkel)`
|
||||
(`Lisp/vf_etage.lsp`) — dieselbe Primitive, mit der der Etage-Foerderer seine
|
||||
waagrechten Abschnitte baut. Skaliert `Staustrecke_SP_1000_mm` auf `laenge`
|
||||
(Massstab = `laenge / 1000`) und richtet sie ueber `KS_EIN`/`KS_AUS` am
|
||||
`startpunkt` aus.
|
||||
|
||||
Dieser Typ entstand beim Nachbau von `results/ST500592_05.dxf`: ein
|
||||
Antriebs-/Umlenkstation-Paar **ohne** Hoehendifferenz ist fachlich kein
|
||||
VarioFoerderer. Dessen Solver (`berechne-standard` →
|
||||
`berechne-alle-winkel`) muss einen Bogenwinkel aus der Kandidatenliste
|
||||
3…51 Grad waehlen, was bei `deltaH ≈ 0` nicht aufgeht — der Eintrag waere
|
||||
unbaubar. `lib/dxf_scan_components.py` trennt solche Paare darum ueber
|
||||
`GERADE_MAX_DELTA_H` (10 mm) ab und gibt sie als `gerade` aus.
|
||||
|
||||
| Feld | Typ | Pflicht | Bedeutung | Default |
|
||||
|---|---|---|---|---|
|
||||
| `test_id` | string | **ja** | Kennung, Praefix `GERADE_` (steuert den Dispatcher) | - |
|
||||
| `typ` | string | nein | `"gerade"` (Dokumentation, nicht ausgewertet) | - |
|
||||
| `laenge` | real (mm) | **ja** | horizontale Laenge; Massstab der Staustrecke | - |
|
||||
| `hz` | real (Grad) | nein | Fahrtrichtung in der XY-Ebene | 0.0 |
|
||||
| `startpunkt` | [x,y,z] (mm) | **ja** | Anfangspunkt (`KS_EIN` wird hierhin gelegt) | - |
|
||||
| `endpunkt` | [x,y,z] (mm) | nein | Endpunkt — reine Dokumentation/Herkunft, **kein** Parameter; die Geometrie folgt aus `startpunkt` + `laenge` + `hz` | - |
|
||||
|
||||
`vert-winkel` wird vom Treiber fest auf `0` gesetzt (waagrecht). Die Funktion
|
||||
gibt den **Ausgangspunkt** zurueck, nicht die Entity — ein Treiber holt den
|
||||
Block ueber `(entlast)`. Bei fehlender Blockdatei ruft sie `(exit)` auf und
|
||||
wuerde einen Testlauf abbrechen, darum vorher mit `ssg-ils-block-laden`
|
||||
pruefen (so macht es `hundm05:build-gerade` in `tests/test_hundm05.lsp`).
|
||||
|
||||
Vollstaendiges JSON (wie in `hundm05.json`):
|
||||
```json
|
||||
{
|
||||
"test_id": "GERADE_HundM05_08",
|
||||
"typ": "gerade",
|
||||
"laenge": 3305.26,
|
||||
"hz": 143.35,
|
||||
"startpunkt": [223150.89, 152953.65, 0.0],
|
||||
"endpunkt": [220499.01, 154926.53, 0.0]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Zusammenfassung: scriptbar vs. nicht scriptbar
|
||||
|
||||
| Element | Produktionsfunktion | Scriptbar? |
|
||||
|---|---|---|
|
||||
|
||||
Reference in New Issue
Block a user