Fix des Redefines im Lisp. Erzeugte lange schleifen. Jeder Block nur einmal laden

This commit is contained in:
2026-07-28 16:11:31 +02:00
parent efec00d4c6
commit 98f1c64c3d
4 changed files with 141 additions and 51 deletions
+24 -4
View File
@@ -113,7 +113,7 @@
;; 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
startpunkt / ergebnis winkel-treffer best-winkel L_GF L_VF
gf1 gf2 hoehe-bis lastEnt ent)
gf1 gf2 hoehe-bis lastEnt ent vf-nummer)
(if (or (null seite) (= seite "")) (setq seite "links"))
(if (null hz) (setq hz 0.0) (setq hz (float hz)))
(princ (strcat "\n [VARIO] " tid " -> deltaL=" (rtos deltaL 2 0)
@@ -147,7 +147,14 @@
(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)
(setq ent (vf-block-erstellen "standard" seite 1 0 0 hoehe-bis
;; 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
;; vorhandenen Namen "VF_1" -> BricsCAD fragt "Neu definieren?", verschluckt
;; 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
deltaH deltaL L_VF gf1 gf2 richtung best-winkel
startpunkt lastEnt hz "0" "Schoenenberger Geruest"))
(if (or (null ent) (/= (type ent) 'ENAME))
@@ -327,7 +334,7 @@
;; > 0) - dieselbe Absicherung wie in ssg-ils-block-laden-dim (Zeilen 418f.) und
;; omni:insert-dxf (Zeile 980): nach dem INSERT verbleibende Prompts mit Leer-
;; Antworten (Enter) abfangen, bis der Befehl sauber beendet ist.
(defun mubea:build-separator-one (tid blockname pt rot / eff)
(defun mubea:build-separator-one (tid blockname pt rot / eff n)
(princ (strcat "\n [SEP] " tid " '" (if blockname blockname "?")
"' -> (" (rtos (car pt) 2 0) "," (rtos (cadr pt) 2 0) "," (rtos (caddr pt) 2 0)
") R=" (rtos rot 2 0)))
@@ -342,7 +349,20 @@
(if eff
(progn
(command "_.INSERT" eff pt "" "" rot)
(while (> (getvar "CMDACTIVE") 0) (command ""))
;; Verbleibende Prompts mit Enter abfangen - aber GEZAEHLT. Ein Prompt, der
;; eine Leer-Antwort ablehnt ("Eintrag kann nicht erkannt werden. Bitte
;; versuchen Sie es erneut."), haelt CMDACTIVE dauerhaft > 0: eine
;; ungebremste (while (> CMDACTIVE 0) (command "")) Schleife laeuft dort
;; endlos und BricsCAD haengt. Danach hart abbrechen und melden.
(setq n 0)
(while (and (> (getvar "CMDACTIVE") 0) (< n 5))
(command "")
(setq n (1+ n)))
(if (> (getvar "CMDACTIVE") 0)
(progn
(command)
(princ (strcat "\n WARNUNG: INSERT von '" eff
"' nicht sauber beendet - abgebrochen."))))
(mubea:ent-json tid "separator" (entlast)))
(progn
;; Kein Block gefunden -> sichtbaren Platzhalter zeichnen
+21 -6
View File
@@ -42,7 +42,7 @@
"function": "insert",
"block": "S-LP",
"x": 400,
"y": -4700,
"y": -3815,
"z": 1467,
"rotation": 90,
"assigned_to": "Kreisel_links"
@@ -52,7 +52,7 @@
"function": "insert",
"block": "Scanner",
"x": 400,
"y": -4823,
"y": -3925,
"z": 1467,
"rotation": 0,
"assigned_to": "Kreisel_links"
@@ -94,7 +94,22 @@
"x": 400,
"y": 14120,
"z": 1467,
"comment": "deltaL=9110 wie die Gefaellestrecken (GF_Mubea deltaL_mm) - deltaL ist die GESAMTLAENGE des VF (Vorlauf L_GF1 + Foerderer L_VF + Nachlauf L_GF2), analog foerderer_tests.json/object_data.md 3.1; winkel=21 wird erzwungen (naechster verfuegbarer Bogenwinkel); L_GF (gesamt) und L_VF werden von berechne-alle-winkel aus deltaL/deltaH/winkel geloest, L_GF1=500 (Vorlauf-Ziel) fix, L_GF2 = L_GF_gesamt - L_GF1 (Nachlauf, Rest)"
"comment": "oberer Förderer für die Leertrolleys"
},
{
"test_id": "VF_Schnitt_E",
"richtung": "Auf",
"deltaL": 9110,
"deltaH": 474,
"winkel": 21,
"gf_verteilung": "manuell",
"L_GF1": 2298,
"seite": "links",
"hz": 0.0,
"x": 400,
"y": -4133,
"z": 1467,
"comment": "unterer Förderer für die Teile"
},
{
"comment": "Separator Förderer oben",
@@ -170,7 +185,7 @@
"block": "S-LP",
"x": 10310,
"y": -500,
"z": 1467,
"z": 1941,
"rotation": 90,
"assigned_to": "Kreisel_rechts"
},
@@ -180,7 +195,7 @@
"block": "S-LP",
"x": 10310,
"y": 100,
"z": 1467,
"z": 1941,
"rotation": 90,
"assigned_to": "Kreisel_rechts"
},
@@ -190,7 +205,7 @@
"block": "S-LP",
"x": 9510,
"y": -4823,
"z": 1467,
"z": 1941,
"rotation": 270,
"assigned_to": "GF_Mubea_20"
}