Forumda arattım ama bulamadım, sizden bir ricam olacak.
Projede seçmiş olduğum objeler haricindeki tüm çizimlerin kapanmasını sağlayacak bir lispe ihtiyacım var.
Not: Autocad'de propertiesde bunu yapmak mümkün ancak iş yerinde bricscad kullanmak zorunda olduğum için bunu yapamıyorum.
Çok zamanımı alan bu iş ile ilgili yardımcı olabilirseniz sevinirim.
Arkadaslar;
Programdaki kucuk bir ayrintiya dikkatinizi cekmek istiyorum. Bildiginiz gibi aktif layer freeze edilemez. O anki aktif layer freeze edilmeyecek layerlerden biri degilse once aktif layer freeze edilmeyecek layerlerin birine (alfabetik olarak ilk siradaki) aliniyor, sonra diger layerler freeze ediliyor.
Lisp yazmayi ögrenen arkadaslardan talep gelirse ayni kodun autolisp versiyonunu da yayinlarim.
Kod:
(defun c:alumina ()
(vl-load-com)
(while (null (setq n (ssget))))
(setq ls '() i 0)
(repeat (sslength n)
(if
(null (member (vla-get-layer (vlax-ename->vla-object (ssname n i))) ls))
(setq ls (cons (vla-get-layer (vlax-ename->vla-object (ssname n i))) ls) i (1+ i) ls (acad_strlsort ls))))
(setq lt (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
(if
(null (member (vla-get-name (vla-get-activelayer (vla-get-activedocument (vlax-get-acad-object)))) ls))
(vla-put-activelayer (vla-get-activedocument (vlax-get-acad-object)) (vla-item lt (nth 0 ls))))
(vlax-for l lt
(if
(null (member (vla-get-name l) ls))
(vla-put-freeze l 1)))
(princ))