AutoCAD/Lisp강좌

"COMMAND" 1 / 3

바람의나라 2007. 6. 5. 17:37
  이번 강좌는 아주 중요한 강좌입니다.!  리습 함수의 사용법을 확실하게 이해 할 수 있도록 구성한 강좌 거든요~ 앞강좌에서 배웠던 함수인 "SETQ"와 "GETPOINT", 그리고 "COMMAND"를 이용해서~ 아주 재미있는(?) 예제를 해보겠습니다. ^^;  이번 강좌도 가벼운 마음으로 읽어 주시면 감사하겠습니다. 전에도 한번 말씀 드린적이 있는 것 같은데요~  저는 기본적으로 어려운 말 써놓고 알아서 이해 하라는 식의 강좌는 안합니다! 부드럽게~~ 은근슬쩍~~ 편안하게~~ 보시면 되겠습니다.   그럼!!!

앞강좌의 마지막에 갑자기 등장한 녀석이 있죠! 네! 바로 요넘!~ "COMMAND"
그럼~과연~"COMMAND"는 무었인가?    설명하기 전에~ 앞강좌에서 나온 그! 문제의 소스를 보시죠!!    
잠깐!~ 전문용어 출현!   소스(Source): 어떤 정보를 제공하는 사람이나 자료. 라는 사전적인 의미를 가지고 있습니다. 그러나~ 여기서 말하는 소스는 프로그래머(프로그램 만드는사람)가 코딩한 프로그램의 컴파일되기 전~ 아스키형태의 텍스를 말합니다.!!
또!! 잠깐!~ 계속된는 전문용어의 출현!! 코딩(coding)~ 컴파일(Compile)은 뭐야?  음... 이런 용어들은 컴퓨터 프로그램을 구멍(?) 뚤어가면서 만들 때 생긴 아주 의미있는 말이므로... 생각 할 필요 없습니다.  코딩은~ 쉽게 생각해서 프로그래머가 프로그램 만드는 것을 생각하시면 됩니다.
   컴파일(Compile): 음... 리습에서는 큰 의미는 없습니다만~  쉽게 설명 드릴께요~ 오토캐드의 예를 드는 겁니다.~ 대화상자파일(나중에 설명^^)이나 리습 소스파일들을 묶어 버리는 것을 말합니다. 다른 프로그래밍 언어에서는 좀 다르지만, 전체적은 의미에선 같다고, 볼수 있죠~
  아스키코드(ASCII) : 정보교환용 미국 표준코드 입니다. 우리가 모니터 상에서 읽을수 있는 알파벳이나 여러가지 기호!  나름대로 사연이 많은 뜻인데여.... 간단하세 설명해서 우리가 눈으로 보고 읽을수 있는 글을 말합니다.  (조금 아시는 분들은 딴지걸 수 도 있는데여 한글은 유니코드^^ ) 너무 심각하게 생각하지 마세요~
  소스에 대한 정말 간단 하게 설명드리면, 프로그래머가짠 프로그램을 말하는겁니다. ^^;  이렇게 쓸때 없을 것 같은 글들을 쓰는 이유는! 알고 있어서 나쁠건 없으니까요~^^ 아 그리고 더 자세하게 알고 싶으신 분들은 뎃글 다세요!!  (구멍? 무슨구멍?)

소스-1
(DEFUN C:GPoint()
     
(SETQ P1 (GETPOINT))
     
(SETQ P2 (GETPOINT))
     
(COMMAND "CIRCLE" P1 P2 ) //나중에 설명
)

"COMMAND"함수 뒤에 써있는 글자를 잘 보세요^^ 많이 봤던 글자죠?  네!! 맞습니다! 원을 그리는 명령어죠~ 그리고 "P1"과 "P2"는 다들 아시겠지만~ 사용자가 찍은 임의의 점을 저장한 변수죠?  이해가 안되시나요? 그럼 요기에~ 들어갔다 오세여~


"COMMAND"라는 함수는 우리가 알고 있는 오토캐드 명령어를 실행 하는 함수입니다. 위에서 사용한 "CIRCLE"라는 오토캐드 명령어를 생각해 보세요~  Command:(명령)에 "CIRCLE"라고 입력한 뒤~ 작업공간에 임의의 점 두 곳을 찍어보세요~ 그러면 원이 생기죠?  아래그림 처럼여~^^

이 프로그램을 보고~ 이런 생각을 하는 분들도 계실겁니다! "CIRCLR"명령이랑 같은 기능아냐? 그런데 뭐아 프로그램이야?  그래서~ 준비 했습니다. "GETPOINT"와 "COMMAND"를 이용한 몇가지 프로그램을....

일단 따라 해 보시고, 이해는 나중에~~~
다음의 내용을 선택해서 복사 한 후에~ Command:(명령)에 붙여보세여 ^^
소스-2
(DEFUN C:CIRDIA()
 
(SETQ P1 (GETPOINT))
 
(SETQ P2 (GETPOINT))
 
(COMMAND "CIRCLE" P1 P2 )
  ;; 오토케드 구 버젼에서는 아래 코드로 변경해 주세요.
  ;;(COMMAND "TEXT" "J" "MC" P1 "2.5" "0" P1 (DISTANCE P1 P2 ) "" )

  ;; 2006과 2007에서 테스트한 코드입니다.
  (COMMAND "TEXT" "J" "MC" P1 "2.5" "0" (DISTANCE P1 P2 ) "" )
)

Command:(명령) 에 "CIRDIA"라고 입력한 후에~ 오토캐드 작업공간의 임의의점 두곳을 찍어보세여!

그림처럼 결과가 나왔나요? 그럼 성공!!!

원의 가운데에 생성된 글자는 원의 반지름 입니다. 쩝...  어설프지만, 응용한 프로그램이랍니다. 하!하!

"COMMAND"에 대한 내용은 다음강좌에 더욱~ 더~ 자세하게 배우게 될 것입니다. "COMMAND"함수만 확실하게 배워도~ 그럭저럭 뭔가를 만들어서~ 활용 할 수 있으나까~ 기대 하세요! 그럼 다음 강좌가 올라올때 까지...   아윌비백!