안녕하세요.
제가 블럭 내 레이어를 일괄 변경 해 주는 리습을 쓰고 있는데요.
(defun c:r2 ( / s n ss l :Adoc :Blocks :Layers)
(vl-load-com)
(while (not (setq s (entsel “n레이어를 참조할 객체 선택: “))))
(and
s
(setq n (cdr (assoc 8 (entget (car s)))))
(progn
(princ “n레이어를 바꿀 블럭을 선택: “)
(or
(setq ss (ssget ‘((0 . “insert”))))
(alert “선택한 블럭이 없습니다! “)
)
)
(progn
(setq l
(mapcar
‘(lambda (e) (cdr (assoc 2 (entget e))))
(vl-remove-if ‘listp (mapcar ‘cadr (ssnamex ss)))
)
:Adoc (vla-get-activedocument (vlax-get-acad-object))
:Blocks (vlax-get :Adoc ‘Blocks)
:Layers (vlax-get :Adoc ‘Layers)
)
(and (eq 8 (logand 8 (getvar ‘undoctl))) (vla-endundomark :Adoc))
(vla-startundomark :Adoc)
(vlax-for block :Blocks
(if (vl-position (vla-get-name block) l)
(vlax-for o block
(if (= (vlax-get o ‘color) 256)
(vlax-put o ‘Color (vlax-get (vla-item :Layers (vlax-get o ‘Layer)) ‘Color))
)
(vlax-put o ‘Layer n)
)
)
)
(and (eq 8 (logand 8 (getvar ‘undoctl))) (vla-endundomark :Adoc))
(vla-regen :Adoc 1)
(mapcar ‘vlax-release-object (list :Adoc :Blocks :Layers))
)
)
(princ)
)
전부 바뀌는걸 확인 했는데 어느 포인트를 바꿔야 색상을 bylayer로 할수 있는지 모르겟습니다.
블럭 내 색상을 layer색상을 따라가고 싶은데, 이건 기존 색상이 그대로 유지되고 layer만 통일시켜줍니다. 이건 이거대로 좋아서 쓰고 있는데, 도면정리할때 꼭 필요해서요.
도와주시면 감사하겠습니다. 부탁드립니다.
리습 공유 가능하신가요 ㅠㅠ 정말 찾고있던 리습입니다 ㅠㅠ
보통 원하시는 리습은 구글에서 쉽게 검색이 됩니다 키워드 시작을 autolisp bylayer 뭐 대충 이렇게 치시면 85%이상의 확률로 원하시는 조건에 근접한 리습을 찾으실 수 있습니다
저도 이거 여기서 찾은거에요 ㅋ 그냥 복삭해서 쓰시면 되요.
객체 색(블록 안 객체 포함)을 bylayer로 바꾸는 기능 = setbylayer
오 대박 감사합니다!!! ㅋㅋㅋ 이렇게 좋은 명령어가!!
이 리습 불러는 왔는데요.. 명령어는 어떻게 되나요?