refactor: Kettenfoerderer als Seitenansicht mit Beschriftung und Hoehenmass, Draufsicht als eigener Hilfsblock KF2D_n

- Hauptblock KF_n: flache, ungedrehte Seitenansicht mit Beschriftung und Hoehenmass; nur er wird exportiert
- Draufsicht KF_2D als getrennter Hilfsblock KF2D_n (projizierte Laenge, frei verschiebbar, per KF_EDIT regenerierbar), Verknuepfung ueber XDATA-Schluessel
- L_KF_mm = waagerechte Laenge, Sivas-Zeile ohne Laenge, Export nur KF_<Ziffern>
- ensure-block-loaded: Block ohne ILS-Datei (KF_2D) nicht mehr als fehlend melden
- Layer kettenfoerderer_beschriftung, Dispatcher-Zweig KF2D_*, Sprachdateien und Unit-Tests angepasst

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-30 15:42:58 +01:00
parent d9043ebca5
commit 503b02a005
10 changed files with 469 additions and 337 deletions
+16 -4
View File
@@ -85,10 +85,21 @@
;; Realer Fehler, den das behebt: die KS-Messung eines KF-Bausteins lief ins
;; Leere und meldete "KS_EIN/KS_AUS fehlt", obwohl beide KS im Block vorhanden
;; waren - gesucht wurde nur ein Blockname, den es nicht gibt.
;;
;; Zweiter Sonderfall - Namen, die SELBST auf _2D/_3D enden (z.B. die
;; Kettenfoerderer-Draufsicht "KF_2D"): ssg-ils-blockname laesst solche Namen
;; unveraendert (eff = blockname), die Bedingung "eff existiert nicht" kann
;; dann nie zutreffen, und der Block ging in den ILS-Ladepfad. Der suchte
;; data/ils/KF_2D.dwg und meldete "Block-Datei nicht gefunden", obwohl der
;; Block in der Zeichnung vorhanden war. Massgeblich ist darum, ob es fuer den
;; Namen ueberhaupt eine ILS-Datei gibt: ohne Datei ist es kein ILS-Block und
;; die vorhandene Definition wird genommen. Echte ILS-Bloecke haben eine Datei
;; und laufen unveraendert durch den Ladepfad (Aktualisierung aus der Datei).
(defun ensure-block-loaded (blockname / eff)
(setq eff (ssg-ils-blockname blockname))
(if (and (not (tblsearch "BLOCK" eff))
(tblsearch "BLOCK" blockname))
(if (and (tblsearch "BLOCK" blockname)
(or (= eff blockname) (not (tblsearch "BLOCK" eff)))
(null (ssg-ils-block-datei blockname)))
blockname
(progn
(if (not (ssg-ils-block-laden blockname))
@@ -558,8 +569,9 @@
;; Bewusst matrixbasiert statt mit einem weiteren Winkelparameter: die
;; Aufrichtung ist nur EIN Anwendungsfall, und jeder weitere haette eine
;; weitere Spezialfunktion gebraucht. Den Aufrufern bleibt freigestellt,
;; welche Drehungen sie kombinieren (beim Kettenfoerderer
;; Rz(basis) * Rx(90) * Rz(eigen), siehe kf-matrix-aufrecht).
;; welche Drehungen sie kombinieren. (Der Kettenfoerderer hat sie kurz fuer
;; Rz(basis) * Rx(90) * Rz(eigen) genutzt, ist inzwischen aber wieder eine flache
;; Seitenansicht - aktuell ohne Aufrufer.)
;; Elementare Rotationsmatrizen (3x3, Winkel in GRAD).
(defun ks-rot-x (grad / r c s)