제목 AutoCAD 를 위한 AUTO LISP ( VISUAL LISP ) 따라 하 기 
 이름 운영 자 추천 하 기 0 작성 일 2008 - 09 - 30 18 : 26 : 41 
 < 구매 하 기 > 
 금년 정초 우연히 굴지 의 모 공사 업체 의 시공 후 보관 해 왔 던 AutoCAD 도면 들 을 표준 화 해서 ERP 시스템 에 도면 과 자재 리스트 ( BOM ) 데이터베이스 를 구축 하 고 , 뷰 잉 도구 ( Viewing tool ) 를 이용 해서 검색 하 는 개발 프로젝트 에 참여 하 게 되 었 습니다 . 
 나 의 개발 범위 ( Scope ) 는 공정 ( P & ID ) 도면 에서 전 계장 , 배관 , 밸브 , 장치 , 도면 연결 자 심볼 을 검색 해서 각 심볼 에 필요 한 자재 리스트 값 들 을 속성 들 로 정의 하 고 , 그것 들 을 블록 으로 만들 고 , 추출 해서 XML 형식 으로 저장 하 는 유틸리티 프로그램 개발 작업 이 었 습니다 . 여러 가지 여건 상 AutoLISP 로 개발 하 고 , AutoCAD 2006 버전 에서 실행 할 수 있 도록 프로그램 을 개발 하 게 되 었 습니다 . 
 여러 해 동안 멀리 했 던 AutoCAD 를 다시 접하 게 되 고 , 희미 한 기억 을 되살려 AutoLISP 로 개발 을 하 자니 , 먼저 생소 한 Visual LISP 부터 익혀야 했 습니다 . 서점 에 가 서 AutoLISP 혹은 Visual LISP 에 관한 책 을 찾 아 보 았 지만 전혀 없 어 무척 이나 당황 했 습니다 . 서점 담당자 에게 물 어 보 니 , 컴퓨터 에서 검색 을 해 보 더니 외국 서적 을 주문 해야 한다고 하 더군요 . 그래서 포기 하 고 집 에 와서 2 주간 동안 하루 에 15 시간 이상 열심히 공부 했 습니다 . 대다수 인터넷 의 사이트 에 는 기초 적 인 내용 만 소개 되 어 있 더군요 . 회원 가입 해야 하 고 그나마 수강료 를 지불 해야 볼 수 있 으니 … … 
 AutoCAD 실행 하 고 도움 말 에서 AutoLISP , Visual LISP 및 DCL 에 관련 된 문서 는 모두 읽 어 본 것 같 습니다 . 그 로부터 2 개월 동안 프로그램 개발 해서 , 수 많 은 도면 열 고 지겨운 테스트 만 한 달 간 한 후 납품 을 완료 했 습니다 . 돌이켜 보 면 , 프로그램 테스트 하 면서 10 년 넘 게 직장 에서 AutoCAD 로 밥벌이 하 던 때 보다 AutoCAD 와 AutoLISP 에 대해 확실 하 게 많 은 것 을 알 게 되 었 습니다 . 
 그래서 AutoLISP , Visual LISP 및 DCL 에 대해 단 몇 개월 동안 나 의 머릿속 에 가득 쌓인 내용 들 을 정리 하 게 되 었 고 , 예전 에 알 고 지냈 던 출판사 사장 님 권유 로 출간 을 하 게 되 었 습니다 . 이것 이 이 책 이 탄생 하 게 된 이유 이 고 과정 입니다 . 
 AutoCAD 로 도면 작성 에 숙달 된 설계자 가 AutoLISP 의 이용 에 관심 을 갖 는다면 , 이 책 의 내용 이 도움 을 줄 수 있 을 것 이 라 감히 말씀 드립니다 . 이 책 은 AutoLISP , Visual LISP 및 DCL 에 대한 기본 적 인 개념 과 초급 , 중급 정도 의 내용 을 담 고 있 습니다 . 원고 를 완성 하 고 보 니 , 소개 할 수 없 는 많 은 정말 중요 한 내용 들 이 남 아 있 어 안타까운 마음 입니다 . 고로 아래 저 의 E - mail 로 질문 이나 연락 주 시 면 여러분 의 요구 를 거절 하 지 않 을 것 을 분명 하 게 약속 드립니다 . 이 책 을 출간 함 에 있 어 설명 이 세련되 지 못하 고 , 내용 의 표현 이 부적절 한 부분 이 있 을 것 으로 사료 되 며 , 미비 하 고 부족 한 점 들 은 독자 여러분 의 진심 어린 지도 편달 을 주 시 면 내용 을 수정 보완 할 것 을 약속 드리 며 , AutoCAD 를 이용 한 설계 업무 자동화 를 원하 는 분 들 에게 조금 이나마 도움 이 되 기 를 기원 합니다 . 
 Chapter 01 AutoLISP 기본 개념 ( AutoLISP basic concept ) 
 01 AutoLISP 란 ? 
 02 AutoLISP 기본 개념 
 1 ) 첫 번 째 AutoLISP 프로그램 작성 
 2 ) AutoLISP 프로그램 로드 및 실행 
 3 ) 리스트 및 리스트 처리 ( List and List processing ) ⊙ 숫자 ( number ) 
 ⊙ 문자열 ( String ) 
 ⊙ 아톰 ( Atom ) 
 ⊙ 리스트 ( List ) 
 ⊙ 변수 ( Variable ) 와 심벌 ( Symbol ) 
 ⊙ 함수 ( Function ) 
 ⊙ 연관 리스트 ( Associated List ) 
 ⊙ S ? 식 ( symbolic ? expression ) 
 ⊙ 인용 ( Quote ) 과 평가 ( Evaluation ) 
 ⊙ 지역 변수 ( Local variable ) 및 전역 변수 ( Global variable ) 
 ⊙ 함수 내용 
 03 AutoLISP 함수 ( Function ) 
 1 ) 사용 자 정의 함수 ( User defined function ) 
 2 ) AutoLISP 내장 함수 ( AutoLISP built ? in function ) 
 Chapter 02 Visual LISP 기본 개념 ( Visual LISP basic concept ) 
 01 Visual LISP 란 ? 
 02 Visual LISP 의 주요 한 기능 및 특징 
 03 Visual LISP 편집기 
 1 ) Visual LISP 편집기 시작 하 기 
 2 ) Visual LISP 메뉴 및 기능 구성 
 ⊙ 텍스트 윈도우 
 ⊙ 텍스트 윈도우 칼라 코딩 
 ⊙ 코딩 ( Coding ) 
 ⊙ 소스 코드 형식 살펴보 기 
 ⊙ 소스 코드 검사 하 기 
 ⊙ 프로그램 실행 하 기 
 ⊙ 콘솔 ( Console ) 윈도우 
 ⊙ 다중 도면 을 위한 콘솔 윈도우 
 ⊙ 콘솔 단축 메뉴 이용 
 ⊙ 콘솔 로그 저장 
 ⊙ 추적 윈도우 
 ⊙ 소스 코드 로딩 
 ⊙ 코드 확인 
 3 ) Visual LISP 디버거 
 ⊙ 환경 설정 ( Environment Setting ) 
 ⊙ 괄호 일치 ( Parenthesis Matching ) 
 ⊙ 감시 추가 ( Adding Watch ) 
 ⊙ 검사 ( Inspecting ) 
 ⊙ 에러 추적 ( Error Trace ) 
 ⊙ 중단 점 전환 ( Toggle Breakpoint ) 
 ⊙ Apropos 로 단어 완성 하 기 
 ⊙ 애니메이트 모드 ( Animate Mode ) 
 ⊙ 블록 주석 ( Commenting ) 과 블록 주석 취소 ( Uncommenting ) 
 4 ) Visual LISP 프로젝트 사용 하 기 
 ⊙ 프로젝트 작성 
 5 ) Visual LISP 응용 프로그램 만들 기 
 ⊙ 응용 프로그램 만들 기 마법사 실행 
 Chapter 03 AutoLISP 함수 
 01 AutoLISP 용어 및 개념 설명 
 1 ) 표현식 ( Expression ) 
 2 ) 리턴 값 ( Return value ) 
 3 ) 괄호 일치 
 4 ) 심벌 ( Symbol ) 
 5 ) 보호 된 심벌 ( Protected Symbol ) 
 6 ) 변수 ( Variable ) 
 7 ) 선택 세트 ( Selection Set ) 
 8 ) 엔 티티 이름 ( Entity name ) 
 9 ) 파일 포인터 ( File Descriptors ) 
 02 AutoLISP 초급 함수 
 1 ) 연산자 ( Math Functions ) 
 ⊙ + ( 더하기 ) 
 ⊙ ? ( 빼 기 ) 
 ⊙ / ( 나누 기 ) 
 ⊙ * ( 곱 하 기 ) 
 ⊙ < ( 각 인수 가 오른쪽 에 있 는 인수 보다 수치 적 으로 작 은 지 비교 ) 
 ⊙ > ( 각 인수 가 수치 적 으로 오른쪽 에 있 는 인수 보다 큰 지 를 비교 ) 
 ⊙ and ( 제공 된 인수 의 논리 적 AND 를 리턴 ) 
 ⊙ or ( 제공 된 인수 의 논리 적 OR 를 리턴 ) 
 ⊙ 1 + ( 1 증가 하 기 ) 
 ⊙ 1 ? ( 1 감소 하 기 ) 
 ⊙ cos ( 라디안 으로 표시 된 각도 의 코사인 값 을 리턴 ) 
 ⊙ atan ( 라디안 으로 표시 된 숫자 의 arctangent 값 을 리턴 ) 
 ⊙ sin ( 라디안 으로 표시 된 각도 의 sine 값 을 리턴 ) 
 ⊙ sqrt ( 제곱근 의 값 을 리턴 ) 
 ⊙ expt ( 제곱 값 을 리턴 ) 
 2 ) 문자열 함수 ( String Functions ) 
 ⊙ strcase ( 문자열 을 대문자 혹은 소문자 로 변환 ) 
 ⊙ strcat ( 다중 문자열 을 하나 의 문자열 로 결합 ) 
 ⊙ strlen ( 문자열 의 길 이 즉 글자 수 를 리턴 ) 
 ⊙ substr ( 문자열 을 검색 ) 
 ⊙ wcmatch ( 문자열 에 와일드카드 패턴 매치 를 수행 ) 
 3 ) command 함수 ( AutoCAD 명령 을 실행 ) 
 4 ) load 함수 ( 파일 에 저장 되 어 있 는 AutoLISP 표현식 을 평가 ) 
 ⊙ 자동 로딩 ( Automatic Loading ) 
 ⊙ 목차 에 추가 
 5 ) 시스템 변수 ( System variable ) 
 6 ) 사용 자 입력 함수 ( User Input Function ) 
 ⊙ Getint or getreal ( 숫자 입력 을 받 음 ) 
 ⊙ Getangle ( 각도 입력 을 받 음 ) 
 ⊙ Getcorner ( 대각선 코너 좌표 입력 을 받 음 ) 
 ⊙ Getdist ( 거리 입력 을 받 음 ) 
 ⊙ Getpoint ( 좌표 입력 을 받 음 ) 
 ⊙ Getstring ( 문자열 입력 을 받 음 ) 
 ⊙ Getkword ( 옵션 선택 을 요구 ) 
 ⊙ initget ( 다음 사용 자 입력 함수 호출 에 사용 될 키워드 설정 ) 
 7 ) 형상 함수 ( Geometric Function ) 
 ⊙ angle ( 두 끝점 에 의해 정의 된 선 의 라디안 각도 검색 ) 
 ⊙ distance ( 두 점 사이 의 3 D 거리 를 검색 ) 
 ⊙ inters ( 두 선 의 교차점 을 검색 ) 
 ⊙ osnap ( 객체 스냅 모드 를 지정 된 점 으로 적용 한 결과 인 3 D 점 을 검색 ) 
 ⊙ polar ( 한 점 으로부터 지정 된 각도 및 거리 만큼 떨어져 있 는 곳 에서 UCS 3 D 점 을 검색 ) 
 ⊙ textbox ( 지정 된 문자 객체 를 측정 하 고 문자 를 둘러싸 는 상자 의 대각 좌표 를 검색 ) 
 8 ) 표시 제어 함수 ( Display Control Function ) 
 ⊙ graphscr ( AutoCAD 그래픽 스크린 호출 ) 
 ⊙ princ ( 식 을 명령 행 혹은 열린 파일 에 기록 ) 
 ⊙ prompt ( 프롬프트 영역 에 문자열 을 표시 ) 
 ⊙ redraw ( 현재 뷰 포트 혹은 객체 를 현재 뷰 포트 에 재생성 ) 
 9 ) 숫자 함수 ( Number Function ) 
 ⊙ abs ( 절대값 을 리턴 ) 
 ⊙ atof ( 문자열 을 실수 로 변환 ) 
 ⊙ atoi ( 문자열 을 정수 로 변환 ) 
 ⊙ fix ( 실수 를 정수 로 변환 ) 
 ⊙ float ( 숫자 를 실수 로 변환 ) 
 ⊙ itoa ( 정수 를 문자열 로 변환 ) 
 10 ) 변환 함수 ( Conversion Function ) 
 ⊙ ascii ( 문자열 의 첫 번 째 문자 를 ASCII 문자 코드 ( 정수 ) 로 변환 한 값 을 리턴 ) 
 ⊙ chr ( ASCII 문자 코드 를 표현 하 는 정수 를 단일 문자 로 변환 ) 
 ⊙ cvunit ( ASCII 한 측정 단위 에서 다른 단위 로 값 을 변환 ) 
 ⊙ rtos ( 숫자 로 거리 를 나타내 는 형식 화 된 문자열 로 변환 ) 
 ⊙ angtos ( 숫자 로 각도 를 나타내 는 형식 화 된 문자열 로 변환 ) 
 Chapter 04 AutoLISP 중급 함수 ( Intermediate Function ) 
 01 AutoLISP 중급 함수 ( Intermediate Function ) 
 1 ) 리스트 함수 ( List Function ) 
 ⊙ car ( 리스트 의 첫 번 째 항목 을 리턴 ) 
 ⊙ cdr ( 리스트 의 첫 번 째 항목 을 제외 한 모든 항목 들 을 리턴 ) 
 ⊙ cadr ( 리스트 의 두 번 째 항목 을 리턴 ) 
 ⊙ caddr ( 리스트 의 세 번 째 항목 을 리턴 ) 
 ⊙ caar ( 리스트 의 첫 번 째 항목 의 첫 번 째 항목 을 리턴 ) 
 ⊙ cddr ( 리스트 의 두 번 째 항목 이후 의 모든 항목 을 포함 하 는 리스트 리턴 ) 
 ⊙ foreach ( 리스트 의 각 항목 들 을 평가 하 고 마지막 값 리턴 ) 
 ⊙ list ( 리스트 를 작성 ) 
 ⊙ cons ( 리스트 시작 위치 에 항목 을 추가 하 거나 dotted list 구성 ) 
 ⊙ Dotted list or dotted Pairs 
 ⊙ nth ( 리스트 의 n 번 째 항목 을 리턴 ) 
 ⊙ append ( 다수 의 리스트 들 을 하나 의 리스트 로 결합 ) 
 ⊙ length ( 리스트 항목 들 의 개수 를 리턴 ) 
 2 ) 연관 리스트 / DXF 그룹 코드 ( Associated List / DXF Group Code ) 
 ⊙ assoc ( 요소 를 위해 연관 리스트 를 검색 하 고 그 연관 리스트 의 데이터 를 리턴 ) 
 ⊙ Entity DXF Group Code 
 ☞ 객체 ( Object ) 와 엔 티티 ( Entity ) 
 ☞ DXF 형식 ( Format ) 
 ( 1 ) . DXF 파일 의 HEADER Section Group code 
 ( 2 ) . DXF 파일 의 CLASS Section Group code 
 ( 3 ) . DXF 파일 의 TABLE Section Group code 
 ( 4 ) . DXF 파일 의 BLOCK Section Group code 
 ( 5 ) . DXF 파일 의 ENTITIES Section Group code 
 ( 6 ) . DXF 파일 의 OBJECTS Section Group code 
 ( 7 ) . DXF 파일 의 THUMBNAILIMAGE Section Group code 
 3 ) DXF Group code value table 
 4 ) DXF Entity Types 약어 표 ( DXF Group Code ) 
 5 ) 주요 엔 티티 DXF Group code ( Data List ) 
 ⊙ 선 ( LINE ) 
 ⊙ 원 ( CIRCLE ) 
 ⊙ 블록 ( BLOCK ) 
 ⊙ 치수 ? 반지름 ( DIMENSION ) 
 6 ) 엔 티티 선택 함수 ( Selecting Function ) 
 ⊙ entsel ( 하나 의 엔 티티 를 선택 ) 
 ⊙ ssget ( 다중 엔 티티 를 선택 ) 
 7 ) 선택 세트 함수 ( Selection set ) 
 ⊙ ssadd ( 선택 세트 에 새로운 선택 세트 를 추가 ) 
 ⊙ ssdel ( 선택 세트 에서 엔 티티 를 삭제 ) 
 ⊙ sslength ( 선택 세트 내부 에 속한 엔 티티 개수 검색 ) 
 ⊙ ssname ( 선택 세트 내부 에 속한 엔 티티 이름 을 검색 ) 
 8 ) 엔 티티 함수 ( Entity Function ) 
 ⊙ entget ( 엔 티티 의 DXF Group code 를 리턴 ) . 
 ⊙ entlast ( 도면 내 에 삭제 되 지 않 은 마지막 엔 티티 이름 리턴 ) 
 ⊙ entnext ( 도면 내 에 삭제 되 지 않 은 첫 번 째 엔 티티 이름 리턴 ) 
 ⊙ entdel ( 도면 내 에 엔 티티 를 삭제 ) 
 ⊙ entmod ( 도면 내 에 엔 티티 를 변경 ) 
 ⊙ entupd ( 스크린 의 엔 티티 를 재생성 ) 
 ⊙ entmake ( 도면 데이터베이스 에 새로운 엔 티티 를 추가 ) 
 9 ) 파일 함수 ( File Function ) 
 ⊙ open ( 파일 을 열 기 ) 
 ⊙ close ( 열린 파일 을 닫 기 ) 
 ⊙ read ? line ( 열린 파일 에서 한 라인 을 읽 기 ) 
 ⊙ write ? line ( 열린 파일 에서 한 라인 을 쓰 기 ) 
 10 ) 루프 함수 ( Loop Function ) 
 ⊙ while ( 조건 이 진 ( T ) 이 면 루프 를 진행 ) 
 ⊙ repeat ( 지정 된 횟수 만큼 반복 진행 ) 
 11 ) 조건 함수 ( Conditional Function ) 
 ⊙ if ( 수행 해야 할 식 을 결정 하 기 위해 조건 을 평가 ) 
 ⊙ cond ( 조건 중 에 하나 가 T 일 때 까지 조건 을 평가 , 평가 후 종료 ) 
 12 ) 사용 자 정의 ERROR 함수 
 ⊙ AutoCAD rejected function 
 ⊙ Bad argument type 
 ⊙ extra right parenthesis 
 ⊙ Function cancelled 
 ⊙ incorrect number of arguments to a function 
 ⊙ malformed list 
 ⊙ null function 
 ⊙ quit / exit abort 
 Chapter 05 AutoLISP 고급 함수 ( Advanced Function ) 
 01 AutoLISP 고급 함수 ( Advanced Function ) 
 1 ) NENTSEL 함수 ( NENTSEL Function ) 
 2 ) 복합 엔 티티 처리 ( Complex Entity Handling ) 
 ⊙ Insert / Block 
 ⊙ 속성 ( Attribute ) 
 3 ) 심벌 테이블 ( Symbol Table ) 처리 함수 
 ⊙ APPID Symbol 
 ⊙ BLOCK _ RECORD Symbol 
 ⊙ DIMSTYLE Symbol 
 ⊙ LAYER Symbol 
 ⊙ LTYPE Symbol 
 ⊙ STYLE Symbol 
 ⊙ UCS Symbol 
 ⊙ VIEW Symbol 
 ⊙ VPORT Symbol 
 Chapter 06 DCL ( Dialog Control Language ) 
 01 DCL 개념 및 구성 요소 
 1 ) DCL ( Dialog Control Language ) 은 무엇 인가 ? 
 2 ) 대화 상자 ( Dialog Box ) 제어 ( Control ) 
 ⊙ 확인 버튼 ( Okay Button ) 
 ⊙ 취소 버튼 ( Cancel Button ) 
 ⊙ 라디오 버튼 ( Radio button ) 
 ⊙ 이미지 버튼 ( Image button ) 
 ⊙ 텍스트 ( Text ) 
 ⊙ 에디터 박스 ( Edit _ box ) 
 ⊙ 리스트 박스 ( List _ box ) 
 ⊙ 팝업 리스트 ( PopupList ) 
 ⊙ 토글 버튼 ( Toggle ) 
 ⊙ 슬라이드 이미지 ( Slide Image ) 
 ⊙ 슬라이더 ( Slider ) 
 ⊙ 행과 열 ( Row and Column ) 
 ⊙ 템플 릿 DCL 파일 
 02 AutoLISP Code 와 DCL 
 1 ) AutoLISP 파일 및 DCL 파일 
 ⊙ DCL 파일 : MY _ DCL . dcl 
 ⊙ AutoLISP 파일 : MY _ DCL . LSP 
 2 ) Basic DCL 파일 
 3 ) 행과 열 ( Row and Column ) 
 ⊙ Column Boxed Column 대화 상자 
 ⊙ Column Boxed Row 대화 상자 
 4 ) 제어 ( Control ) ? 대화 상자 구성 요소 
 ⊙ 레이아웃 제어 ( Layout Control ) 
 ⊙ 버튼 ( Button ) 
 ⊙ 라디오 버튼 ( RADIO BUTTON ) , BOXED RADIO COLUMN , RADIO COLUMN 
 ⊙ 라디오 버튼 ( RADIO BUTTON ) , BOXED RADIO ROW , RADIO ROW 
 ⊙ 에디터 박스 ( EDIT BOX ) 
 ⊙ 리스트 박스 ( LIST BOX ) 
 ⊙ POPUP LIST 
 ⊙ IMAGE 
 5 ) DCL 과 AutoLISP 함수 상호 호출 
 ⊙ 행위 ( ACTION ) 
 ⊙ Set _ Tile and Mode _ Tile 
 ⊙ 리스트 와 리스트 데이터 처리 방법 ( List and how to handle them ) 
 ⊙ 대화 상자 로부터 데이터 저장 방법 ( Saving data from the dialog box ) 
 Chapter 07 고급 DCL ( Advanced DCL ) 
 01 대화 상자 타일 ( 제어 ) 들 과 연결 함수 
 1 ) 버튼 ( Button ) 
 2 ) 텍스트 ( Text ) 
 3 ) 에디터 박스 ( Edit _ Box ) 
 4 ) 리스트 박스 ( List _ Box ) 
 5 ) 팝업 리스트 ( Popup List ) 
 6 ) 라디오 버튼 ( Radio Button ) 
 7 ) 토글 ( Toggle ) 
 8 ) 객체 선택 버튼 
 9 ) 슬라이드 이미지 버튼 ( Slide Image Button ) 
 10 ) 이미지 버튼 ( Image Button ) 
 11 ) 슬라이더 ( Slider ) 
 12 ) 다양 한 제어 들 이용 하 기 
 11 메카 피아 기계설계 KS 규격 집 admin 2011 - 07 - 06 14404 0 
 10 메카 피아 기계설계 가이드북 admin 2011 - 07 - 06 7882 1 
 9 전산 응용 기계 제도 실기 도면 예제 집 admin 2011 - 07 - 06 8003 0 
 8 전산 응용 기계 설계 제도 이론 및 실기 ( 기능사 , 산업기사 , 기사 ) . .... admin 2011 - 07 - 06 6852 0 
 7 오토캐드 도면 그리 는 법 admin 2009 - 09 - 23 28006 0 
 6 쉽 게 배우 는 CADian 2004 admin 2008 - 09 - 30 8989 0 
 5 AutoCAD 2006 배우 기 : 실무 디자인 중심 ( CD 1 포함 ) . .... admin 2008 - 09 - 30 8904 0 
 AutoCAD 를 위한 AUTO LISP ( VISUAL LISP ) 따라 하 기 . .... admin 2008 - 09 - 30 13041 0 
 3 AutCAD 기초 admin 2008 - 09 - 30 6267 0 
 2 [ 1 + 2 ] 건축 디자이너 의 업무 혁신 을 위한 AutoCAD 2008 ? ..... admin 2008 - 09 - 30 8446 0