Eine gute Einführung bietet das demnächst auch hoffentlich als Buch erscheinende
Tutorial von Mapcar und ein Lisp-
Handbuch für R14 ... nicht zu vergessen die Onlinehilfe (aber da muß man ja erst wissen wonach man sucht
.
Wenn du im englischen Fit bist kann ich noch
AFRALISP empfehlen.
Aber noch mal zu deinem Bsp:
(defun c:swi (/ lay layli) ... lay layli sind lokale Variablen
(while (setq lay (tblnext "LAYER" (not lay)))
...solange mit der Funktion tblnext noch ein Layer in der Layertabelle gefunden wird, speicher ihn in LAY
(setq layli (cons (cdr(assoc 2 lay)) layli))
und füge den Layernamen (Gruppencode 2)der Layerliste hinzu
)
für alle Einträge in der Layerliste ..
(mapcar '(lambda (L / ld)
(setq ld (entget (tblobjname "LAYER" L))) .. lese den Layer mit allen eigenschaften (Gruppencodes) aus
(entmod ...und ändere
(subst
(cons 62 (* -1 (cdr(assoc 62 ld)))) die Farbe auf negativ= Layer aus /positiv = Layer an
(assoc 62 ld)
ld
)
)
)
layli
)
)
--------
ob ein Layer gefroren ist , wird im Bit 1 des Gruppencodes 70 festgelegt.
dafür könnte dein code beispielsweise so aussehen:
(defun c:swi (/ lay layli)
(while (setq lay (tblnext "LAYER" (not lay)))
(setq layli (cons (cdr(assoc 2 lay)) layli))
)
(mapcar '(lambda (L / ld F)
(setq ld (entget (tblobjname "LAYER" L)))
(entmod
(subst
(cons 70
(if(=(logand(cdr(assoc 70 ld))1)1)
(-(cdr(assoc 70 ld))1)
(+(cdr(assoc 70 ld))1)
)
)
(assoc 70 ld)
ld
)
)
)
layli
)
)
..hoffe, ich hab jetzt keine Klammer vergessen, da mein acad schon down ist.
aber zurück zu deinem Toolwunsch .. nur die Layer schalten war das eigentlich nicht, oder?
------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP