[ADD] Layerdefinitionen und Farben durch layer.cfg für zusammengesetzte Blöcke wie Gefällestrecke oder Varioförderer werden beim Zusammenbau der Baugruppen in den Skripten verwendet; Ebenfalls als Fallback für Blöcke möglich, die kein Attribut LAYER besitzen.

This commit is contained in:
2026-09-04 09:01:12 +02:00
parent 02303ad7fc
commit 15ec6c0504
14 changed files with 603 additions and 61 deletions
+22 -20
View File
@@ -17,25 +17,14 @@
(if (null *ils-btmt-beladung-block*) (setq *ils-btmt-beladung-block* "BTMT-Beladung"))
(if (null *ils-btmt-entladung-block*) (setq *ils-btmt-entladung-block* "SC_Entladung"))
;; Layer einer frisch eingefuegten Blockreferenz setzen: bevorzugt aus dem
;; LAYER-Attribut des Blocks (gleiche Konvention wie omni:insert-dxf in
;; OmniModulInsert.lsp und tefl-insert-element in TEFInsert.lsp), sonst aus der
;; "eigenen" Ebene der Blockdefinition (ssg-ils-block-ebene). Liefert der Block
;; beides nicht, bleibt die Referenz auf dem aktuellen Layer.
;; Layer einer frisch eingefuegten Blockreferenz aus der Block-Vorgabe setzen.
;; Die Logik liegt zentral als ssg-block-layer-vorgabe in ssg_core.lsp (dieselbe
;; Konvention nutzen omni:insert-dxf in OmniModulInsert.lsp und
;; tefl-insert-element in TEFInsert.lsp); hier bleibt nur der bisherige Name als
;; duenner Wrapper stehen.
;; Rueckgabe: gesetzter Layername oder nil.
(defun ils-block-layer-setzen (ent realname attribs / lay)
(setq lay (cdr (assoc "LAYER" attribs)))
(if (or (null lay) (= lay ""))
(setq lay (ssg-ils-block-ebene realname))
)
(if (and lay (/= lay ""))
(progn
(ssg-make-layer lay 7 nil)
(entmod (subst (cons 8 lay) (assoc 8 (entget ent)) (entget ent)))
(entupd ent)
lay
)
)
(defun ils-block-layer-setzen (ent realname attribs)
(ssg-block-layer-vorgabe ent realname attribs)
)
;; Fuegt eine ILS-Station (BTMT-Beladung/SC_Entladung) wiederholt ein, bis der
@@ -125,7 +114,7 @@
;; Fuegt einen Sensor-Block wiederholt ein, bis der Benutzer mit
;; ENTER oder ESC abbricht. Rotation je Einfuegung interaktiv.
(defun ils-insert-sensor (fname / pfad pt oldattreq n res)
(defun ils-insert-sensor (fname / pfad pt oldattreq n res ent realname)
(setq pfad (ils-sensor-pfad fname))
(if (null pfad)
(princ (strcat "\n>>> FEHLER: Blockdatei '" fname ".dwg' nicht gefunden."
@@ -145,6 +134,19 @@
)
(setq pt res)
(command "_.INSERT" pfad pt "" "" pause)
(setq ent (entlast))
;; Layer aus der Block-Vorgabe setzen (LAYER-Attribut, sonst eigene
;; Ebene der Blockdefinition) - wie bei ils-insert-station. Scanner und
;; Separator_SP fuehren das LAYER-Attribut (ZZ_Scanner bzw. ILS_SEP-SP),
;; es wurde hier bisher nur nicht ausgewertet.
;; Blockname aus der Referenz selbst lesen: eingefuegt wird ueber den
;; Dateipfad, der effektive Blockname haengt am 2D/3D-Fallback.
(if (and ent (= (cdr (assoc 0 (entget ent))) "INSERT"))
(progn
(setq realname (cdr (assoc 2 (entget ent))))
(ssg-block-layer-vorgabe ent realname nil)
)
)
;; Sofort beim Einfuegen eine eindeutige ID vergeben - wie bei allen
;; anderen Bau-Routinen (Kreisel/GF/VF/Omniflo, siehe ssg-id-generate-
;; Aufrufe dort). Separator/Scanner waren bisher die einzige Ausnahme
@@ -153,7 +155,7 @@
;; das ist der Fall, den ssg-id-check-all als Sicherheitsnetz
;; eigentlich nur fuer Kopier-/Array-/Spiegel-Faelle abfangen soll.
(if (atoms-family 1 '("ssg-id-generate"))
(ssg-id-generate (entlast)))
(ssg-id-generate ent))
(setq n (1+ n))
)
(setvar "ATTREQ" oldattreq)