CAD란 Computer Aided Design의 약어로서 도면 설계 및 제도를 할 때
컴퓨터를 이용하여 설계를 할 수 있는 컴퓨터 그래픽 소프트웨어를 말합니다.
AutoCAD란 AutoDesk사에서 1982년 Release 1을 시작으로 계속 기능이 강화되어 왔으며
현재는 AutoCAD-2012(Release 18)까지 발표가 되었습니다.
AutoLISP란
AutoCAD를 좀 더 효과적이고 유용하고 간편한 환경을 제시(더 빠르게) 할 수 있는 프로그래밍 언어
부가설명 : AutoCAD + LISP(List Program)
○ AutoCAD의 도면 설계시 유용하게 사용할 수 있는 함수만 골라서 AutoCAD에 접목시킨 것.
○ AutoCAD에 없던 명령을 새로 만들수 있는 컴퓨터 언어이다.
○ 접근이 쉽고 프로그램도 간단하여 누구나 프로그램하여 원하는 기능을 빨리 할 수 있다.
○ 오토캐드를 사용할 때 발생되는 반복적인 작업을 단순화시키며 생산성을 높여준다.
여기까지는 고리타분한 이론적인 애기이구요..
현실적인 이야기를 할까 합니다.
리습은 데이터 관리에 매우 강한 언어입니다.
캐드의 모든 객체는 데이터로 이루어졌죠..
라인이 어떻해 이루어졌는지 확인해보면 아래처럼 이루어졌습니다.
(
(-1 . <도면요소 이름: 7ffffb43820>)
(0 . LINE)
(330 . <도면요소 이름: 7ffffb419f0>)
(5 . 992)
(100 . AcDbEntity)
(67 . 0)
(410 . Model)
(8 . Revision)
(100 . AcDbLine)
(10 25014.3 17307.2 0.0)
(11 25350.1 17307.2 0.0)
(210 0.0 0.0 1.0)
)
앞쪽에 있는 번호가 캐드에서 정의한 것 들이고
뒤쪽에 있는 Item이 매번 변화하는 값들입니다.
(0 . LINE) ;<- 0 은 객체의 이름을 뜻하고 뒤쪽의 Item은 라인 이라는 거죠..
(8 . Revision) ;<- 8 은 레이어라는 뜻이고 뒤쪽의 Item은 "Revision"이라는 레이어명이죠
(10 25014.3 17307.2 0.0) ;<- 10 은 라인의 시작점을 뜻하고 뒤쪽은 좌표값 입니다.
(11 25350.1 17307.2 0.0) ;<- 11 은 라인의 끝점을 뜻하고 뒤쪽은 좌표값 입니다.
이 데이터는 모두 LIST로 이루어졌습니다.
LISP은 이러한 LIST를 다루기에 매우 적합한 언어라서 AutoCAD에서 이 리습을 도입하여
AutoLISP이라고 명칭하였고 사용자에게 새로운 명령을 만들어서 사용할 수 있게 개방시켜 준겁니다.
AutoLISP은 AutoCAD안에서만 작동하는 언어입니다. 따라서 버전을 타지 않습니다.
컴퓨터가 발전하면서 운영체제도 발전했습니다.
마이크로 소프트사에서 모든 프로그램간에 호환을 할 수 있게 ActiveX라는것을 발표했습니다.
ActiveX는 모든것을 객체로 다루는 기술입니다.
객체에는 특성이 있고 메써드로 나누어집니다.
운영체제 안에서 캐드를 바라보면 하나의 객체입니다. 엑셀을 바라보면 엑셀도 하나의 객체입니다.
캐드 객체안을 들여다 보면 열려있는 화일들이 있고 이 화일 하나하나는 객체이고
화일안에는 모델공간이 있고 이 모델공간도 하나의 객체이고 모델공간 안에는 라인이 있습니다.
이 라인도 하나의 객체입니다.
이렇게 모든걸 객체로 접근해서 정보를 쓰기도 해주고 가져오기도 해주고 변경도 시켜줍니다.
이 ActiveX를 리습이 도입하면서 비줠리습 이라고 하는거 같습니다.
정확히 이거 하나 도입한걸 비줠이라고 하기에는 좀 그렇구요..
캐드2000 버전부터 기존 리습에 새로운 함수들이 추가되었고 ActiveX도 도입하였고
캐드에 리습편집기가 내장되게 한후에 비줠리습이라고 한거 같습니다.
만약 라인의 시작점의 좌표를 가져오려고 할때
AutoLISP로 한다면
(setq sel (entsel "\n라인 선택: ")) ;<- 라인을 선택해서 변수 sel에 저장해라
(setq ent (entget (car sel))) ;<- 선택한 객체의 정보를 볼수 있게 변수 ent에 저장해라
(setq startPoint (cdr (assoc 10 ent))) ;<- 라인의 시작점을 변수 startPoint에 저장해라..
VisulLISP으로 한다면
(setq sel (entsel "\n라인 선택: ")) ;<- 라인을 선택해서 변수 sel에 저장해라
(setq obj (vlax-ename->vla-object (car sel))) ;<- 라인객체를 비줠로 다룰수 있는 객체로 변경해서 변수 obj에 저장해라
(setq startPoint (vla-get-StartPoint obj)) ;<- 라인의 시작점을 변수 startPoint에 저장해라..
리습강의를 하려고 하는게 아니니깐..설명은 여기까지만 하고..
캐드와 사용자간에 리습이 개입하여 중간역할을 해서 사용자가 원하는 결과를 만들어줍니다.
그런데 리습과 사용자간에 어떤 값을 받아야 할때가 있습니다.
위의 구문처럼 라인을 선택하게 했는데..
만약 어떤 값을 받아야 하는게 한가지가 아니고 여러개라면
리습을 실행시킬때 마다 여러개의 값을 하나씩 받기가 불편하네요..
이걸 극복하고자 새로운 언어인 DCL을 리습에서 도입시켰습니다.
DCL(Dialog Control Language) 대화상자 조정언어
문자로만 하나 하나 얻던 값들을 DCL을 통해서 한번에 여러개의 값을 받을 수 있고
그림으로 보여지게 해서 선택하게도 했죠..
이렇게 얻어진 값들을 리습에서 이용하는 방식입니다.
그런데 여기에도 문제점이 있습니다.
1. 문자를 사용해서 창을 디자인해야 합니다.
2. 창이 떠 있는 동안은 리습이나 캐드의 통제가 안됩니다.
3. DCL 언어가 적용된 텍스트 화일을 별도로 만들어서 리습과 접목해서 사용합니다.
LISP과 DCL은 캐드가 기본으로 인식되게 해두어서 별도의 설치 없이 캐드만 있으면 사용이 가능합니다.
여기까지의 설명글은 지금부터 설명하기 위한 전제조건 입니다.
DCL의 불편함을 해소하기 위해서 외국의 어떤 사람이 ObjectDCL라는 것을 유료로 만들어서 판매했습니다.
리습에 날개를 달아준거죠..
ObjectDCL는 창을 디자인하기가 쉬워졌고 리습과 접목시키기가 편해졌습니다.
그냥 DCL로 할때보다 프로그래머가 훨씬 편해졌습니다. 문제는 유료라는것..
ObjectDCL이 어느때 부터인가 개발을 중지했다고 합니다.
진짜인지 모르지만 풍월에 의하면 어떤 프로그래머가 A/S를 하다가 ObjectDCL에 버그가 있어서
그걸 해결하려고 OpenDCL을 만들어서 무료로 배포했다고 합니다.
OpenDCL 탄생한 이유가 아이러니하네요..
VB나 C언어는 창디자인이 자유롭고 편한데 비해 DCL는 너무나 불편해서 다른 언어로 전향하려고
VB공부도 별도로 했었습니다.
어느날 OpenDCL의 기능을 보고나서 다시 리습으로 돌아왔죠..
그런데 우리카페의 회원님들중에 OpenDCL에 대해 들은 바도 없고 본적도 없어서
어떻해 사용해야 하는지 뭘 설치해야 하는지를 모르는것 같아서 이글을 쓰고 있습니다.
제가 만드는 리습은 대부분 OpenDCL을 이용합니다.
따라서 제 리습을 이용하려면 기본적으로 OpenDCL이 설치가 되어 있어야 합니다.
새로 컴퓨터를 샀다는 가정하에
1. 운영체제를 설치한다.
2. 캐드를 설치한다.
3. OpenDCL을 설치한다.
OpenDCL는 ARX라서 캐드 설치 후에 딱 한번만 설치하면 됩니다.
인터넷 어디에서든 "OpenDCL"을 검색하면
http://opendcl.com/wordpress/ <- 이곳으로 안내해줍니다.
여기에서 DOWNLOAD를 눌러주면
OpenDCL Studio란것과 OpenDCL Runtime란 두 가지가 나옵니다.
OpenDCL Runtime = 캐드에서 OpenDCL을 사용할 수 있게 해주는 것
OpenDCL Studio = 창을 디자인하는 프로그램 + OpenDCL Runtime
OpenDCL을 이용해서 만든 것을 사용만 하실 분은 OpenDCL Runtime 아래주소에서 다운 받으시고 설치해줍니다.
http://sourceforge.net/projects/opendcl/files/Development/OpenDCL.Runtime.7.0.0.3.msi/download
OpenDCL을 이용해서 직접 만드실 분은 OpenDCL Studio 아래주소에서 다운 받으시고 설치해줍니다.
http://sourceforge.net/projects/opendcl/files/Development/OpenDCL.Studio.ENU.7.0.0.3.msi/download
Error: OpenDCL Runtime could not be loaded. ;<- 리습을 다운받아서 이런 에러가 나오면 OpenDCL.Runtime을 설치하세요..
참고로 OpenDCL에 대해서 공부하실 분은
오디시엘님이 운영하는 네이버카페 http://cafe.naver.com/objectdcl 이곳에서 도움을 받으세요..
또하나의 학문인가요? ㅠㅠ
아.. 오디시엘님.. 아는 분이네요 ^^ 여기서 아는분 카페를 보네요 ㅎㅎㅎ
이런게 있었군요 ...
난 왜 OpenDCL이 다운이 안될까요 (서명이 손상 되었거나 잘못 되었습니다)????
저도 같은 증상이네요 서명이 손상되었다고...
다른곳에서 받는방법 없을까요? 저도 똑같은증상입니다.
잘은 모르겠으나 보안이 높게 되어 있어서 설치가 안되는 현상이 있는거 같기도 합니다.
보안등급을 조금 낮추어해서 해보기도 하시고 바이러스 프로그램을 잠시 멈추게 해놓고 해보세요..
평생 공부이군요 ^^;
서명이 손상되었다고 하네요...
오래전에 링크해 놓은거라서 그럴겁니다.
http://opendcl.com/wordpress/
위 주소에서 다운받으세요
감사합니다.
잘 이해가 안가지만
노력 하겠습니다
감사합니다"~^^
좋은 정보감사합니다
좋은 정보 많이 고맙습니다
와~갈수목 태산이군요.ㅋㅋㅋ 그래도 열심히해보겠습니다. 좋은 정보 감사드립니다
읽고또읽어봐도 오토리습 인문인 저에겐 어려운 단어들뿐이네요.ㅋ 아직 저는 오트리습을 배우는중인데 혹시 제가 OpenDCL 을배우고싶다고하면 일단 오토리습을 공부후 OpenDCL이것을 공부하는게 순서일까요?? 아니면 완전다른 개념인가요?
정답은 없지만 먼저 배운 입장에서
조언을 한다면
1. 일반리습
2. 비줠리습
3. OpenDCL
위 순서대로 익히세요..
감사합니다
와~~ 어렵네요 ㅜㅜ 열심히 해야겠어요
이게 왜안되나 낑낑거렸는데 open dcl runtime 을 깔아야하는군요 에효
이런것도 배워둬야 겠군요...게시글에 7.0.0.3이라고 됐는데 다운받을때 버전은 상관없나요?
모르는거 투성이네요 진짜 알고 싶은게 많네요^^
나이먹어 공부하려하니 어려습니다.
감사합니다
감사합니다.
나도 하구싶다...
무슨말인지.....어렵다.
타인으로부터 받은 도면에 sldtextstyle0 라고 뜨는데 한글이 뜨지않고 이상한 문자들만 뜹니다. 어떻게 해야 하지요?
고맙습니다.
그냥 사용할려니 안되는거였군요!
자세한 설명 감사 합니다.