Add Etage-Typ-Unterstuetzung zu test_mubea.lsp + Testfall fuer Objekt 0061
mubea:build-vario(-one) liest jetzt ein optionales "typ"-Feld ("standard"
Default, "etage") und dispatcht auf berechne-etage/etage-foerderanlage-
einfuegen bzw. vf-block-erstellen mit dem passenden Typ. Neuer Testfall
VF_Mubea_Etage_0061 bildet Objekt-ID 0061 aus Mubea_Quali.dxf nach
(deltaL=12790, deltaH=0, seite=links, Winkel=9, L_GF1=1602.4).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+23
-10
@@ -3,9 +3,12 @@
|
||||
;;
|
||||
;; Liest tests/testdata/mubea.json und baut in EINER Zeichnung:
|
||||
;; - Kreisel (Eintraege mit "id", Block KREISEL_*) via kreisel-insert-script
|
||||
;; - Vario (test_id "VF_*") Block VF_* via variofoerderer-einfuegen
|
||||
;; - Vario (test_id "VF_*") Block VF_* via variofoerderer-einfuegen/
|
||||
;; etage-foerderanlage-einfuegen
|
||||
;; + vf-block-erstellen
|
||||
;; (deltaL/L_VF werden fuer winkel+deltaH geloest, L_GF Split 500/4230;
|
||||
;; optionales "typ": "standard" (Default) oder "etage" waehlt den
|
||||
;; Foerderanlagen-Typ (siehe vf_standard.lsp/vf_etage.lsp);
|
||||
;; "anzahl"/"delta_y"/"delta_x" wie bei Gefaelle: Template->mehrere
|
||||
;; Foerderer mit fortlaufend suffixiertem test_id, _01.._anzahl)
|
||||
;; - Gefaelle (test_id "GF_*", Modus 1) Block GF_* via gefaellestrecke-einfuegen
|
||||
@@ -111,17 +114,21 @@
|
||||
;; erzwingen in test_foerderer.lsp), statt den automatisch kleinsten
|
||||
;; gueltigen Winkel zu nehmen. L_GF1 aus JSON ist der Vorlauf-Zielwert;
|
||||
;; L_GF2 (Nachlauf) ist der Rest (L_GF_gesamt - L_GF1).
|
||||
(defun mubea:build-vario-one (tid richtung deltaL deltaH winkel-soll gf1-ziel seite hz
|
||||
(defun mubea:build-vario-one (tid typ richtung deltaL deltaH winkel-soll gf1-ziel seite hz
|
||||
startpunkt / ergebnis winkel-treffer best-winkel L_GF L_VF
|
||||
gf1 gf2 hoehe-bis lastEnt ent vf-nummer)
|
||||
(if (or (null seite) (= seite "")) (setq seite "links"))
|
||||
(if (or (null typ) (= typ "")) (setq typ "standard"))
|
||||
(if (null hz) (setq hz 0.0) (setq hz (float hz)))
|
||||
(princ (strcat "\n [VARIO] " tid " -> deltaL=" (rtos deltaL 2 0)
|
||||
(princ (strcat "\n [VARIO] " tid " (" typ ") -> deltaL=" (rtos deltaL 2 0)
|
||||
" deltaH=" (rtos deltaH 2 0)
|
||||
" Winkel(soll)=" (if winkel-soll (itoa (fix winkel-soll)) "auto")
|
||||
" L_GF1-Ziel=" (rtos gf1-ziel 2 0)))
|
||||
|
||||
(setq ergebnis (berechne-alle-winkel deltaL deltaH richtung nil))
|
||||
(setq ergebnis
|
||||
(if (= typ "etage")
|
||||
(berechne-etage deltaL deltaH richtung seite)
|
||||
(berechne-alle-winkel deltaL deltaH richtung nil)))
|
||||
(setq best-winkel (car ergebnis) L_GF (cadr ergebnis) L_VF (caddr ergebnis))
|
||||
(if (numberp winkel-soll)
|
||||
(progn
|
||||
@@ -146,7 +153,9 @@
|
||||
|
||||
(setq hoehe-bis (if (= richtung "Auf") deltaH (- deltaH)))
|
||||
(setq lastEnt (vf-lastent-ohne-attribute))
|
||||
(variofoerderer-einfuegen deltaL deltaH richtung best-winkel gf1 gf2 L_VF startpunkt seite hz)
|
||||
(if (= typ "etage")
|
||||
(etage-foerderanlage-einfuegen deltaL deltaH richtung best-winkel gf1 gf2 L_VF startpunkt seite hz)
|
||||
(variofoerderer-einfuegen deltaL deltaH richtung best-winkel gf1 gf2 L_VF startpunkt seite hz))
|
||||
;; Blocknummer wie in der Produktion ueber vf-next-number holen (NICHT fest
|
||||
;; auf 1): vf-next-number ueberspringt bereits belegte VF_n-Nummern. Mit
|
||||
;; einer festen 1 traf das _.-BLOCK des ZWEITEN Foerderers auf den schon
|
||||
@@ -154,7 +163,7 @@
|
||||
;; damit Basispunkt/Auswahlsatz der festen Antwortfolge, meldet "Eintrag
|
||||
;; kann nicht erkannt werden" und der Befehl bleibt offen (Haenger).
|
||||
(setq vf-nummer (vf-next-number))
|
||||
(setq ent (vf-block-erstellen "standard" seite vf-nummer 0 0 hoehe-bis
|
||||
(setq ent (vf-block-erstellen typ seite vf-nummer 0 0 hoehe-bis
|
||||
deltaH deltaL L_VF gf1 gf2 richtung best-winkel
|
||||
startpunkt lastEnt hz "0" "Schoenenberger Geruest"))
|
||||
(if (or (null ent) (/= (type ent) 'ENAME))
|
||||
@@ -162,8 +171,11 @@
|
||||
;; SSG_VF_EDIT-XDATA schreiben (wie vfs-standard-dialog-berechnen-
|
||||
;; einfuegen) - sonst erkennt VARIOFOERDERER_EDIT den Block beim
|
||||
;; Doppelklick nicht als "per Dialog erstellt" und verweigert die
|
||||
;; Bearbeitung (vfs-edit-keine-xdata).
|
||||
(if (and ent (= (type ent) 'ENAME)) (vfs-xdata-schreiben ent hz))
|
||||
;; Bearbeitung (vfs-edit-keine-xdata). NUR fuer typ="standard": das
|
||||
;; XDATA-Schema markiert den Block hart als "standard" - bei einem
|
||||
;; Etage-Block wuerde ein spaeterer Doppelklick faelschlich versuchen,
|
||||
;; ihn als Standard-Typ neu aufzubauen.
|
||||
(if (and ent (= (type ent) 'ENAME) (= typ "standard")) (vfs-xdata-schreiben ent hz))
|
||||
(mubea:ent-json tid "vario" ent))
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: deltaL=" (rtos deltaL 2 0)
|
||||
@@ -179,9 +191,10 @@
|
||||
;; bei genau einer Kopie bleibt der Template-Name erhalten (kompatibel zur
|
||||
;; frueheren Einzelbenennung).
|
||||
;; Rueckgabe: LISTE von Ergebnis-JSON-Strings (eine je Kopie).
|
||||
(defun mubea:build-vario (e / tid0 richtung deltaL deltaH winkel-soll gf1-ziel seite hz
|
||||
(defun mubea:build-vario (e / tid0 typ richtung deltaL deltaH winkel-soll gf1-ziel seite hz
|
||||
start0 anzahl dy dx i off nr tid startpunkt ergebnisse)
|
||||
(setq tid0 (ssg-val e "test_id")
|
||||
typ (ssg-val e "typ")
|
||||
richtung (ssg-val e "richtung")
|
||||
deltaL (float (ssg-val e "deltaL"))
|
||||
deltaH (float (ssg-val e "deltaH"))
|
||||
@@ -207,7 +220,7 @@
|
||||
tid0))
|
||||
(setq startpunkt (list (+ (car start0) (* dx off)) (+ (cadr start0) (* dy off)) (caddr start0)))
|
||||
(setq ergebnisse
|
||||
(cons (mubea:build-vario-one tid richtung deltaL deltaH winkel-soll gf1-ziel seite hz startpunkt)
|
||||
(cons (mubea:build-vario-one tid typ richtung deltaL deltaH winkel-soll gf1-ziel seite hz startpunkt)
|
||||
ergebnisse))
|
||||
(setq i (1+ i))
|
||||
)
|
||||
|
||||
Vendored
+15
@@ -161,6 +161,21 @@
|
||||
"rotation": 180,
|
||||
"assigned_to": "VF_Schnitt_C"
|
||||
},
|
||||
{
|
||||
"test_id": "VF_Mubea_Etage_0061",
|
||||
"typ": "etage",
|
||||
"richtung": "Auf",
|
||||
"deltaL": 12790,
|
||||
"deltaH": 0,
|
||||
"seite": "links",
|
||||
"winkel": 9,
|
||||
"L_GF1": 1602.4,
|
||||
"hz": 270.0,
|
||||
"x": -400,
|
||||
"y": 147.615,
|
||||
"z": 1467,
|
||||
"comment": "Nachbau von Objekt ID 0061 (Block VF_5) aus Mubea_Quali.dxf per Etage-VarioFoerderer (FOERDERANLAGE Typ 2 / Werteingabe). Original-Attribute: DELTA_L=12790mm, DELTA_H=0mm, SEITE_AS/ES=links, MOTORSEITE=rechts (Default), Winkel=9°, L_GF=1602,1602mm, L_VF=4535mm, ANZAHL_SEPARATOR=2. hz=270 reproduziert die im Original beobachtete Baurichtung (-Y lokal); die zusaetzliche 180°-Rotation der finalen INSERT im Original duerfte eine manuelle Nachplatzierung in der Gesamtzeichnung sein, nicht Teil der parametrischen Erzeugung."
|
||||
},
|
||||
{
|
||||
"test_id": "GF_Mubea",
|
||||
"modus": 1,
|
||||
|
||||
Reference in New Issue
Block a user