2. 리습으로 캐드명령어 사용 해 보기 - (command)
목표
캐드에서 자체적으로 제공하는 명령어(Line
, Rectangle
등)을 리습으로 실행 해 봅시다.
(command) 함수로 캐드명령어 실행
캐드에서 이미 사용 해 왔던 명령어들은 (command)
함수로 동일하게 실행 할 수 있습니다. (command)
함수로 선을 한 번 그려봅시다. 아래의 코드를 복사해서 캐드 명령어창에 붙여넣어 실행 해 보세요.
1
(command "line")
캐드 명령어 창에 line
을 실행한 것과 동일한 기능이 실행되는 것을 확인 하실 수 있습니다.
설명
리습(LISP)
언어에서는 모든것이 (
로 시작해서 )
로 끝나는 리스트로 이루어져 있습니다. 따라서 함수조차도 리스트로 구성됩니다. 리스트의 각 요소들의 구분은 공백 입니다. 띄어쓰기, 탭, 엔터 중 어느것이라도 상관없습니다.
함수명은 리스트의 첫 번째 요소이며, 그 함수에 필요한 인자들은 두 번째 요소부터들어가게 됩니다. 즉 함수의 두 번째 요소는 첫번째 인자, 세 번째 요소는 두번째 인자.. 이런 식입니다 위 리스트의 첫 번째 요소는 command라는 함수명이 들어있고, 두 번째 요소는 (command)
함수 실행에 필요한 첫 번째 인자인 실행 할 명령어입니다. 이 명령어는 ""
(큰따옴표)안에 들어가야 합니다. 리습에서는 문자열을 ""
안에 입력합니다.
좌표를 입력 해 봅시다
단순히 명령어 하나만 입력할거라면 굳이 command를 사용 할 필요도 없겠죠. 이제 좌표를 넣어서 한번의 입력으로 선 객체를 하나 만들어 봅시다.
1
(command "line" "0,0" "100,100" "")
이 리습을 실행 해 보면 (0,0)
과 (100,100)
를 두 점으로 하는 선
이 그려지게 됩니다.
설명
(command)
함수에 필요한 인자들은, 명령어를 실행하면서 추가로 입력받는 값들과 순서가 동일합니다. 여기서 인자란, 함수실행을 위해 넣어줘야 하는 입력값입니다. 캐드에서 명령어를 실행하면, 입력받는 값들의 순서가 정해져 있습니다. line
명령어를 사용해서 위와 동일한 선을 만들 때, 선 객체를 생성하기 위해 필요한 값들을 순서대로 입력한 후, 명령어창에 남은 내용을 보면 다음과 같습니다.
먼저 저는 line 명령어를 사용하기 위해서 단축키인 L
을 입력했습니다. 그러면 바로 다음 줄에 원래 명령어인 LINE
이 입력되어 실행됩니다. LINE명령은 점 2개를 입력받습니다. 저는 순서대로 0,0
, 100,100
을 입력했습니다. 마지막으로 추가적인 선 객체를 생성하지 않을 것이기 때문에, 아무것도 입력하지 않은 상태에서 스페이스바
를 한번 눌러서 LINE명령을 종료했습니다.
따라서 위의 그림과 같이, 실제적으로 명령어창에 입력된 정보들은 순서대로 다음과 같습니다.
LINE
,0,0
,100,100
,스페이스바
이걸 command함수에 사용 할 경우에는, 각각의 값을 ""
안에 넣어서 문자열로 만들어야 합니다.
"LINE"
,"0,0"
,"100,100"
,""
스페이스바는 아무것도 입력하지 않은 것이므로 두 "
안에 아무것도 넣지 않습니다.
이걸 (command)
함수에 넣게되면 다음과 같이 됩니다. 각 인자들은 공백으로 구분합니다.
(command "LINE" "0,0" "100,100" "")
만약 시작점으로부터의 상대좌표로 선을 만들고 싶다면, 명령어 사용하실 때와 동일하게 앞에 @
를 추가하시면 됩니다. 예를 들어 아래 두 명령어는 동일하게 50,50
과 200,200
를 두 점으로 하는 선을 만들겠죠
1
(command "LINE" "50,50" "@150,150" "")
1
(command "LINE" "50,50" "200,200" "")
(command)
함수로 실행할 명령어에 어떤값이 어떤순서로 들어가는지 모르겠다면, 우선 그 명령어를 실행해서 원하시는 기능을 수행 해 보세요. 그 후에F2
(명령어창 확장) 또는Ctrl
+F2
(명령어창 띄우기)를 누르면, 순서대로 어떤 값들이 입력되었는지를 확인 할 수 있습니다. 그 값들 각각을 순서대로""
로 감싸서command
함수에 순서대로 넣어주시면 됩니다.