현재 올려드린 리습은 블록을 다중 선택해서 블록 내에 라인들의 색상을 일괄 변경하는 것인데 블록 내에 일괄 다 변경하는 것이 아닌 특정 레이어만 선택해서 색상 변경하는 것으로 변경할 수 있을까요 ?ㅠ 고수님들 부탁드려요.
(defun c:bcol ( / oDocument BlockNameList )
(vl-load-com)
(setq oDocument (vla-get-activedocument (vlax-get-acad-object)))
(setq BlockNameList nil)
(and
(setq Sset (ssget (list (cons 0 “INSERT”))))
(setq col (strcase (getstring “n>> 색상 번호를 입력하세요 ? : “)))
(foreach item (mapcar ‘(lambda(x) (cdr (assoc 2 (entget x)))) (vl-remove-if ‘listp (mapcar ‘cadr (ssnamex Sset))))
(if (not (member item BlockNameList)) (setq BlockNameList (cons item BlockNameList)))
)
) ;and
(foreach BlockName BlockNameList (change:colorinblock oDocument BlockName col)) ;col 색
(vla-regen oDocument acallviewports)
(princ)
) ; defun
;==============================================
(defun change:colorinblock ( Document BlockName Color )
(vl-load-com)
(vlax-for item (vla-item (vla-get-blocks Document) BlockName)
(vla-put-color item Color)
(if (eq (vla-get-objectname item) “AcDbBlockReference”)
(change:colorinblock Document (vla-get-name item) Color)
) ;if
)
) ; defun
https://cafe.naver.com/autocats/559
너무 감사합니다 🙂 혹시 블록이 100개가 있는데 각각의 블록안에 standard라는 레이어가 공통으로 들어있고 그 레이어의 색상만 일괄로 변경할 수 있는 방법은 없을까요?