지식은 공유되었을 때 그 힘을 발휘한다.



Excel VBA, AutoCAD ActiveX 맛보기 강좌(21)

Model space에 Entity추가하기(1)

오늘부터는 드디어 캐드에다 엔티티를 만들어보도록 하겠습니다. 지금까지는 계속 직접실행창에다 테스트를 해보았습니다. 테스트하는데는 역시 직접실행창이 최고지요? 하지만 이제부터는 직접 실행창을 버리고 sub로 만들기로 하겠습니다. 지난번 강좌에서 AutoCAD개체 아래에는 document가 있고 이것을 dwg파일을 뜻하고, 그 아래에는 model space와 paper space가 있는데 우리는 주로 model space에다 도면을 그린다고 했습니다. 바로 이 model space라는 개체는 여러가지 entity들을 거느리고 있습니다. 라인, 원, 텍스트등이겠죠. 이러한 개체들을 만들기 위해서 model space는 add어쩌고 저쩌고 하는 메서드를 지원합니다. 일단 model space개체의 구성을 알아볼까요? 도움말 쓰시는데 어느정도 익숙해졌으리라 믿습니다. 이번에는 어제 말씀드린 AutoCAD개체 모델을 통해서 model space의 메서드,속성들을 알아보도록 하겠습니다. 아래와 같이 AuotCAD 개체 model을 띄우고 model space를 선택합니다. 이 모델은 일목요연하게 볼 수 있어서 좋습니다.



그러면 대충 아래와 같은 내용이 나올 것입니다. paper space에 대한 설명이죠. 위서부터 개요가 나오고 아래왼쪽에는 메서드가 오른쪽에는 속성이, 맨 오른쪽에는 이벤트가 나옵니다. 우리가 관심있는것은 메서드와 속성입니다.



메서가 몇개보이는데.. 어떤 놈으로 골라서 테스트를 해볼까요? 음.. 서클이 보이네요.. addcircle메서드..메서드 이름을 보면 미루어 짐작이 되지요.. 어느정도 addcircle... = circle을 더해라.. 머 그런뜻일가요? modelspace에 서클을 더하라는 이야긴데.. 한번 해보도록 하지요. 직접실행창이 아닌 코딩을 해야하니까 프로젝트창에서 오른쪽 마우스를 눌러 삽입/모듈을 눌러 새로운 모듈을 하나 만듭니다.

그리고 첫라인을 어떻게 시작해야 할까요? 당연히 sub로 시작해야 겠지요. sub 하고서.. addc()라는 이름으로 매크로를 작성하도록 하지요... 그다음은 변수선언부인데.. autocad개체를 담아둘 object형 변수가 필요하지요? 일단 나머지 것들은 나중 선언 하기로하고 acad라는 object형변수부터 선언하합니다. 그리고 캐드와 연결시키는 코드를 작성합니다. 기억나시나요? getobject()함수..

Sub addc()
  dim acad as obejct
  set acad = getobject(,"AutoCAD.apllication")
  msgbox acad.name
End sub  

일단 욕심내지 말고 여기까지 한번 테스트해보도록 할까요? 단세줄의 코드이니까 모두들 이해하실 수 있을 거라 생각됩니다. acad변수에다 set을 이용해서 autocad.applicatoin을 잡아 넣고, msgbox를 이용하여 acad 변수에 담겨진 개체의 이름을 보여줘라~ 라는 코드입니다. 실행결과는..



위 그림과 같이 AutoCAD라는 썰렁한 메세지만 보여줍니다. 하지만 무엇인가 AutoCAD와 정확하게 교감이 이루어졌다는데 의미가 있는 것이겠죠.
modelspace에 circle을 추가하는 프로그램을 만들기로 했는데 문턱에서 끝나네요.. 그럼 내일 계속하도록 하겠습니다.



dolljong@dreamwiz.com