[FIX] Blockname-Kollision in omni:make-gerade + fehlende Linienzug-Testantwort
omni:make-gerade: itoa(fix(CDATE*1e6)) als Kollisions-Suffix sprengte den
32-Bit-INT-Bereich und liess den Lisp-Fehler mitten im BLOCK/INSERT-Kommando
laufen (BricsCAD blieb dann auf eine Eingabe wartend haengen) - trat bei der
Omniflo-Streckenzug-Testschleife auf, da ssg-timestamp nur Sekundenaufloesung
hat und mehrere Geraden pro Sekunde entstehen. Ersetzt durch einen laufenden
Zaehler.
linienzug_tests.json: die in 3e23003 neu eingefuehrte "ES-Element setzen?"-
Frage fehlte im Testskript und hat die restliche Eingabe-Queue um einen
Eintrag verschoben.
This commit is contained in:
@@ -578,11 +578,22 @@
|
|||||||
(setq e (entnext lastEnt))
|
(setq e (entnext lastEnt))
|
||||||
(while e (ssadd e ss) (setq e (entnext e)))
|
(while e (ssadd e ss) (setq e (entnext e)))
|
||||||
|
|
||||||
;; Block mit eindeutigem Zeitstempel-Namen erzeugen
|
;; Block mit eindeutigem Zeitstempel-Namen erzeugen. ssg-timestamp hat nur
|
||||||
|
;; Sekundenaufloesung - bei mehreren Aufrufen innerhalb derselben Sekunde
|
||||||
|
;; (z.B. Streckenzug-Schleife) kollidiert der Name; dann einen laufenden
|
||||||
|
;; Zaehler anhaengen, bis der Name frei ist. (Fruehere Variante haengte
|
||||||
|
;; (itoa (fix (* CDATE 1000000))) an - das sprengt den 32-Bit-INT-Bereich
|
||||||
|
;; von itoa und brach mit einem Lisp-Fehler ab.)
|
||||||
(setq bname (strcat blockname "_" (ssg-timestamp)))
|
(setq bname (strcat blockname "_" (ssg-timestamp)))
|
||||||
;; Falls Name schon existiert, Suffix anhaengen
|
|
||||||
(if (tblsearch "BLOCK" bname)
|
(if (tblsearch "BLOCK" bname)
|
||||||
(setq bname (strcat bname "_" (itoa (fix (* (getvar "CDATE") 1000000)))))
|
(progn
|
||||||
|
(if (null *omni-gerade-block-counter*) (setq *omni-gerade-block-counter* 0))
|
||||||
|
(while (tblsearch "BLOCK" bname)
|
||||||
|
(setq *omni-gerade-block-counter* (1+ *omni-gerade-block-counter*))
|
||||||
|
(setq bname (strcat blockname "_" (ssg-timestamp) "_"
|
||||||
|
(itoa *omni-gerade-block-counter*)))
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
;; Objektfang aus: sonst kann _.INSERT den Einfuegepunkt pt auf ein Objekt
|
;; Objektfang aus: sonst kann _.INSERT den Einfuegepunkt pt auf ein Objekt
|
||||||
;; umfangen (z.B. den Text bei pt) und die Hoehe verfaelschen.
|
;; umfangen (z.B. den Text bei pt) und die Hoehe verfaelschen.
|
||||||
|
|||||||
Vendored
+5
@@ -159,6 +159,11 @@
|
|||||||
"wert": "3",
|
"wert": "3",
|
||||||
"kommentar": "getstring Ist Endpunkt? (Option 3 - Kettenende)"
|
"kommentar": "getstring Ist Endpunkt? (Option 3 - Kettenende)"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"typ": "string",
|
||||||
|
"wert": "1",
|
||||||
|
"kommentar": "getstring ES-Element setzen? (Ja) - neue Frage aus 3e23003, fehlte bisher in den Testdaten"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"typ": "point_rel",
|
"typ": "point_rel",
|
||||||
"dL": 6215,
|
"dL": 6215,
|
||||||
|
|||||||
Reference in New Issue
Block a user