** AutoLISP(Auto LIST Programming)이란? AutoCAD 실행시 발생되는 반복적인 작업을 단순화하여 생산성을 높이고 사용자 의미의 Program을 구성하여 작업 능률을 극대화시키기 위한 AutoCAD 전용 Interpreter Language이다. ** AutoLISP의 Data 요소 INTEGER REAL SYMBOL STRING FILE - DESCRIPTOR ENTITY NAME LIST ATOM ** AutoLISP Function Commands 기본 명령 명 령 어 기 능 설 명 + ... + 표시 이후 숫자를 모두 더한다. - ... 에서 이후의 숫자를 모두 뺀다. * ... * 이후의 숫자를 모두 곱한다. / ... 에서 이후의 숫자들의 곱으로 나눈다. = ... ..

많은 사람들이 Entity 함수를 이용하여 유용한 LISP 프로그램들을 개발하지만 개인적으로 Entity 함수를 거의 사용하지 않으므로 Entity에 대한 강좌는 조금 부족하다는 생각이 듭니다. Entity 함수를 자주 사용하다 보면 에러 발생의 소지도 높은 것 같으며, 대부분은 Entity 함수 를 사용하지 않더라도 다른 방법으로 해결이 가능하다고 생각합니다. AutoLISP에서의 Entity 함수는 C 언어의 포인터와 비슷한 성질의 것이어서 AutoLISP을 강력 하게 만들어 주기도 하지만, 한편으로는 사용법이 까다로워서 쉽게 익히기도 어려우며 잘못 사용시에는 프로그램의 완성도를 떨어뜨리는 요인으로 작용하기도 합니다. 위의 내용들은 어디까지나 개인적인 생각이며, 중요한 것은 자신만의 프로그램 기법을 ..
1. entsel (1) 기능 뒤에 오는 ""안의 문자열을 출력하며, 한번에 하나의 Entity를 선택할 수 있습니다. 선택 후 Entsel은 자동으로 종료되며, ""안의 문자열을 생략할 경우 "Select object:"가 자동으로 출력됩니다. (2) 사용법 (entsel "Message") (3) 예 (setq a (entsel "\n Select Object : ")) ( (196.153 148.687 0.0)) 2. ssget (1) 기능 entsel와는 다르게 함수 뒤에 ""를 사용하여 Message를 사용할 수 없으며, 한번에 하나 이상의 Entity를 선택할 수 있습니다. 또한, 선택 Mode를 옵션에 따라서 Window, Crossing, Last의 세가지 선택이 가능합니다. 선택 모드 옵..

Entity란 Line, Circle과 같은 것들로 도면의 최소 단위라 할 수 있으며, 도면은 Entity의 집합이라고 할 수 있습니다. AutoLISP는 이러한 Entity를 수정, 삭제 또는 생성할 수 있는 함수들을 지원하여 도면을 수정할 수 있으며, 일괄 처리도 가능합니다. Entity의 구성 Entity는 AutoCAD에서 다음과 같은 정보를 가지고 있습니다. (1) Entity의 구성 AutoCAD에서는 도면을 DataBase로 인식하며, Entity는 도면을 구성하는 최소 단위입니다. Entity는 각 요소(예 : List, Circle 등)마다 다르며, 대부분 다음과 같은 정보를 가지고 있습니다. Entity Type 선 종류 Layer 레이어 이름 Color 색깔 Starting point..

AutoLISP는 ASCII 코드의 텍스트 파일만을 지원하며, 더욱이 한 개의 파일에 대해서 Read와 Write를 동시에 지원하 지 않아 많은 제약이 따릅니다. 복잡한 데이터를 파일을 통해 처리할 때는 ObjectARX나 VBA를 사용하는 쪽이 훨씬 효율적이지만 항상 그러하듯이 잘만 사용하면 매우 유용하게 프로그램에 적용할 수가 있습니다. 하지만 요즘은 컴 퓨터 성능이 뛰어 나므로 LIST를 이용해서 처리하는 것도 훌륭한 대안이라 할 수 있겠습니다. AutoLISP은 데이터 타입에 상관없이 파일 관련 함수를 통해서 불러온 모든 데이터는 문자열로 인식하므로 문자열 이외의 데이터(숫자, 리스트 등)를 파일에서 읽어 사용할 때는 변환 함수를 사용해서 변환을 해야 합니다. 데이터를 사용하지 않는다면 변환하지 ..

AutoLISP에서는 다른 프로그램 언어와는 다르게 변수를 미리 선언하지 않으므로, 변수 타입은 사용자가 저장한 데이터 타입에 의해서 결정되며 변수 타입을 따로 설정하지 않기 때문에 데이터의 타입을 변환시키는것 또한 다른 언어에 비해 매우 유연합니다. DCL(대화 상자)을 이용해서 프로그램을 작성하면, 대화 상자를 통해서 입력받는 것은 모두 문자열로 처리되므로, 숫자를 입력받으면 변환 함수를 사용해서 반드시 변환해주어야 계산이나, 도면 작성이 가능합니다. 아주 비중있는 함수들이므로 꼭 익혀두시기 바랍니다. 1. itoa (1) 기능 itoa 뒤에 오는 정수가 저장되어 있는 변수 또는 정수를 문자열로 변환시킵니다. 뒤에 오는 변수와 숫자(숫자로 이루어진 문자열)가 문자열이면 에러를 야기합니다. itoa로 ..

파일을 이용하지 않는 프로그램을 작성한다면 문자열 관련 함수는 그리 크게 필요하지 않지만, AutoLISP에서는 파일에 쓰거나, 읽는 모든 데이터를 문자열로 처리하기 때문에 뒤에 나오는 변환 함수와 더불어 문자열 함수는 매우 중요하다고 할 수 있습니다. 조건 함수와 변환 함수, 문자열 함수를 상황에 맞게 잘 활용한다면 여타의 프로그래밍 언어가 부러울 것이 없습니다. 1. chr (1) 기능 지정한 숫자나, 숫자가 저장된 변수를 ASCII Code 값의 문자로 출력합니다. (2) 사용법 (Chr ASCII-Code) or (Chr Variable) (3) 예 (setq a (chr 65)) : !a = "A" (setq b (chr 97)) : !b = "a" (setq c (chr 66)) : !c = ..

조건 함수는 관계연산자와 함께 쓰여야만 제 기능을 가질 수 있습니다. 자동화 프로그램을 작성할 때 무엇보다도 중요한 함수라고 할 수 있습니다. 1. if (1) 기능 지정 조건식을 비교하는 기능으로 지정 조건식이 만족하면 조건식-1을 다음 문장을 수행하고, 만족하지 않은 경우에는 조건식-2를 처리하는 함수로서 프로그램 작성시 가장 많이 이용하는 조건함수입니다. (관계 연산자의 비교 결과가 T이면 expr1을 실행하고, nil이면 expr2를 실행한다.) 만약, 지정한 실행문이 2개 이상이면 "if" 함수는 에러를 발생하며, 2개 이상의 실행문을 지정할 때는 "progn" 함수를 사용해야 합니다. (2) 사용법 (IF (Test-Expression) Expr1 Expr2) (3) 예 (if (= 3 2) ..

관계 연산자는 요소들의 값들을 비교하여 결과가 참이면 T를 리턴하고, 거짓이면 nil을 리턴하는 함수이다. 관계 연산자 단독으로는 비교 이외의 아무런 기능을 가지지 못하며, 조건 함수와 함께 사용해야 한다. 1. 같다(=) (1) 기능 "=" 표시는 요소들을 검사하여 같으면 T를 리턴하고 같지 않으면 nil을 리턴한다. (2) 사용법 (= A B ·····) (3) 예 제 (= 7 7) : 참이므로 T를 리턴한다. (= 3 3.3 3) : 거짓이므로 nil을 리턴한다. (setq eqnum (= 7 7)) !eqnum : T (setq eqnum (= 3 3.3)) !eqnum : nil (= "DMZ" "DMZ") : 참이다. T를 리턴한다. (= "DMZ" "CG") : 거짓이므로 nil을 리턴한다...

1. initget (INITial GET) (1) 기능 : "GETxxx 명령들이 받아들이는 조건을 입력의 오류를 방지하는 함수 "GETSTRING"과 "GETVAR"는 제외 (2) 사용법 (INITGET 조건인수 "키워드") (3) 예제 (initget 1 "yes no") (initget 2) (4) 예제 프로그램 Getkword 참조 ** 참고 인 수 내 용 1 무응답(NULL)을 허용하지 않는다. 2 "0"의 입력을 허용하지 않는다. 4 음수값의 입력을 허용하지 않는다. 8 LIMITS값을 검사하지 않는다. 16 2D Point 대신 3D Point로 입력받는다. 32 Rubber-Band Line을 Dashed Line으로 변한시킨다. 64 Getdist에서 좌표의 Z값을 무시한다. 128 입..