본문 바로가기
AutoCAD/AutoLisp

[AutoLisp] Defun - AutoLisp의 시작

by 배우고싶은 자 2024. 5. 6.
반응형

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