반응형
Defun은 Define Funtion 으로 Lisp의 함수를 구성하는 시작이 된다.
Lisp언어에서 모든 함수는 "( ) 괄호로 시작하여 괄호로 마무리 되어야 한다" 구성은 아래와 같이 구성된다.
1. Defun 기본 코드 구성
(defun function-name (/ parameter1 parameter2 ...)
(code...)
)
1-1) function-name
- 사용할 명령어를 입력하면 된다. Ex) add로 사용해보도록 하자
- add - AutoCAD에서 명령어 입력으로 사용 불가, 다른 Lisp등에서 add등으로 불러올 수 있다..
- c:add - AutoCAD에서 명령어 입력으로 사용 가능 (명령어 : add)
- c:라는 것을 명령어 앞에 붙여 사용자가 명령어를 입력하여 사용할 수 있게 만드냐의 유무인 것 같다.
1-2) (/ parameter1 parameter2 ...)
- ( 전역변수 / 지역변수 ) 전역변수와 지역변수를 구분하는 공간이다.
- "/" 다음에는 공백(Space)가 필수로 들어가야 한다.
- 추후 전역변수와 지역변수 관련 글 작성 시 링크를 걸어두도록 하겠다.
1-3) Code
- 위에 말 했듯 () 괄호로 시작해서 괄호로 끝나야 하며, 괄호안에 모든게 구성이 된다.
- Line이라는 명령어를 실행하는 코드를 작성할 수도 있고, Osanp 구성을 변경시키는 등 시스템 변수등을 설정할 수도 있다.
코딩을 전혀 해본적 없는 나도 처음에는 위 처럼 설명하더라도
무슨 소리인지 전혀 이해할 수 없었다,
간단한 코드를 통해 이해를 해보도록 하자.
2. 사용 예시
(defun c:ADD (/)
(setq a 10)
(setq b (getpoint))
(COMMAND "._CIRCLE" b a)
)

처음 보면 code는 세줄 정도밖에 안되지만, 이게 뭐지 싶을것이다. 천천히 살펴보도록 하자.
2-1) Setq
- set quote의 약자이다 setq 뒤를 기준으로 홀수번째를 변수로 인식하고 짝수번째를 변수 값으로 인식한다.
- 여러 변수를 한번에 정의할 수 있으나 필자의 경우 가독성이 떨어진다고 판단된다.
- Ex) (setq a 10 b 20) - a 변수 생성 a에 10을 할당, b 변수 생성 b에 20을 할당한다.
2-2) Getpoint
- 사용자가 입력점을 클릭하여 좌표값을 받는다.
- getpoint 뒤에 상대 좌표값을 받거나, 텍스트를 띄울 수 있지만 그건 getpoint에서 배우도록 하자.
2-3) Command
- AutoCAD에서 우리가 CIRCLE과 같은 명령어를 사용하는 것과 완전 동일하게 작동한다.
- 명령어는 " "로 감싸야 하며, "CIRCLE"와 같이 무조건 Full Name으로 입력해야 한다. (단축명령어는 안된다)
반응형
'AutoCAD > AutoLisp' 카테고리의 다른 글
[AutoLisp] Setq - 변수 정의 (0) | 2024.05.06 |
---|---|
[AutoLisp] AutoCAD Lisp 사용을 위한 Setting (0) | 2024.04.29 |