캐드 분류
블럭 레이어 일괄변경 리습 관련 입니다.
컨텐츠 정보
- 375 조회
- 6 댓글
- 0 추천
- 0 비추천
- 목록
본문
안녕하세요.
제가 블럭 내 레이어를 일괄 변경 해 주는 리습을 쓰고 있는데요.
(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만 통일시켜줍니다. 이건 이거대로 좋아서 쓰고 있는데, 도면정리할때 꼭 필요해서요.
도와주시면 감사하겠습니다. 부탁드립니다.
관련자료
댓글 6