From 0915cc29369c9d4367ebd784ed607f73b9feae6f Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 9 Oct 2026 16:48:39 +0200 Subject: [PATCH] [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 --- Lisp/ssg_stueckliste.lsp | 45 ++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/Lisp/ssg_stueckliste.lsp b/Lisp/ssg_stueckliste.lsp index 2e191d1..ad3065a 100644 --- a/Lisp/ssg_stueckliste.lsp +++ b/Lisp/ssg_stueckliste.lsp @@ -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)))