
많은 사람들이 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. 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 입..

문자열을 화면에 디스플레이하거나, 변수에 지정된 값을 화면에 출력하는 함수들이다. 출력 함수는 princ, prin1, print, prompt의 4 종류가 있으며, 모두 지정하는 내용을 화면에 나타내지만, 처리하는 방식에서 차이가 있다. **참고 제어 문자 의 미 \\ \ \" "" \e Escape \n New Line, 다음줄에 표시. \r Return Key로 동작 \t Tab, 정해진 간격만큼 오른쪽으로 이동 \nnn (1) Princ (1) 기능 Princ는 ""를 무시한 내용을 출력하고, 개행 문자를 수행하며, 자신을 한 번 더 반복한다. (2) 사용 (princ "Expression") (3) 예 (Princ "Hello LISP \n Hi LSIP") ; Hello LISP Hi LSIP..
AutoLISP안에서는 별도의 함수와 프로그램을 구분하지 않으며 하나의 프로그램 안에서는 다중의 함수가 정의할 수 있고 각각의 함수는 프로그램으로서의 기능을 갖는다. 1. 함수선언시 유의 사항 (1) 함수의 이름은 항상 알파벳으로 시작하여야 한다. (2) 함수명은 영문자와 숫자의 조합으로 이루어지며, 특수 기호(-, ;, ! 등)의 사용이 가능하다. (3) 함수 안의 ()의 갯수는 반드시 같아야 한다. (4) 세미콜론(;)은 주석이며, 그 행만을 포함한다. 2. DEFUN (DEfine FUNction) (1) 기능 사용할 함수를 선언하는 함수(함수 이름을 정의함) 반환되는 값은 가장 나중에 지정되는 값으로 다중의 값을 반환하고 싶으면 List를 사용한다. (2) 사용법 (DEFUN Function-na..