프로그램
캐드 분류

블록 내에 특정 레이어 색상 변경 리습 질문

컨텐츠 정보

  • 245 조회
  • 2 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

현재 올려드린 리습은 블록을 다중 선택해서 블록 내에 라인들의 색상을 일괄 변경하는 것인데 블록 내에 일괄 다 변경하는 것이 아닌 특정 레이어만 선택해서 색상 변경하는 것으로 변경할 수 있을까요 ?ㅠ 고수님들 부탁드려요.

(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 

관련자료

댓글 2

JerrySun님의 댓글

너무 감사합니다 ???? 혹시 블록이 100개가 있는데 각각의 블록안에 standard라는 레이어가 공통으로 들어있고 그 레이어의 색상만 일괄로 변경할 수 있는 방법은 없을까요?

여분필드1 여분필드2 여분필드3
전체 7,337 / 17 페이지
번호
제목
이름
알림 0