ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AutoCAD 리습 - 캐드 레이어 리습 (레이어 켜기 / 끄기 // 레이어 동결 // 레이어 잠금 / 잠금해제)
    KiKO LISP 2023. 7. 10. 05:00
    728x90
    반응형

    어느 순간부터 인가 레이어 설정에 무심해져 버렸다.

    협업을 위해 다른 도면을 불러와서 쓸일이 많은데 사람들마다 레이어 관리가 제 각각 이다 보니 사실 의미가 없더라.

    그래서 편집을 하거나 수정 할 때는 그냥 숨기고 보이는 리습으로 객체별로 가시성을 조절하거나 아님 아예 블럭으로 잡든지하는 방법을 사용했다.

    그래서 사실 레이어 온/오프 같은 리습을 잘 안쓰는데다가 언제부터인가 캐드 자체 기능에도 좋은 기능이 추가가 되어 욱 쓸모가 없어진 리습.
    (나처럼 캐드를 아주 옛날 버젼을 쓰는 사람은 필요할지도 모르지만...)

    그럼에도 불구하고 그냥 리습을 공부해서 나만의 루틴을 만들고자하는 리습 입문자 분들과 캐드의 기본 기능이 불편하다고(?) 느끼시는 일부 유저들을 위한 자료로써 공유합니다.

    우선은 레이어의 정보를 가저오는 부분입니다.

    먼저 동결된 레이어와 잠긴 레이어 입니다.
    동결된 레이어와 잠긴 레이어의 그룹코드는 70번입니다.
    값은 각각 동결된 레이어는 1 , 잠긴 레이어는 4 이며 동결되고 잠긴 레이어는 두 값을 합한 5를 값으로 가지게 됩니다.

    아래 함수는 그룹코드 70번의 값을 확인해 동결된 레이어의 리스트를 만들고 동결된 레어어의 리스트 값을 반환하는 함수입니다.

    (defun KiKO_freeze_layer (/ w lay1 freez_list tmp) 
      (setq w T)
      (while (setq lay1 (tblnext "LAYER" w)) 
        (setq w   nil
              tmp (cdr (assoc 70 lay1))
        )
        (if (or (= tmp 1) (= tmp 5)) 
          (setq freez_list (append freez_list (list (cdr (assoc 2 lay1)))))
        )
      )
      (princ)
      freez_list
    )

     
    아래 함수는 같은 방법으로 잠긴 레이어의 리스트를 만들고 잠긴 레어어의 리스트 값을 반환하는 함수입니다.

    (defun KiKO_lock_layer (/ w lay1 lock_list tmp) 
      (setq w T)
      (while (setq lay1 (tblnext "LAYER" w)) 
        (setq w   nil
              tmp (cdr (assoc 70 lay1))
        )
        (if (>= tmp 4) 
          (setq lock_list (append lock_list (list (cdr (assoc 2 lay1)))))
        )
      )
      (princ)
      lock_list
    )

     
    레이어의 꺼짐과 켜짐 값을 가지는 그룹코드는 62번 입니다.
    아래 함수는 Off 된 레이어의 리스트를 만들고 Off 된 레어어의 리스트 값을 반환하는 함수입니다.

    (defun KiKO_layoff_layer (/ w lay1 layoff_list tmp) 
      (setq w T)
      (while (setq lay1 (tblnext "LAYER" w)) 
        (setq w   nil
              tmp (cdr (assoc 62 lay1))
        )
        (if (< tmp 0) 
          (setq layoff_list (append layoff_list (list (cdr (assoc 2 lay1)))))
        )
      )
      (princ)
      layoff_list
    )

     
    아래 함수는 출력이 제한된 레이어의 리스트를 만들고 그 레어어의 리스트 값을 반환하는 함수입니다.

    (defun KiKO_prnoff_layer (/ w lay1 prnoff_list tmp) 
      (setq w T)
      (while (setq lay1 (tblnext "LAYER" w)) 
        (setq w   nil
              tmp (cdr (assoc 290 (entget (tblobjname "layer" (cdr (assoc 2 lay1))))))
        )
        (if (= tmp 0) 
          (setq prnoff_list (append prnoff_list (list (cdr (assoc 2 lay1)))))
        )
      )
      (princ)
      prnoff_list
    )

     
    아래는 첨부된 리습에 포함된 함수로서 각 레이어의 On/Off 상태를 스위치 형태로 전환하는 리습 함수입니다.
    On 의 값을 가진 레이어는 Off 로 Off 의 값을 가진 레이어는 On 으로 변경 시키는 함수니다.

     (KiKO_Layers_Modify g_code Layer_List)
      - g_code : 0 (켜기 / 끄기)  |  1 (동결 / 동결 해제)  |  4 (잠금 / 잠금 해제)  |  290 (출력 잠금 / 출력 잠금 해제)
      - Layer_List : 적용할 레이어 리스트 또는 레이어 이름
      - ex. : (KiKO_Layers_Modify 0 (KiKO_layoff_layer)) ;; 꺼진 모든 레이어를 켜기
      - ex. : (KiKO_Layers_Modify 0 "text") ;; "text" 레이어를 끄기 / 켜기
      - 스위치 형태로 동작합니다. 꺼져 있으면 켜지고 켜져 있으면 꺼집니다.

    즐거운 하루되시고 오눌도 빨리 퇴근 합시다.

     

    아래의 모든 리습은 'KiKO Lisp'에 모두 포함된 리습입니다.
    KiKO 리습 모음을 사용중이면 필요 없습니다.

    KiKO_Layer_Lisp (AutoCAD).7z
    0.04MB
    KiKO_Layer_Lisp (ZWCAD).zip
    0.05MB

     

    May the force be with you.

     

    AutoCAD 리습 - 캐드 도면 객체 숨기기 / 보이기 리습 - 레이어 숨기기, 문자 숨기기, 블럭 숨기기,

    객체를 레이어, 객체종류(문자, 블록, 치수, 폴리라인등), 라인타입, 색상 등으로 구분하여 숨기거나 선택 객체만 보이게 해주는 리습입니다. 캐드에서 제공하는 기본적인 레이어를 켜고 끄는 기

    kiko-lisp.tistory.com

    728x90
    반응형

    댓글

Designed by Tistory.