; 선택한 객체의 레이어만 오프
;==================================================================================================
(defun c:LF (/ acDoc ss layerList)
(vl-load-com)
(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark acDoc)
(and
(setq ss (ssget))
(setq layerList
(mapcar “”vla-get-layer
(mapcar “”vlax-ename->vla-object
(vl-remove-if “”listp (mapcar “”cadr (ssnamex ss)))
)
)
)
(vlax-for lay (vla-get-layers acDoc)
(if (member (vla-get-name lay) layerList)
(vla-put-LayerOn lay :vlax-false)
)
)
)(vla-endundomark acDoc)(princ)
)
이거 인데 VLA 뭐 이런거는 캐디안에서 사용이 안되더라구요…
그래서 또 찾은게
;;;◇ 선택된 레이어만 ON시킨다 : ON
;;;◇———————————————————————————————
(defun C:ON ()
(setvar “cmdecho” 0)
(setvar “clayer” “0”)
(prompt “nSelect Object(s) To Display!!”)
(setq ss (ssget ))
(setq num (sslength ss))
(setq index 0)
(command “layer” “off” “*” “y” “”)
(repeat num
(setq entName (ssname ss index))
(setq entList (entget entName))
(setq entLayer (cdr (assoc 8 entList)))
(setq index (+ index 1))
(command “layer” “on” entLayer “”)
); <repeat>
(command “layer” “s” entLayer “”)
(princ)
)
(princ “nLoading Complete…… ON : 선택된 LAYER만 ON시킨다.”)
(princ)
이런 형식은 가능한데 어디를 수정해야
선택된 객체의 레이어들만 오프가 되는지 알려주셨으면 합니다.
기존의 레이어 오프 기능은 마우스로 일일히 클릭을 해야하지만
맨위의 리습은 중복으로 객체를 선택할 수 있어서 편리하더군요
공유
안녕하세요?
CADian2010에서는 VLA- 관련 함수 일부가 동작되지 않을 수 있습니다.
그런 경우는 아래와 같이 Lisp코드로 구현하였습니다.
의문점 있으시면 다시 연락 주십시요.
감사합니다.
(defun c:LF (/ ss index layerlist DXF-list STR-layer-name OBJ-layer DXF-layer INT-color-no)
(Setq ss (ssget))
(Setq index 0
layerlist ‘()
)
(Repeat (sslength ss)
(Setq DXF-list (entget (ssname ss index))
STR-layer-name (cdr (assoc 8 DXF-list))
)
(if (not (member STR-layer-name layerlist))
(Setq layerlist (append layerlist (list STR-layer-name)))
);end if
(Setq index (+ index 1))
)
(foreach element layerlist
(Progn
(Setq OBJ-layer (tblobjname “layer” element)
DXF-layer (entget OBJ-layer)
INT-color-no (cdr (assoc 62 DXF-layer))
)
(if (> INT-color-no 0)
(Progn
(Setq DXF-layer (subst (cons 62 (* -1 INT-color-no))(assoc 62 DXF-layer) DXF-layer))
(entmod DXF-layer)
);progn
);end if
)
)
(princ)
)