feat: VF-Linienzug Linie-GF - Separator VOR/NACH, Endpunkt/Zielhoehe-Vorwahl, steigende GF (Sonderfall bis 3 Grad)
Auf der neuen Kollegen-Architektur (Stufe 0-2: Spec/Journal/Replay-System in vf_spec.lsp, Frage-Schale/Bauteil-Trennung) neu aufgebaut, nachdem der urspruengliche Stand (Commit e76e24e) auf einer aelteren Basis beruhte und per Rebase-Analyse als eigenstaendige, unabhaengige Erweiterung erkannt wurde (der Kollege hat nichts entfernt - diese Features existierten vorher nur lokal uncommitted). Drei Erweiterungen fuer "Neue Linie: GF" in vf-linienzug-modus: - Separator VOR/NACH direkt vor bzw. nach der Gefaellestrecke einfuegbar. - Aeussere Vorwahl "Wie soll die Laenge bestimmt werden?": Endpunkt waehlen (bisheriges Verhalten) oder Zielhoehe zuerst festlegen (Winkel wird daraus berechnet). - Dritte Option "Steigende GF" (Sonderfall, 0 bis 3 Grad): erlaubt eine GF, die statt zu fallen steigt. Neuer Helfer vfl-bogen-uebergang erkennt anhand der tatsaechlichen Frame-Neigung, ob 0/1/2 Uebergangsboegen (Vario_Bogen_auf_3/ab_3) noetig sind, und baut sie automatisch - im Normalfall (fallend->fallend) ein No-Op. Lisp/vf_spec.lsp (Kollegen-Spec/Headless-Bau-System) um die drei neuen Felder (laenge_modus/sep_vor/sep_nach/steigend_modus) erweitert, mit Defaults, die alte Specs unveraendert lassen - haelt die "Spec-Pfad == interaktiver Pfad"-Invariante seines Systems (TEST_HUNDM05/VF_SPEC_BAU) intakt. tests/test_vf_spec.lsp entsprechend mit neuen Testfaellen ergaenzt. Neuer Regressionstest TEST_LINIENZUG_STUFE2 (linienzug_tests_stufe2.json) sowie Anleitung doc/vf_linienzug_modus1_anleitung.md aus dem urspruenglichen Commit uebernommen; die Gefaelle-Hoehe/Winkel-Optionsreihenfolge im Testdatensatz an die jetzt geltende (Kollegen-)Konvention angepasst. Offen (bewusst zurueckgestellt): lib/vf_spec_export.py (Python-Vorwaerts- Emitter, Pendant zu vf_spec.lsp) noch nicht nachgezogen - siehe Folge-Commit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f4edb7339d
commit
23d653c4b3
8 files changed
+1092
-148
No files matched your search
+42
-10
@@ -33,7 +33,10 @@
|
||||
;;
|
||||
;; Aufruf in BricsCAD:
|
||||
;; (load (strcat (getenv "DXFMAKRO") "/tests/test_linienzug.lsp"))
|
||||
;; TEST_LINIENZUG
|
||||
;; TEST_LINIENZUG (Standard-Szenario, linienzug_tests.json, in
|
||||
;; alltests.json/SSG_RUN_ALL_TESTS registriert)
|
||||
;; TEST_LINIENZUG_STUFE2 (Stufe-2-Fallback-Regressionstest Kettenende,
|
||||
;; linienzug_tests_stufe2.json, manueller Aufruf)
|
||||
;; ============================================================
|
||||
|
||||
;; Naechste Skript-Antwort liefern (FIFO). Bei leerer Queue Warnung + "".
|
||||
@@ -126,8 +129,17 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defun c:TEST_LINIENZUG ( / json-datei daten meta schritte-anz rest-anz status
|
||||
old-vgp old-gs old-gi old-gr err)
|
||||
;; --- Gemeinsamer Replay-Kern, von allen c:TEST_LINIENZUG*-Befehlen genutzt ---
|
||||
;; befehl-anzeige: nur fuer die Konsolen-Ueberschrift/ssg-start (String).
|
||||
;; test-id: Bezeichner fuer das *linienzug-test-results*-JSON (run-all-
|
||||
;; Konvention, siehe linienzug:export-results).
|
||||
;; Rueckgabe: (status schritte-anz rest-anz) - status ist "OK"/"ABWEICHUNG"/
|
||||
;; "FEHLER". Setzt zusaetzlich *linienzug-test-results* (letzter Aufruf
|
||||
;; gewinnt - identisch zum bisherigen Verhalten von c:TEST_LINIENZUG, das
|
||||
;; ebenfalls nur einen einzigen Testfall pro Lauf kennt).
|
||||
(defun tlz-run-datei (json-datei test-id befehl-anzeige /
|
||||
daten meta schritte-anz rest-anz status
|
||||
old-vgp old-gs old-gi old-gr err)
|
||||
(if (or (not *lib-initialized*) (null bogen-auf)) (init-bibliothek))
|
||||
(if (null (car (atoms-family 1 '("VF-LINIENZUG-MODUS"))))
|
||||
(progn
|
||||
@@ -138,12 +150,10 @@
|
||||
)
|
||||
|
||||
(princ "\n================================================================")
|
||||
(princ "\n TEST_LINIENZUG - VF-Linienzug Replay-Test")
|
||||
(princ (strcat "\n " befehl-anzeige " - VF-Linienzug Replay-Test"))
|
||||
(princ "\n================================================================")
|
||||
|
||||
;; --- Eingabe-Skript aus JSON laden ---
|
||||
(setq json-datei
|
||||
(strcat (getenv "DXFMAKRO") "\\tests\\testdata\\linienzug_tests.json"))
|
||||
(setq daten (ssg-load-json json-datei))
|
||||
(if (null daten)
|
||||
(progn
|
||||
@@ -158,7 +168,7 @@
|
||||
(princ (strcat "\n Eingabe-Schritte: " (itoa schritte-anz)))
|
||||
(if meta (princ (strcat "\n Szenario: " (ssg-val meta "beschreibung"))))
|
||||
|
||||
(ssg-start "TEST_LINIENZUG" '(("OSMODE") ("ATTREQ") ("ATTDIA")))
|
||||
(ssg-start befehl-anzeige '(("OSMODE") ("ATTREQ") ("ATTDIA")))
|
||||
(setvar "OSMODE" 0)
|
||||
(setvar "ATTREQ" 0)
|
||||
(setvar "ATTDIA" 0)
|
||||
@@ -192,11 +202,11 @@
|
||||
(if (vl-catch-all-error-p err)
|
||||
(progn
|
||||
(setq status "FEHLER")
|
||||
(princ (strcat "\n TEST_LINIENZUG: FEHLER -> "
|
||||
(princ (strcat "\n " befehl-anzeige ": FEHLER -> "
|
||||
(vl-catch-all-error-message err))))
|
||||
(progn
|
||||
(setq status (if (= rest-anz 0) "OK" "ABWEICHUNG"))
|
||||
(princ "\n TEST_LINIENZUG: Kette gebaut.")
|
||||
(princ (strcat "\n " befehl-anzeige ": Kette gebaut."))
|
||||
(if (> rest-anz 0)
|
||||
(princ (strcat "\n WARNUNG: " (itoa rest-anz)
|
||||
" Skript-Eintraege NICHT verbraucht (Ablauf weicht ab)."))
|
||||
@@ -214,12 +224,34 @@
|
||||
;; --- Ergebnis fuer run-all als JSON-String ablegen ---
|
||||
(setq *linienzug-test-results*
|
||||
(strcat " {\n"
|
||||
" \"test_id\": \"LZ_Standard\",\n"
|
||||
" \"test_id\": \"" test-id "\",\n"
|
||||
" \"status\": \"" status "\",\n"
|
||||
" \"schritte_gesamt\": " (itoa schritte-anz) ",\n"
|
||||
" \"schritte_offen\": " (itoa rest-anz) "\n"
|
||||
" }"))
|
||||
|
||||
(ssg-end)
|
||||
(list status schritte-anz rest-anz)
|
||||
)
|
||||
|
||||
(defun c:TEST_LINIENZUG ( / json-datei)
|
||||
(setq json-datei
|
||||
(strcat (getenv "DXFMAKRO") "\\tests\\testdata\\linienzug_tests.json"))
|
||||
(tlz-run-datei json-datei "LZ_Standard" "TEST_LINIENZUG")
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; Zweiter Testfall (Regressionstest, in dieser Session neu aufgenommen):
|
||||
;; Stufe-2-Fallback beim Kettenende (typ=VF winkel=0, horizontales VF + GF-
|
||||
;; Ausgleich), siehe Beschreibung/Kommentare in linienzug_tests_stufe2.json.
|
||||
;; Eigenstaendiger Befehl statt zweitem Array-Eintrag in linienzug_tests.json,
|
||||
;; damit LZ_Standard unangetastet bleibt (jede JSON-Datei bleibt ein
|
||||
;; einzelnes Szenario, wie von tlz-daten->queue/-meta erwartet). NICHT in
|
||||
;; tests/alltests.json registriert - manueller Einzelaufruf, bei Bedarf
|
||||
;; spaeter dort ergaenzen.
|
||||
(defun c:TEST_LINIENZUG_STUFE2 ( / json-datei)
|
||||
(setq json-datei
|
||||
(strcat (getenv "DXFMAKRO") "\\tests\\testdata\\linienzug_tests_stufe2.json"))
|
||||
(tlz-run-datei json-datei "LZ_Stufe2_Kettenende" "TEST_LINIENZUG_STUFE2")
|
||||
(princ)
|
||||
)
|
||||
Reference in new issue
Block a user