오토캐드 레이어 변경 리습|숫자로 Layer 자동 변경하기

AutoCAD 리습으로 객체 선택 후 숫자로 레이어 변경하기

객체를 선택하고 숫자 하나만 입력하면 원하는 Layer로 바로 변경할 수 있도록 만들어봤습니다.

안녕하세요. Happy Purple Bear입니다. 🐻

이번에는 자동화 장비 설계를 하면서 자주 사용할 만한 AutoCAD 레이어 변경 리습을 하나 만들어봤습니다.

기능 자체는 어렵지 않습니다.

객체를 선택하고 → 숫자를 입력하면 → 해당 숫자의 Layer로 변경됩니다.

그런데 여기서 한 가지를 더 넣었습니다.

만약 입력한 번호의 Layer가 도면에 없다면, Layer를 자동으로 만들어주도록 했습니다.

📌 이번 리습의 핵심 기능

  • 객체 선택 후 숫자로 Layer 변경
  • Layer가 없으면 자동 생성
  • 새 Layer의 색상과 선종 자동 설정
  • 필요한 선종이 없으면 acad.lin에서 자동 로드
  • 이미 존재하는 Layer의 설정은 변경하지 않음
  • 필요한 Layer만 사용할 때 생성

사용 명령 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14

📥 LISP 파일 다운로드

아래 ZIP 파일을 다운로드한 후 압축을 풀어서 LISP 파일을 사용하면 됩니다.

📥 numLayer.zip 다운로드

리습 사용법

1. 캐드 선의 색상 및 종류 관리

AutoCAD로 기계 도면을 작업하다 보면 객체의 Layer를 바꾸는 일이 생각보다 자주 생깁니다.

특히 회사나 프로젝트에서 Layer를 일정한 규칙으로 관리한다면 더 그렇습니다.

예를 들어 빨간색은 중심선, 노란색은 숨은선, 초록색은 일반 형상처럼 정해놓고 작업하는 경우가 있죠.

이럴 때 매번 Layer 목록을 열어서 원하는 Layer를 찾아가는 것도 방법이지만, 객체가 많아질수록 조금씩 귀찮아집니다.

그래서 아예 “객체 선택 → 숫자 입력”으로 끝내보자는 생각에서 만든 리습입니다.

예를 들어

객체 선택 → 1 입력 → Layer 1

객체 선택 → 2 입력 → Layer 2

객체 선택 → 6 입력 → Layer 6

2. 기존 사용하던 레이어 변경 리습

사실 처음에는 굉장히 간단한 LISP로 시작했습니다.

(DEFUN C:1 (/ SS)
  (SETQ SS (SSGET))
  (COMMAND "CHANGE" SS "" "P" "LA" "1" "")
  (PRIN1)
)

이 코드의 좋은 점은 단순하다는 것입니다.

복잡한 기능을 넣지 않고 AutoCAD에서 원래 제공하는 CHANGE 명령을 그대로 이용하기 때문에 동작도 직관적입니다.

그래서 이번에도 객체를 Layer로 변경하는 부분은 기존 방식을 그대로 사용했습니다.

리습 사용법 2

그런데 실제로 사용하다 보니 한 가지 불편한 점이 있었습니다.

Layer가 없는 경우입니다.

예를 들어 Layer 14로 객체를 보내려고 했는데 현재 도면에 Layer 14가 없다면 어떻게 해야 할까요?

기존 방식에서는 먼저 Layer를 직접 만들어야 합니다.

그리고 색상도 지정하고, 필요한 경우 선종도 지정해야 합니다.

그 다음에 다시 LISP를 실행해야 하죠.

3. 수정된 레이어 변경 리습의 추가 기능

리습 비교

기존 방식

Layer 없음 → Layer 직접 생성 → 색상 설정 → 선종 설정 → 객체 변경


이번에 개선한 방식

객체 선택 → 숫자 입력 → Layer 확인 → 없으면 자동 생성 → 객체 변경

여기서 이번 LISP의 핵심 기능 Layer 자동 생성이 추가됩니다.

숫자 명령을 실행했을 때 해당 Layer가 있는지 먼저 확인합니다.

Layer가 있으면 그대로 사용합니다.

Layer가 없다면 새로 만들고, 미리 정해놓은 색상과 선종까지 적용합니다.

그리고 마지막에는 원래 사용하던 CHANGE 명령으로 객체를 해당 Layer로 변경합니다.

즉, LISP가 하는 일은 딱 이겁니다.

① 객체 선택

② 숫자 명령 실행

③ Layer가 있는지 확인

④ 없으면 Layer 생성

⑤ 색상과 선종 설정

⑥ 선택한 객체를 해당 Layer로 변경

4. 명령어 별 선 종류

현재 사용하는 숫자와 Layer 설정은 다음과 같습니다.

명령Layer색상선종
00기존 설정기존 설정
11Red / ACI 1CENTERX2
22Yellow / ACI 2HIDDENX2
33Green / ACI 3Continuous
44Cyan / ACI 4Continuous
55Blue / ACI 5Continuous
66Magenta / ACI 6PHANTOM
77White / ACI 7Continuous
88ACI 8Continuous
99ACI 9Continuous
1010ACI 10Continuous
1414ACI 14Continuous

여기서 중요한 부분이 있습니다.

모든 Layer를 한꺼번에 만드는 것은 아닙니다.

예를 들어 Layer 14가 필요하지 않다면 굳이 Layer 14를 만들지 않습니다.

14 명령을 실행했는데 Layer 14가 없을 때 그 순간 자동으로 생성됩니다.

5. 사용된 AutoLISP 문법

이번 기회에 LISP 코드를 핵심 부분만 살펴보겠습니다.

① DEFUN — 명령 만들기

(DEFUN C:1 (/ SS)

DEFUN은 함수를 정의하는 명령입니다.

C:1이라고 작성했기 때문에 AutoCAD 명령창에서 1을 입력하면 이 함수가 실행됩니다.

② SETQ + SSGET — 객체 선택

(SETQ SS (SSGET))

여기서는 사용자가 선택한 객체를 SS라는 변수에 저장합니다.

SSGET이 실제 객체 선택을 담당하고, SETQ가 그 결과를 변수에 넣어주는 역할이라고 생각하면 됩니다.

③ IF — 선택했을 때만 실행

(IF SS
  (...)
)

객체를 선택하지 않고 Enter를 눌렀다면 아무 작업도 하지 않도록 하는 부분입니다.

즉, “SS에 선택된 객체가 있을 때만 다음 작업을 실행한다.”라고 보면 됩니다.

④ PROGN — 여러 작업 실행

(PROGN
  (HPB-MAKE-LAYER "1" 1 "CENTERX2")
  (COMMAND "CHANGE" SS "" "P" "LA" "1" "")
)

Layer를 준비하는 작업과 객체를 변경하는 작업처럼 여러 명령을 한 번에 실행할 때 사용합니다.

⑤ COMMAND — AutoCAD 명령 실행

(COMMAND "CHANGE" SS "" "P" "LA" "1" "")

실제 객체의 Layer 변경은 여기서 이루어집니다.

CHANGE 명령을 실행하고, 선택한 객체의 Properties에서 Layer를 1로 변경하는 흐름입니다.

6. Layer가 있는지 확인 방법

Layer 자동 생성 기능을 만들려면 먼저 “이 Layer가 이미 존재하는가?”를 확인해야 합니다.

(tblsearch "LAYER" NAME)

tblsearch를 이용하면 AutoCAD의 Layer 테이블에서 해당 이름이 존재하는지 확인할 수 있습니다.

(if (not (tblsearch "LAYER" NAME))
  (progn
    ; Layer 생성
  )
)

이 구조는 간단하게 말하면 “Layer가 없을 때만 생성한다.”는 뜻입니다.

따라서 이미 존재하는 Layer의 색상이나 선종은 건드리지 않습니다.

리습 설명

7. 선의 색상과 종류 선택 방법

새로 만든 Layer라면 색상과 선종도 지정해야겠죠.

(vla-put-Color LAY COLOR)

이 부분에서 Layer의 ACI 색상을 지정합니다.

(vla-put-Linetype LAY LTYPE)

그리고 이 부분에서 Layer의 선종을 지정합니다.

그래서 Layer 1을 처음 만들었다면 빨간색 + CENTERX2가 자동으로 설정되고, Layer 2라면 노란색 + HIDDENX2가 설정됩니다.

8. 필요한 선의 종류가 없는 경우

여기서 또 하나 생각해야 할 부분이 있습니다.

Layer는 없으면 만들면 되지만, CENTERX2나 HIDDENX2 같은 선종 자체가 현재 도면에 로드되어 있지 않을 수도 있습니다.

그래서 이번 LISP에서는 필요한 선종이 없으면 acad.lin에서 자동으로 불러오도록 했습니다.

(vla-Load LTYPES LTYPE "acad.lin")

덕분에 새로운 도면에서 선종을 일일이 불러오는 작업도 줄일 수 있습니다.

9. numLayer 리습 사용법

① LISP 불러오기

먼저 위의 ZIP 파일을 다운로드하고 압축을 풉니다.

그 안에 있는 LISP 파일을 AutoCAD에서 APPLOAD로 불러옵니다.

APPLOAD

② 객체 선택

도면에서 Layer를 변경할 객체를 선택합니다.

③ 숫자 입력

원하는 Layer 번호를 입력합니다.

예를 들어 1을 입력하면 선택한 객체가 Layer 1로 변경됩니다.

Layer 1이 없다면 자동으로 만들어집니다.

🐻 한 줄 요약

객체 선택 → 숫자 입력 → Layer 변경 완료

10. 글을 마치며..

이번 AutoCAD 레이어 변경 리습은 거창한 기능을 만드는 것보다는 실제 작업하면서 귀찮았던 부분을 하나씩 줄여보자는 생각으로 만들어봤습니다.

기존에는 객체를 선택하고 Layer를 찾아서 변경하면 됐습니다.

이번에는 여기에 숫자 명령을 연결하고, Layer가 없으면 자동으로 생성하도록 했습니다.

결국 사용자는 객체를 선택하고 숫자만 입력하면 됩니다.

이런 식으로 AutoLISP를 하나씩 만들어가다 보면 처음에는 어려워 보였던 LISP 문법도 실제 작업과 연결해서 이해하기 쉬워집니다.

특히 DEFUN, SETQ, SSGET, IF, PROGN, COMMAND 정도부터 익혀두면 간단한 오토캐드 리습은 직접 수정하거나 만들어볼 수 있습니다.

📥 다시 다운로드하기

HPB Layer Change — numLayer.zip

관련 검색어

AutoCAD 리습 · 오토캐드 리습 · AutoLISP · 레이어 변경 리습 · 레이어 자동 생성 리습 · AutoCAD Layer 변경 · 리습으로 레이어 변경 · 오토캐드 레이어 단축키 · 객체 선택 후 숫자로 레이어 변경 · AutoCAD Layer 자동 생성 · AutoLISP 초보 · AutoLISP 문법

참고: 본 내용은 자동화 기계설계와 관련된 일반적인 기술 정보를 정리한 것입니다. 실제 설계 및 적용 시에는 제조사 사양, 제품 조건, 현장 환경 및 관련 안전 기준을 반드시 확인하시기 바랍니다.
Happy Purple Bear (HPB)
Automation Machine Design Knowledge
hapurbe.com