[FIX] Stueckliste: Texte ueberschrieben sich bei abweichendem Textstil

ssg-sl-tabelle-zeichnen/ssg-sl-faehnchen riefen TEXT ueber command auf. Bei
einem aktiven Textstil mit fester/variabler Ausrichtung (Mitte/Fit/Aligned
statt Links) fragt TEXT dann einen zweiten Punkt zusaetzlich ab - jeder
nachfolgende command-Aufruf landete am falschen Prompt, wodurch Kopf- und
Datenzeilen der Stuecklistentabelle sich alle an derselben Stelle stapelten
statt an ihrer vorgesehenen Position (Header nicht mehr lesbar).

Neue Hilfsfunktion ssg-sl-text-machen erzeugt TEXT-Entities per entmake statt
ueber den interaktiven command-Pfad - unabhaengig von Textstil/Ausrichtung
und der command-Promptkette. Gleiche Fehlerklasse wie der _.-INSERT-Fix bei
DIN_FORMATE (vorheriger Commit).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 16:48:39 +02:00
parent 549798cd0b
commit 0915cc2936
+32 -13
View File
@@ -24,6 +24,25 @@
(vl-load-com)
;; TEXT per entmake erzeugen (linksbuendig/Baseline, Gruppe 10 = Startpunkt).
;; NICHT ueber (command "_text" p hoehe winkel string): bei einem aktiven
;; Textstil mit fester/variabler Ausrichtung (z.B. "Mitte"/"Fit"/"Aligned"
;; statt "Links") fragt TEXT dann einen ZWEITEN Punkt zusaetzlich ab - jeder
;; nachfolgende command-Aufruf landet dadurch am falschen Prompt und alle
;; Texte stapeln sich an derselben Stelle (realer Bug: Stuecklistentabelle
;; ohne lesbare Header, siehe ssg-sl-tabelle-zeichnen). entmake ist von
;; Textstil/Ausrichtung und der interaktiven Befehlskette unabhaengig.
(defun ssg-sl-text-machen (p hoehe string)
(if (null (caddr p)) (setq p (list (car p) (cadr p) 0.0)))
(entmake (list '(0 . "TEXT")
(cons 8 (getvar "CLAYER"))
(cons 7 (getvar "TEXTSTYLE"))
(cons 10 p)
(cons 40 hoehe)
(cons 1 string)
(cons 50 0.0)))
)
;; ------------------------------------------------------------
;; POSITIONSFAEHNCHEN
;; ------------------------------------------------------------
@@ -40,7 +59,7 @@
(setq pt6 (list (+ (car pt1) (* faktor 125)) (+ (cadr pt1) (* faktor 68)) z))
(command "_line" pt0 pt1 "")
(command "_circle" pt6 (* faktor 153))
(command "_text" pt5 (rtos (* faktor 75)) "0" (itoa posnr))
(ssg-sl-text-machen pt5 (* faktor 75) (itoa posnr))
)
((= umrand "3")
(setq x (- x 15) y (- y 15))
@@ -50,7 +69,7 @@
(setq pt3 (list x (+ y (* faktor 150)) z))
(setq pt5 (list (- x (* faktor 225)) (+ y (* faktor 25)) z))
(command "_pline" pt0 "_w" "0" "0" pt1 pt2 pt3 pt0 "")
(command "_text" pt5 (rtos (* faktor 75)) "0" (itoa posnr))
(ssg-sl-text-machen pt5 (* faktor 75) (itoa posnr))
)
(t
(setq pt1 (list (+ x (* faktor 100)) (+ y (* faktor 150)) z))
@@ -60,7 +79,7 @@
(setq pt5 (list (+ x (* faktor 125)) (+ y (* faktor 175)) z))
(command "_pline" pt0 "_w" "0" "0" pt1 "")
(command "_pline" pt1 pt2 pt3 pt4 pt1 "")
(command "_text" pt5 (rtos (* faktor 75)) "0" (itoa posnr))
(ssg-sl-text-machen pt5 (* faktor 75) (itoa posnr))
)
)
)
@@ -87,18 +106,18 @@
(setq p93 (list (+ (car p11) 1450.0) (+ (cadr p11) 100.0)))
(setq p94 (list (+ (car p11) 2050.0) (+ (cadr p11) 100.0)))
(setq p95 (list (+ (car p11) 3250.0) (+ (cadr p11) 100.0)))
(command "_text" p91 tsize "0" (ssg-text "sl-stkl-kopf-pos"))
(command "_text" p92 tsize "0" (ssg-text "sl-stkl-kopf-menge"))
(command "_text" p93 tsize "0" (ssg-text "sl-stkl-kopf-laenge"))
(command "_text" p94 tsize "0" (ssg-text "sl-stkl-kopf-artikel"))
(command "_text" p95 tsize "0" (ssg-text "sl-stkl-kopf-bezeichnung"))
(ssg-sl-text-machen p91 tsize (ssg-text "sl-stkl-kopf-pos"))
(ssg-sl-text-machen p92 tsize (ssg-text "sl-stkl-kopf-menge"))
(ssg-sl-text-machen p93 tsize (ssg-text "sl-stkl-kopf-laenge"))
(ssg-sl-text-machen p94 tsize (ssg-text "sl-stkl-kopf-artikel"))
(ssg-sl-text-machen p95 tsize (ssg-text "sl-stkl-kopf-bezeichnung"))
(setq n 0)
(foreach daten zeilen
(command "_text" p1 tsize "0" (nth 0 daten))
(command "_text" (list (+ (car p1) 400.0) (cadr p1)) tsize "0" (nth 1 daten))
(command "_text" (list (+ (car p1) 1000.0) (cadr p1)) tsize "0" (nth 2 daten))
(command "_text" (list (+ (car p1) 1900.0) (cadr p1)) tsize "0" (nth 3 daten))
(command "_text" (list (+ (car p1) 3000.0) (cadr p1)) tsize "0" (nth 4 daten))
(ssg-sl-text-machen p1 tsize (nth 0 daten))
(ssg-sl-text-machen (list (+ (car p1) 400.0) (cadr p1)) tsize (nth 1 daten))
(ssg-sl-text-machen (list (+ (car p1) 1000.0) (cadr p1)) tsize (nth 2 daten))
(ssg-sl-text-machen (list (+ (car p1) 1900.0) (cadr p1)) tsize (nth 3 daten))
(ssg-sl-text-machen (list (+ (car p1) 3000.0) (cadr p1)) tsize (nth 4 daten))
(command "_line" (list (- (car p1) 100.0) (- (cadr p1) 50.0))
(list (+ (car p1) 9000.0) (- (cadr p1) 50.0)) "")
(setq p1 (list (car p1) (- (cadr p1) lspace)))