LISP 7

[실무 LISP] DCL로 H-Beam 단면을 그리는 LISP 개발하기

DCL로 H-Beam 단면을 그리는 LISP 개발하기 DCL (Dialogue Control Language)로 H-Beam 단면을 그려주는 LISP을 개발해보자! H형강 단면의 경우 실무에서 정말 많이 활용되지만, 막상 CAD로 그리려고 하면 원하는 단면형상이 없기 마련이다. 그래서 이번 실무용 LISP은 H형강의 단면을 원하는 규격대로 그릴 수 있는 LISP을 제작해 볼 것이다. ① H-Beam 대화상자 UI 기획 ② DCL 코드 ③ DCL ↔ LSP 연동해보기 ④ SLD 제작 ⑤ H-Beam 단면을 그리기 위한 함수 정리 ⑥ 최종 LSP 코드 ⑦ LISP 실행 ① H-Beam 대화상자 UI 기획 먼저, 어떤 대화상자 UI로 H-Beam 단면을 선택하고 적용하면 좋을지 개략적으로 기획한다. H형강 단..

[LISP 기초 문법] DXF?

DXF? Drawing Exchange Format 의 약자로, CAD 프로그램 간에 설계도면 파일을 교환하는데 업계 표준으로 사용되는 파일 형식, 즉 도면 파일 교환 형식이다. DXF파일에는 AutoCAD 도면 파일에 포함되어 있는 모든 정보를 태그가 지정된 데이터로 표현되어 있다. DXF는 ASCII 포맷으로 되어 있기 때문에 AutoCAD에서 ' DXFOUT ' 명령을 이용해서 DXF파일로 저장하고, Text Editor로 보면 그 구조를 쉽게 살펴볼 수 있다. DXF의 구성 : DXF는 도면요소에 포함되어 있는 모든 정보를 정수로 이루어진 그룹코드 KEY와 해당 코드의 데이터 값인 VALUE의 나타낸다. DXF파일은 크게 다음과 같은 섹션들로 구성되어 있다. ① HEADER 섹션 : 도면과 연관된..

[LISP 기초 예제] 리스트를 역순으로 출력하기

리스트를 역순으로 출력하기 리습 교육을 해주셨던 사내 개발자님이 작성해주신 "리스트를 역순으로 출력해주는 코드"입니다. 방법 ① (defun temp1() (setq answer '()) (setq tempList '(1 2 3 4 5 6 7 8 9 10)) (setq idx (length tempList)) //tempList 원소 개수 → idx (repeat (length tempList) //tempList 원소 수만큼 반복문 (setq idx (1- idx)) //idx 1씩 감소시키기 (setq answer (append answer (list (nth idx tempList)))) //리스트형 answer에 tempList의 인덱스를 뒤에서부터 출력한 후 list에 넣고 answer에 app..

[LISP 기초 문법] 시스템 변수

시스템 변수 시스템 변수의 값을 받을 때는 getvar 를 사용하고, 시스템 변수의 값을 변경하고자 할때는 setvar 를 사용한다. ※ 중요 : 엔티티들을 작도할 때 가끔 엉뚱한 도면 위치에 작도되는 경우가 있다. 이는 주로 osnap모드가 설정되어 있어 그런 것인데, 이를 방지하기 위해선 아래 코드와 같이 osmode를 끄고 작업한뒤 다시 원래 osmode로 되돌리는 작업이 필요하다. (setq osmode (getvar "OSMODE")) ;OSMODE 시스템 변수 불러오기 (setvar "OSMODE" 0) ;OSMODE Off (코드 작성) (setvar "OSMODE" osmode) ;OSMODE On

[LISP 기초 문법] S-Expression, 인용 & 평가

S-Expression, 인용 & 평가 S-Expression (Symbolic expression) : 컴퓨터 프로그래밍에서 S-표현식(약어로 sexpr 또는 sexp)은 중첩된 목록(트리 구조) 데이터를 의미한다. S-표현식은 소스 코드와 데이터에 사용되는 프로그래밍 언어인 LISP을 위해 개발되어 대중화된 것이다. ※ 예시코드 (e1 e2 e3) == (e1 . (e2 . (e3 . nil))) 인용(Quote) : 식 자체를 저장하는 것을 의미한다. (setq a '(+2 3)) 인용된 변수 a의 값을 알고자 할 경우, (eval a) 평가(Evaluation) : 식의 계산을 수행하는 것을 의미한다. (setq a (+ 2 3)) 평가된 변수 a의 값을 알고자 할 경우, !a

[LISP 기초 문법] LISP의 함수

LISP의 함수 LISP 함수는 AutoCAD에서 제공하는 아래 AutoLisp Functions 문서에 보다 자세히 설명되어 있다. https://documentation.help/AutoLISP-Functions/WSfacf1429558a55de1a7524c1004e616f8b-5913.htm [함수 표현식 (Expression)] LISP에서 함수를 표현하는 식은 다음과 같다. (함수 인수 인수) ex) "인수 (0, 0), (100, 100)을 두 점으로 가지는 LINE을 command 함수로 그리기" (command "._line" "0,0" "100,100" "") ;"" : command 끝 * ._ : 영문버전이 아닌 AutoCAD에서 AutoCAD 명령을 호출하려면 “_“를 이용해야 한다..

[LISP 기초 문법] LISP의 변수

LISP의 변수 [변수의 선언] (setq 변수명 값) : setq 라는 키워드를 통해 변수를 선언한다. [변수의 종류] ① 변수 ② 상수 ③ 지역 변수 ④ 전역 변수 ⑤ 인수 [변수의 자료형] LISP 언어의 경우, "정수,실수,문자열,리스트 등" 과 같은 변수 자료형의 구분 없이 변수를 선언한다. (setq num 1) ;정수 (setq num 1.0) ;실수 (setq num "TEXT") ;문자열 (setq num '(1 1.0 "TEXT")) ;리스트(LIST) * 리스트 (LIST) 사용예시 (list 인수 인수) (setq 인수 '(인수 인수)) (setq 인수 (list 인수 인수)) (인수 인수 인수) ((인수 인수 인수) (인수 인수 인수) (인수 인수 인수))