tblsearch 는 도면내의 보조요소를 검색합니다

 

주로 if 문에서 존재 유무에 따른 실행문들을 작성합니다

 

 

(tblsearch "LTYPE" "center") ; center 라는 linetype 검색

 

(tblsearch "block" blockname) ; defun으로 정의된 blockname 이름의 block 검색

 

(tblsearch "layer" "1") ; 1 이란 이름의 layer 검색

 

 

 

 

 

블록을 검색하여  존재하면 삽입  비존재시 서브리습으로 새로작도

(if  (tblsearch "block" blkname) (command "-insert" blkname pt 1 1 0) (beam-lsub) )

 

 

도면테이블 검색결과 없음를 참으로   있음을 거짓으로 하는 if 문

(if (= (tblsearch "block" blkname) nil ) (beam-lsub) (command "-insert" blkname pt 1 1 0) )

 

 

 

 

CADBOX  AUTOBOX 는 오토캐드에 강력한 기능들을 추가합니다

 

 

 

 

'T 함수' 카테고리의 다른 글

TRIM fence 옵션으로 다수객체 트림  (0) 2022.08.18

nil 은 연산이나 오류시 nil 을 응답합니다

 

nil 은 pi 와 마찬가지로 고유함수 이므로 사용자 임의로  defun 으로 정의 할 수 없습니다

 

오류의 의미를 가지지만 이 nil 도 변수로 사용가능합니다

 

 

 

 

도면테이블검색하여 원하는 블록이 존재하지 않으면 서브리습으로 새로 작도하고 블록이 존재하면 insert 하는 기능 예제

 

(if (= (tblsearch "block" blkname) nil ) (beam-hsub) (command "-insert" blkname pt 1 1 0) )

 

이때 존재하지 않으면 조건에 nil 을 사용합니다

 

 

 

 

리습 활용으로 캐드를 유용하게 사용하지만

때론 리습 제작자의 의도와 다른 사용자의 조작이나 입력의 부조합으로 에러가 생기는경우기 있습니다

 

어쩌면 사용자 조작과 관계없이 원활한 리습 제작의 한계도 존재합니;다

 

리습의 작도나 삽입을 위해 캐드설정을 미리 설정후 작업을 완료한다음 캐드설정을 원래대로 복원합니다

 

에러가 발생한 경우 미리 캐드설정한 그대로 빠져나오므로 사용자는 자신이 설정한 샹태와 다르게 됩니다

 

또한 사용자가 리습 진행 도중  취소나 esc 로 빠져 나오는 경우도 마찬가지입니다

 

캐드 사용자가 자신이 주로 설정한 값이 자주 바뀌면 매우 불편합니다

 

이 불편을 해소하기위해 에러문을 작성합니다

 

 

이 에러문은 에러 발생시 작동하여 osnap 과 pickbox 값을 리습실행 이전 상태로 복귀합니다

(defun *error* (msg)

 (princ msg) 

(setvar "osmode" osm) (setvar "pickbox" pbox) (prompt "\n Return OSNAP PICKBOX ")

 (prin1 osm)

 (princ) 

 ) 

리습문장내에 이전 osnap 값을 osm 으로  pickbox 겂을 pbox 로 저장한 경우 입니다

 

 

CADBOX  AUTOBOX 는 오토캐드에 강력한 기능들을 추가합니다

 

 

 

 

'E 함수' 카테고리의 다른 글

ENTDEL 객체의 이름으로 삭제  (0) 2022.08.14

긴문장의 복잡한 리습 문장을 작성시 특정부분에 메모 또는 주석을 달 필요가 있을 수 있습니다

 

이 주석으로 리습 작성자는 혼동없이 확인 완성하는데 도움을 줍니다

 

주석의 정의는 ; 단하나의 기호로 정의 됩니다

 

주석이므로 작성자 임의로 자유롭게 작성합니다

 

문장의 라인에서  ; 우측의 모든 문장이나 문자는 무시되어 리습에 영향이 없습니다

 

; 은 해당 라인에만 유효합니다

 

;  가 하나 또는 여러개  ;;;  갯수 무관하게 동일한 역활을 합니다 

 

 

예문

(setq ucspt (getvar "ucsorg") )  ; 사용자좌표계 원점을 기억해두기

 

 

 

 

 

 

CAR  LIST의 첫값만 응답

 

(setq ename (car (entsel "\n Select a Circle  "))) ; 선택한 원의 이름 저장

 

 

CADR  두번째 값만 응답

 

(setq p1(list(car pa)(+(cadr pa) y))) ; 점 pa 의 list 두번째는 y값

 

CADDR  세번째 값만 응답

 

점인 list 인경우 caddr 은 z값이 됩니다

 

 

 

CDR  첫값제외 모두응답

 

    (setq blocksel (entsel))
    (setq ename (car blocksel)) 
    (setq dtblock (entget ename)) 
    (setq blkname (cdr (assoc 2 dtblock))) ; 객체정보내 블록이름 응답중 두번째가 사용할 블록이름

 

 

 

 

 

 

 

 

'C 함수' 카테고리의 다른 글

CONS dxf 코드 결합하기  (0) 2022.08.30

ucs 와 ucsorg 로 좌표계를 제어합니다

 

리습의 결과로서 command 로 작도나 삽입등의 실행시 보통 월드 좌표로 동작을 합니다

 

그러므로 만약 현재상태가 사용자좌표계로 되어 있는 상태에서 작도실행시 오류가 발생합니다

 

따라서 먼저 월드좌표계로 설정후 command 실행한 다음 다시 사용자좌표계로 복원설정을 해 주어야 합니다

 

 

(setq ucspt (getvar "ucsorg") )  ; 사용자좌표계 원점을 기억해두기

(command "ucs" "w") ; 월드좌표계로 설정

(리습문장)

(command 문장) ; 작도 실행

(command "ucs" "n" ucspt) ; 기억했던 사용자좌표 설정 복귀

 

 

 

 

 

CADBOX  AUTOBOX 는 오토캐드에 강력한 기능들을 추가합니다

 

 

 

progn 은 progn 내의 함수들을 하나로 묶어 전체가 실행되도록 합니다

 

 

if 문에서는 참실행문 거짓실행문 각각 하나씩의 ( ) 를 선택 실행합니다

 

이 단하나의 실행문을 여러가지 실행을 하도록 progn 을 사용합니다

 

 

예제 

 

(progn (prompt "\n It is not  Text ")(exit))  ; It is not Text 란 메세지를 보여주고 exit 로 리습을 종료함을 if 문과 연관되어 단하나의 명령으로 인식케 합니다

 

 

 

 

 

 

CADBOX  AUTOBOX 는 오토캐드에 강력한 기능들을 추가합니다

 

 

'P 함수' 카테고리의 다른 글

PRINC PRIN1 PRINT 실행 출력 결과 차이점  (0) 2022.08.15
PAUSE 사용자 입력 대기  (0) 2022.08.13
PI 원주율 고유함수  (0) 2022.08.08

리습 문장 내용이 길거나 많아지면 리습 작성을 간편화할 필요가 있습니다

 

반복되는 단순 문장을 서브리습로 미리 만들고 필요시 마다 호출하여 사용하면 간편합니다

 

 

 

메인리습 은 c:를 첨가하여 선언하며 캐드 명령에 실행합니다

(defun c:maillsp()

)

 

서브리습은 c: 없이 선언 하며 캐드 명령에 응답하지 않습니다

(defun sublsp()

(prompt "\n Sub lsp ")

)

 

메인에서의 서브호출

(defun c:mainlsp()

(prompt "\n Main lsp ")

(sublsp)

)

캐드 명령 mainlsp 결과

Main lsp

Sub lsp

 

(defun c:aaa()

(sublsp)

(prompt "\n AAA")

)

캐드 명령 aaa 결과

Sub lsp

AAA

 

메인리습은 서브리습으로 호출이 불가합니다

 

 

 

 

'리습 예제 1부' 카테고리의 다른 글

도면번호 형식 문자 검색  (0) 2022.09.05
블록 존재여부로 작도 삽입 if 문  (0) 2022.08.19
리습 작도전 화면 크기 제어  (0) 2022.08.19
라인타입 로드하기  (0) 2022.08.13
리습 목적별 예제 문장  (0) 2022.07.27

 

 

 

 

 

 

 

 

pi 는 고유함수입니다

 

따라서 사용자 임의 변수 사용은 거부되며 오류 처리 됩니다

 

pi 는 원주율 3.14159 의 값을 가집니다

 

그러므로 각도와 관련한 리습에 적용합니다

 

라디안 3.14159 는 180도 입니다

 

(setq pi2(/ pi 2)) ; pi 를 2로 나누면 90도에 해당하는 라디안각도가 됩니다

 

 

 

 

'P 함수' 카테고리의 다른 글

PRINC PRIN1 PRINT 실행 출력 결과 차이점  (0) 2022.08.15
PAUSE 사용자 입력 대기  (0) 2022.08.13
PROGN 연속실행문  (0) 2022.08.09

setq 는 새로운 변수를 정의 합니다

 

변수를 정의함은 사용자 임의 변수명에 특정 조건이나 값을 저장하는 의미이기도 합니다

 

 

(setq abcd aaa) ; aaa의 값을 abcd 로 저장

 

이제 abcd를 호출하면 aaa 값을 줍니다

 

 

(setq e (entsel "\n메세지  ")) ; 메세지를 출력하여 하나의 객체를 선택하도록 합니다

사용자가 선택된 객체가 e 로 정의 됩니다

 

(setq pt1 (getpoint "\n메세지  ")) ; 메세지를 출력하여 한점을 찍도록 합니다

사용자가 찍은 점이 pt1 으로 정의 됩니다

 

(setq armm (getvar "area") ; 현재의 area 값을 aramm 으로 정의 합니다

 

 

(setq armm2 (strcat (rtos armm 2 1) " mm%%178" )) ; armm 의 실수값을 소숫점 한자리의 문자로 변경 mm 제곱 표시문과 합한 하나의 문장으로 만들어 armm2 로 정의 합니다

 

(setq ss (ssget)) ; 사용자가 다수의 객체를 선택하면 그 객체들을 ss 로 정의합니다

 

 

(setq arrayno (getint "\n 메세지  ") ; 사용자가 정수를 입력하도록 메세지를 출력하고 그 입력값을 arrayno 로 저장

 

(setq rdist (getreal "\n 메세지 ")) ; 사용자가 실수를 입력하도록 메세지를 출력하고 그 입력값을 rdist 로 저장

 

(setq pl2 (polar pl1 (* 270 angrad) (- ydist rdist2))) ; pl1 점에서 각도와 거리의 점을 pl2 로 정의 합니다

 

(setq pl6 (list (car pl5) (cadr pl1))) ; pl5 의 x 좌표  pl1  의 y 좌표 해당점을 pl6 으로 정의 합니다

 

(setq dd12h (/ (- dd2 dd1) 2) ) ; dd2 빼기 dd1 결과 값의 절반을 dd12h 로 정의 합니다

 

 

 

setq문을 연속하여 작성이 가능합니다

(setq

aaa bbb

e (entsel "\n메세지  ")

arrayno (getint "\n 메세지  ")

)

 

 

 

변수 이름은 일반문자 숫자로 명명이 가능합니다

 

특수문자들은 변수 명명이 불가합니다

 

pi mil null 등 고유함수는 변수 명명이 불가합니다

 

 

 

 

 

 

 

 

CADBOX  AUTOBOX 는 오토캐드에 강력한 기능들을 추가합니다

 

 

 

prompt 는 명령창에 메세지를 출력합니다

 

필요한 리습 관련한 정보나 결과를 사용자에게 보여줍니다

 

(prompt "\n AutoLISP is Good !!!  ")

 

결과 

AutoLISP is Good !!!

 

 

\n (₩n)은 줄바꿈 지시문 입니다

 

 

 

 

 

 

 

 

 

 

DELAY 는 수행중인 리습 진행을 잠시 멈추는 기능을 합니다

 

입력 값 1000 은 1초 입니다

 

(command "._delay" 5000) ; 5초 멈춤

 

 

 

 

 

 

 

 

CADBOX  AUTOBOX 는 오토캐드에 강력한 기능들을 추가합니다

 

 

 

 

'D 함수' 카테고리의 다른 글

치수표기 기준 설정 dimvars setting  (0) 2022.08.19
DXF 코드 객체 정보 추출  (0) 2022.08.05
DISTANCE 두점간의 거리 응답  (0) 2022.08.02

 

 

 

 

 

 

 

GRAPHSCR 는 textscr 로 열린 명령창을 닫고 캐드화면으로 복귀합니다

 

 

(GRAPHSCR)  ; 캐드창으로 복귀

 

(TEXTSCR)   ; 문자창, 명령 확장창

 

 

 

 

 

 

 

 

 

 

 

'G 함수' 카테고리의 다른 글

GETPOINT 사용자 점입력 요구  (0) 2022.08.17

 

 

 

 

 

DXF 코드는 객체의 각종 정보를 알아내는 용도로 사용됩니다

 

 

DXF 코드

객체 DXF CODE 정보내용
LINE 10 시작점
11 끝점
POINT 10 점의 위치
CIRCLE 10 중심점
40 반경
ARC 10 중심점
40 반경
50 시작각도
51 끝각도
TRACE 10, 11, 12, 13 4개의 모서리점
SOLID 10, 11, 12, 13 4개의 모서리점
TEXT 10 위치점
40 문자높이
1 문자열 내용
50 문자 회전각도
51 문자 회전각도
7 문자열 스타일
71 방향
72 수평정렬 형식
73 수직정렬 형식
11 정렬 좌표점
SHAPE 10 위치점
40 크기
2 쉐이프 이름
50 회전각도
41 X Y 스케일
51 기울기 각도
INSERT
(BLOCK)
66 attribute 관련 flag 
2 블록 이름
10 위치점
41 X 스케일
42 Y 스케일
43 Z 스케일
50 회전각도
70 열의 수
71 행의 수
44 열의 간격
45 행의 간격
POLYLINE 66 vertex 존재 flag
10 높이
70 종류 flag
40 시작 두께
41 끝 두께
71 mesh의 M vertex 수
72 mesh의 N vertex 수
73 smooth surface의 M 밀도
74 smooth surface의 N 밀도
75 curve와 smooth surface의 종류
VERTEX 10 위치
40 시작 두께
41 끝 두께
42 arc 구간의 내각의 1/4 tangent
70 vertex flag
50 curve fit 점선방향
SEQEND 필드 없음 poltline vertex의 끝을 나타냄
3DFACE 10, 11, 12, 13 4개의 모서리점

 

DXF code 는 assoc 함수에서 활용합니다

 

 

Splines in the DXF

This is what I found regarding 70 bit code


1 = Closed spline
2 = Periodic spline
4 = Rational spline
8 = Planar
16 = Linear (planar bit is also set)

32.... 256 - knot param.

32 = chord
64 = sqrt. chord
128 = uniform
256 = custom


512 =  CV frame visibility
1024 = if present, the spline is defined by fit points. Otherwise, by control vertices.

 

 

 

 

CADBOX  AUTOBOX 는 오토캐드에 강력한 기능들을 추가합니다

 

 

 

 

assoc 함수 활용법

 

ASSOC 객체의 세부 정보 추출

assoc 는 객체의 세부 정보를 응답하여 줍니다 assoc 문장 형식 (assoc 정보종류 객체) 정보종류는 DXF 코드로 정해져 있습니다 DXF 코드 객체 DXF CODE 정보내용 LINE 10 시작점 11 끝점 POINT 10 점의 위치 CIRC

autocadlisp.tistory.com

 

 

 

 

 

 

CadBOX

AutoCAD를 빠르고 편리하게 하는 Autolisp 기능들의 모음집 CadBOX의 내용과 사용법 소개

atbox.tistory.com

 

'D 함수' 카테고리의 다른 글

치수표기 기준 설정 dimvars setting  (0) 2022.08.19
DELAY 캐드 동작 잠시 멈춤 지연  (0) 2022.08.06
DISTANCE 두점간의 거리 응답  (0) 2022.08.02

assoc 는 객체의 세부 정보를 응답하여 줍니다

 

 

assoc 문장 형식

(assoc 정보종류 객체)

정보종류는 DXF 코드로 정해져 있습니다

 

DXF 코드

객체 DXF CODE 정보내용
LINE 10 시작점
11 끝점
POINT 10 점의 위치
CIRCLE 10 중심점
40 반경
ARC 10 중심점
40 반경
50 시작각도
51 끝각도
TRACE 10, 11, 12, 13 4개의 모서리점
SOLID 10, 11, 12, 13 4개의 모서리점
TEXT 10 위치점
40 문자높이
1 문자열 내용
50 문자 회전각도
51 문자 회전각도
7 문자열 스타일
71 방향
72 수평정렬 형식
73 수직정렬 형식
11 정렬 좌표점
SHAPE 10 위치점
40 크기
2 쉐이프 이름
50 회전각도
41 X Y 스케일
51 기울기 각도
INSERT
(BLOCK)
66 attribute 관련 flag 
2 블록 이름
10 위치점
41 X 스케일
42 Y 스케일
43 Z 스케일
50 회전각도
70 열의 수
71 행의 수
44 열의 간격
45 행의 간격
POLYLINE 66 vertex 존재 flag
10 높이
70 종류 flag
40 시작 두께
41 끝 두께
71 mesh의 M vertex 수
72 mesh의 N vertex 수
73 smooth surface의 M 밀도
74 smooth surface의 N 밀도
75 curve와 smooth surface의 종류
VERTEX 10 위치
40 시작 두께
41 끝 두께
42 arc 구간의 내각의 1/4 tangent
70 vertex flag
50 curve fit 점선방향
SEQEND 필드 없음 poltline vertex의 끝을 나타냄
3DFACE 10, 11, 12, 13 4개의 모서리점

 

 

 

Splines in the DXF

This is what I found regarding 70 bit code


1 = Closed spline
2 = Periodic spline
4 = Rational spline
8 = Planar
16 = Linear (planar bit is also set)

32.... 256 - knot param.

32 = chord
64 = sqrt. chord
128 = uniform
256 = custom


512 =  CV frame visibility
1024 = if present, the spline is defined by fit points. Otherwise, by control vertices.

 

 

 

 

예문 1

(srtq blkname (cdr (assoc 2 myblock)))

myblock 객체는 블록이며 블록에대한 dxf 2 는 블록이름 입니다

assoc에 대한 응답값은 쌍으로 된 list 이며 두번째 값이 블록이름 이므로 cdr 함수를 적용합니다

 

 

 

예문 2

먼저 문자하나를 textent 로 정의 

(setq p0 (cdr (assoc 10 textent)) ang (cdr (assoc 50 textent)))

 TEXT에 대한  assoc 10 은 문자의 위치점

assoc 50 은 문자의 회전각도

따라서 p0 는 문자의 시작 위치점이며 ang 는 문자의 회전각도 입니다

 

 

 

 

 

 

 

 

CadBOX

AutoCAD를 빠르고 편리하게 하는 Autolisp 기능들의 모음집 CadBOX의 내용과 사용법 소개

atbox.tistory.com

 

 

 

 

 

 

+ Recent posts