프로그램
캐드 분류

블럭 레이어 일괄변경 리습 관련 입니다.

컨텐츠 정보

  • 253 조회
  • 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 / 1 페이지

수야12님의 댓글

보통 원하시는 리습은 구글에서 쉽게 검색이 됩니다 키워드 시작을 autolisp bylayer 뭐 대충 이렇게 치시면 85%이상의 확률로 원하시는 조건에 근접한 리습을 찾으실 수 있습니다  

중요한 키워드가 autolisp을  앞에다 쓰는거예요 ex.  가령 복사 회전리습을 찾고 싶다 하시면 
전체 6,913 / 1 페이지
번호
제목
이름

최근글


새댓글


알림 0