feat: eingang_hoehe="auto" auf Python-Seite nachgezogen, hundm05.json bereinigt
Lisp (vf_linienzug.lsp/vf_spec.lsp): - vsp-eingang-hoehe unterstuetzt jetzt "auto" (NIL-Token statt REAL) - bewusst keine Zahl vorgeben, der Bauablauf berechnet seinen eigenen Vorschlag, wie bei leerer Konsoleneingabe - vfl-journal-reset-lauf: internes Reset innerhalb von vf-linienzug-modus/ -modus2 loescht *vfl-replay-queue*/*vflw-pending* nicht mehr mit (Bug: REPLAY-getriebener Bau (vsp-bau-aus-spec) brach mitten in der Kette ab, weil eine noch unverbrauchte Queue verworfen wurde) Python-Gegenstueck nachgezogen (lib/vf_linienzug_grammatik.py, lib/vf_spec_export.py, lib/vf_journal_export.py): - NIL-Token-Unterstuetzung fuer eingang_hoehe="auto" im gemeinsamen Parser-Kern, im Schreiber (SpecSchreiber) und in der Protokoll-Annotation - gf_verteilung ist im Schreiber jetzt an der Feldpraesenz in der Spec festgemacht statt an einem Grammatik-Flag (selbstbeschreibend, deckt Specs mit und ohne diese Frage ab, ohne dass der Aufrufer die Grammatik kennen muss) - Rundlauf-Pruefung (main(), test_verlustfrei) toleriert jetzt die bekannte, schon dokumentierte Erweiterung um drei neue Linie-GF-Pflichtfragen (ist_teilfolge statt exakter Gleichheit) - test_gleiche_journale_wie_protokoll: alle 5 Ketten in hundm05.json weichen inzwischen vom Rohprotokoll ab (Kette 1 bewusst wegen eingang_hoehe, Ketten 2-5 schon laenger wegen Handkorrektur gegen echte DXF-Positionen) - expliziter Skip mit Begruendung statt leerem Loop tests/testdata/hundm05.json: - mm-Werte (dl, Start-/Stuetzpunkte, Koordinaten der Nachtrag-Objekte) auf eine Nachkommastelle gerundet - nicht abgefragte Kopf-Metadaten entfernt (beschreibung, sivas_id, sivas_bezeichnung, planquadrat, block, dxf_handle) - nur quelle bleibt Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
6d15c6be13
commit
23d79ec354
+23
-4
@@ -264,6 +264,19 @@
|
||||
(setq *vfl-journal* '() *vfl-replay-queue* nil *vfl-seg-glied-letzte* 0)
|
||||
(if (boundp '*vflw-pending*) (setq *vflw-pending* nil)))
|
||||
|
||||
;; Wie vfl-journal-reset, aber OHNE *vfl-replay-queue*/*vflw-pending*/die
|
||||
;; Meldungs-Sammler zu loeschen. Fuer den Aufruf INNERHALB von
|
||||
;; vf-linienzug-modus/-modus2 selbst (siehe dortige Kommentare): die
|
||||
;; REPLAY-getriebenen Aufrufer (vsp-bau-aus-spec) haben *vfl-replay-queue*
|
||||
;; per vfl-journal-replay-start VOR dem Aufruf absichtlich befuellt - ein
|
||||
;; voller Reset hier wirft die noch unverbrauchte Queue mitten im Bau weg
|
||||
;; (realer Bug: HEADLESS-ABBRUCH direkt nach der AS-Element-Praeambel,
|
||||
;; obwohl die Queue laut Debug-Log noch Eintraege hatte). Der eigentliche
|
||||
;; Zweck - *vfl-journal* nicht ueber mehrere Ketten derselben Sitzung
|
||||
;; hinweg wachsen zu lassen - bleibt erhalten.
|
||||
(defun vfl-journal-reset-lauf ()
|
||||
(setq *vfl-journal* '() *vfl-seg-glied-letzte* 0))
|
||||
|
||||
;; Eintrag anhaengen (vorn, da Reverse-Reihenfolge).
|
||||
;; Zusaetzlich (falls ein Debug-Schalter fuer die aktuelle Sitzung eine .dbg-
|
||||
;; Datei geoeffnet hat, siehe ssg_dbg.lsp/dbg-schalter-open) wird jeder
|
||||
@@ -6113,8 +6126,12 @@
|
||||
;; stehen und wurden der naechsten Kette per (cons ...) VORANgestellt. Real
|
||||
;; beobachteter Bug: eine fremde Kette (anderer Test/Bau) landete mit in der
|
||||
;; XDATA der aktuellen Kette, mit Fehlfunktionen in der Attribut-/XDATA-
|
||||
;; Erzeugung (u.a. "bad argument type ... at [itoa]").
|
||||
(vfl-journal-reset)
|
||||
;; Erzeugung (u.a. "bad argument type ... at [itoa]"). vfl-journal-reset-
|
||||
;; lauf statt vfl-journal-reset: NICHT *vfl-replay-queue* mitloeschen -
|
||||
;; ein REPLAY-getriebener Aufrufer (vsp-bau-aus-spec) hat sie ueber
|
||||
;; vfl-journal-replay-start bereits VOR diesem Aufruf befuellt (siehe
|
||||
;; Kommentar bei vfl-journal-reset-lauf).
|
||||
(vfl-journal-reset-lauf)
|
||||
|
||||
(while (not fertig)
|
||||
;; --- Naechstes Element bestimmen ---
|
||||
@@ -9133,8 +9150,10 @@
|
||||
(vfl-acc-reset)
|
||||
;; Siehe Kommentar bei vf-linienzug-modus: *vfl-journal* wurde bisher nie
|
||||
;; zurueckgesetzt und konnte Eintraege einer vorigen Kette (Modus 1 ODER 2)
|
||||
;; in dieselbe Sitzung hineintragen.
|
||||
(vfl-journal-reset)
|
||||
;; in dieselbe Sitzung hineintragen. vfl-journal-reset-lauf statt
|
||||
;; vfl-journal-reset: NICHT *vfl-replay-queue* mitloeschen (siehe dortiger
|
||||
;; Kommentar) - derselbe Grund wie in vf-linienzug-modus.
|
||||
(vfl-journal-reset-lauf)
|
||||
(setq anzahl-gf 0 anzahl-vf 0 frame nil)
|
||||
;; --- Abbruch-Sicherung ab hier scharf (analog Modus 1, siehe dortiger
|
||||
;; Kommentar) - Phase A (oben) baut noch keine Geometrie, ein Abbruch
|
||||
|
||||
+13
-1
@@ -245,9 +245,21 @@
|
||||
;; GF1 und damit keine Frage - dann fehlt das Feld. Ob der Fall ansteht, haengt
|
||||
;; am Zustand der Zeichnung und kann hier nicht berechnet werden; die Spec sagt
|
||||
;; es, geraten wird nichts.
|
||||
;; "auto" (statt einer Zahl): die Frage kommt zwar (siehe oben), aber es
|
||||
;; wird bewusst KEINE Zahl vorgegeben - genau wie eine leere Konsolen-
|
||||
;; Eingabe (getreal liefert dann nil) laesst das den Bauablauf seinen
|
||||
;; eigenen, aus dem Fussabdruck der festen Elemente berechneten Vorschlag
|
||||
;; nehmen (vfl-baue-horizontal-koerper-Aufrufstelle: "(if (null hoehe-neu)
|
||||
;; (setq hoehe-neu (- (caddr p-aktuell) fest-drop)))"). Dafuer wird ein
|
||||
;; "NIL"-Token (Wert nil) statt "REAL" ausgegeben - vfl-replay-pop liefert
|
||||
;; dafuer (nil) zurueck, was vfl-in-value als "keine Antwort" erkennt und
|
||||
;; genauso behandelt wie eine leere Live-Eingabe.
|
||||
(defun vsp-eingang-hoehe (quelle / v)
|
||||
(setq v (ssg-val quelle "eingang_hoehe"))
|
||||
(if v (vsp-zahl "REAL" v "eingang_hoehe")))
|
||||
(cond
|
||||
((null v) nil)
|
||||
((and (= (type v) 'STR) (= (strcase v) "AUTO")) (vsp-raus "NIL" nil))
|
||||
(T (vsp-zahl "REAL" v "eingang_hoehe"))))
|
||||
|
||||
(defun vsp-praeambel (kopf / punkt)
|
||||
(setq *vsp-wo* "start")
|
||||
|
||||
Reference in New Issue
Block a user