Robuste Blockeinfuegung: kaputte Bloecke bei Testlaeufen verhindern
Der Redefine-Flush in ssg-ils-block-laden-dim brach nach genau zwei (command)-Aufrufen ab; blieb ein Befehl trotzdem aktiv (z.B. bei abweichenden INSUNITS), verschluckte der naechste (command ...)-Aufruf des Aufrufers dessen Argumente als Antwort auf den offenen Prompt - Ursache eines real beobachteten kaputten SC_Entladung-Blocks (keine Attribute) beim letzten Element eines HundM05-Testlaufs. Flush jetzt als bounded loop mit Warnung statt fixer 2 Versuche. hundm05:bau-sensor vertraut nach dem INSERT nicht mehr blind (entlast): eine ungueltige/keine neue Blockreferenz wird erkannt, evtl. Rest- geometrie geloescht und der Ergebnis-Record als "abbruch" markiert; fehlt das ID-Attribut, gibt es "warnung" statt stillschweigend weiter- zumachen. Testlaeufe hinterlassen damit keine unbemerkt kaputten Bloecke mehr. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
ab2816e9ee
commit
d0d112e740
+17
-3
@@ -787,7 +787,7 @@
|
||||
;; und Foerderer-Tests) fuehrte das zu minutenlangen Laufzeiten.
|
||||
;; Zum erzwungenen Neu-Einlesen: ssg-block-refresh-reset.
|
||||
;; Rueckgabe: effektiver (suffigierter) Blockname oder nil (Datei nicht gefunden).
|
||||
(defun ssg-ils-block-laden-dim (blockname dim / eff datei base temp-obj osm areq adia)
|
||||
(defun ssg-ils-block-laden-dim (blockname dim / eff datei base temp-obj osm areq adia n)
|
||||
(setq eff (ssg-ils-blockname-dim blockname dim))
|
||||
(setq datei (ssg-ils-block-datei-dim blockname dim))
|
||||
(if (null datei)
|
||||
@@ -825,8 +825,22 @@
|
||||
(if (tblsearch "BLOCK" eff)
|
||||
(command "_.-INSERT" (strcat eff "=" datei) "_Y") ; Redefine bestehender Block
|
||||
(command "_.-INSERT" (strcat eff "=" datei))) ; neu (kein Redefine-Prompt)
|
||||
(if (> (getvar "CMDACTIVE") 0) (command))
|
||||
(if (> (getvar "CMDACTIVE") 0) (command))
|
||||
;; Robust statt fixer 2 Versuche abbrechen: manche Block-DWGs (z.B.
|
||||
;; abweichende INSUNITS) schieben eine zusaetzliche Rueckfrage ein,
|
||||
;; die zwei (command)-Aufrufe nicht immer leeren. Bleibt danach ein
|
||||
;; Befehl aktiv, verschluckt der NAECHSTE (command ...)-Aufruf des
|
||||
;; Aufrufers (die eigentliche Platzierung, z.B. hundm05:bau-sensor/
|
||||
;; ils-insert-station) dessen Argumente als Antwort auf DIESEN noch
|
||||
;; offenen Prompt - Ursache eines real beobachteten kaputten Blocks
|
||||
;; (fehlende Attribute) beim letzten Element eines Testlaufs.
|
||||
(setq n 0)
|
||||
(while (and (> (getvar "CMDACTIVE") 0) (< n 10))
|
||||
(command)
|
||||
(setq n (1+ n)))
|
||||
(if (> (getvar "CMDACTIVE") 0)
|
||||
(princ (strcat "\n[SSG] WARNUNG: Laden von '" eff
|
||||
"' hat einen Befehl aktiv gelassen (CMDACTIVE > 0) -"
|
||||
" nachfolgende Einfuegungen sind evtl. beschaedigt.")))
|
||||
(setvar "OSMODE" osm)(setvar "ATTREQ" areq)(setvar "ATTDIA" adia)))
|
||||
;; Nur merken, wenn die Definition danach wirklich vorhanden ist -
|
||||
;; sonst wuerde ein fehlgeschlagener Ladeversuch dauerhaft gesperrt.
|
||||
|
||||
Reference in New Issue
Block a user