지금부터 AutoLisp의 규칙을 알아보도록 합니다.
1. 숫자
정수와 실수로 나뉜다.
정수는 1,2,3,4,5….. 실수는 1.2345 등
정수는 32bit범위를 갖는다. ( -2147483648 ~ +21474883647)
(참고, 일부의 정수는 -32768 ~ +32767의 16Bit 범위)
2. 문자열
Lisp에서는 사용자에게 전달을 하거나 데이터값으로 문자열을 사용한다.
“” 을 이용하여 표현하며 다음과 같이 사용한다.
예) “ABC” “홍길동”
문자열은 대소문자를 구분하지 않는다.
다만, 사용자에게 보여질 Prompt는 문자열 그대로를 보여주며, 변수와 상수는 구분하지 않는다.
3. () 괄호
AutoLisp은 반드시 괄호를 통하여 정의 시작부터 끝까지 표현한다.
표현식 : (함수 변수1 값1 변수2 값2 . . . . )
예) (Setq msg “AutoLisp을 시작합니다.”)
괄호로 시작, Setq는 정의함수, msg는 저장할 변수, “”msg에 저장할 문자열 값이다
또한 Lisp은 SDF (Space Decimal Format), 즉 공백으로 함수, 변수, 값들을 구분한다.
4. 각도
각도는 Degree와 Radian으로 표현한다.
Degree : 90도, 180도, 270도 등)
Radian : PI (3.14159..)으로 표현
Degree 180도 = Radian PI와 같다.
5. 주석(설명문)
AutoLISP에는 ";"과 ";| |;" 두종류의 설명문이 있다.
";" 은 1줄만을 설명문으로 설정한다.
";| |;" 은 ";|" 표시 부분부터 시작해서 "|;" 표시 부분까지 1줄 이상의 설명문을 설정한다.
6. 변수와 상수
1. 변수 이름은 문자와 숫자 그리고 특수문자로 구성된다.
2. 변수는 예약어를 제외하면 거의 모든 것을 사용할 수 있다.
3. 변수는 첫자 영문으로 시작하여 자유롭게 지정할 수 있다.
4. 변수는 문자열에서 소개한 바와 같이 대소문자를 구분하지 않는다.
7. 함수(내장함수)
함수는 프로그램에서 정의된 예약어로 각각의 기능을 가지고 있다.
즉, 함수를 많이 알면 프로그램을 만들면서 다양한 표현과 기능을 처리 할 수 있다.
표현식) (Setq A 1 B 2) => (함수 변수 인수 [변수 인수] …)
8. 기초함수
8-1. Setq함수 : 변수에 값을 저장한다. 일명 : 대입함수
표현식: (setq 변수 인수 . . . . )
예) (Setq A 1 B 2 C 3) => 각 함수와 변수, 인수는 (SDF)로 공간(스페이스)로 구분한다.
A = 1, B = 2, C = 3 과 같다.
Command:(+ A B) => 결과 : 3
Command: (- C B) => 결과 : 1
Command: (* B C) => 결과 : 6
8-2. Command함수 : AutoLisp에서 AutoCAD 명령을 실행하는 함수이다.
(Command “line” “5,5” “50,10” “”) : 5,5에서 50,10까지 Line이 그려진다.
(Command “circle” “5,5” 30) : 중심이 5,5이고, 반지름이 30인 원그리기
- command함수는 AutoCAD에서 사용하는 명령어 순서로 사용할 수 있다.
- 입력형식은 문자 또는 리스트는 “” 묶어주고, 숫자는 바로 입력이 가능하다.
8-3. Defun 함수 : 사용자 정의함수와 명령어를 선언한다.
표현식: (defun 함수명(인수 / 지역함수) )
예제1) (defun test()
(setq a (+ 1 2))
)
- test라는 정의함수에 1과 2를 더해서 a변수에 저장하는 예제이다.
- AutoCAD Command에 다음과 같이 입력해 본다.
- 그리고 !a를 해본다. 그러면 값이 3이 나온다.
예제2) (defun test1(a b)
(setq c (+ a b))
)
- 예제2는 a와 b의 값을 입력하면 더하기를 하는 정의함수를 선언했다.
- 사용은 (test1 5 4) [enter] 하면 값은 9가 나온다.
예제3) (defun C:test2()
(command “line” “5,5” “50,10” “”)
)
- 예제3은 Command함수를 이용한다.
- AutoCAD Command창에서 test2를 입력하면, Line이 그려질 것이다.
9. (defun 이란?
명령을 정의한다. 항상 시작을 (defun 으로 시작한다.
우선 캐드에서는 "("로 시작하여야 AutoLisp 구문으로 인식함.
반드시 괄호 (열고 )닫고 숫자가 짝이 맞아야 된다.
10. C: 이란?
command란 AutoLisp에서 명령어를 정의할 때 사용한다.
"C:" 가 있어야만 명령어로 사용할 수 있고, "( 명령어 ) "로 내부 함수로 사용할 수 있음.
(defun c:cc()
(command "circle" "10,20" "50")
)
10,20 좌표를 기준으로 반지름이 50인 원을 그리는 명령을 만들어 본다.
(defun c:li()
(command "line" "10,10" "200,200")
)
이렇게 하면 (10,10)에서 (200,200) 으로 선을 그리는 명령 실행.
AutoCAD에서 Line 명령을 사용하는 것 같다.
6. Setq 함수
Setq는 변수의 값을 지정한다.
<형식1> (setq 변수1 값1 변수2 값2 변수3 값3 …)
<형식2>
(setq 변수1 값1
변수2 값2
변수3 값3
)
형식1, 형식2는 같이 한줄 또는 여러줄로 ( 괄호가 열려 ) 닫힐 때까지 사용이 가능하다.
값1을 변수1에, 값2를 변수2에 , 값3를 변수3에 …. 사용할 수 있으며, 마지막 괄호를 닫아준다.
예)
(Setq strValue "Sample") - strValue변수에 " Sample " 값을 저장한다.
(Setq strValue " Sample " nLoc 1) - str변수에 "Test"가 저장되고, nLoc 라는 변수에 1이 저장된다.
(Setq strValue " Sample "
index3 6
index4 2)
- str 변수에 "Test"가 저장되고, Index1에 4를 Index2에 2를 저장한다.
여기에 숫자 변수들이면 사칙연산을 할 수 있다.
(+ index3 index4) => 8
(- index3 index4) => 4
(* index3 index4) => 12
(/ index3 index4) => 3
다음회에 계속..
'AutoLisp' 카테고리의 다른 글
[AutoLisp]오토캐드 AutoLisp 강좌 예제 - 오토리습을 이용한 사각형(Rectang) 만들기 예제 (0) | 2024.05.25 |
---|---|
[AutoCAD]AutoLisp 강좌 예제 - AutoCAD DXF 객체정보 확인하기 (0) | 2024.02.23 |
[AutoCAD]오토캐드 AutoLisp 강좌 예제 - AutoLisp으로 단축키를 만들기 (0) | 2024.02.23 |
[AutoCAD]오토캐드 AutoLisp 강좌 예제 - 폭이 존재하는 폴리선 만들기 (0) | 2024.02.23 |
[AutoCAD] 오토캐드 에서 AutoLisp 강좌 예제 - 오토리습으로 길이를 구하기 (0) | 2024.02.21 |