전역 변수 ZDTOGGLE이 없을 경우, 0으로 지정하여 생성하고
0-1 > ABS(-1) > 1
1-1 > ABS(0) > 0
로 루프를 만들어서, 토글 할 수 있게끔 구성되어있습니다.
시스템변수가 1과 0값이 그대로 들어가는 경우는,
별도 전역변수 없이 GETVAR한 값으로도 만들 수 있고,
주로 LT 유저가 DIESEL 표현식으로 변환하여, 메뉴나 툴 바 버튼을 만들 때 많이 씁니다.
전역 변수를 쓰지 않는다면 이런식으로 쓸수도 있을듯합니다.
(defun c:WE_PD ( / )
(if (= (getvar 'PDMODE) 0)
(setvar 'PDMODE 35)
(setvar 'PDMODE 0)
)
)
(defun c:WE_PD ( / )
(cond
((= (getvar 'PDMODE) 0) (setvar 'PDMODE 35))
((= (getvar 'PDMODE) 35) (setvar 'PDMODE 0))
(t (setvar 'PDMODE 0))
)
)
혹은 defun-q를 써본다면
(defun-q c:WE-PD ( / pdlst )
(setq pdlst '(0 32 64 96 1 33 65 97 2 34 66 98 3 35 67 99 4 36 68 100))
(setq c:WE-PD (append (list (list '/ 'pdlst )) (list (list 'setq 'pdlst (list 'quote (append (cdr pdlst) (list (car pdlst)))))) (cddr c:WE-PD)))
(princ (strcat "\n Set PDMODE - " (rtos (car pdlst) 2 0) "\n"))
(setvar 'PDMODE (car pdlst))
(princ)
)
이런 식으로도 쓸 수 있을듯합니다.
확인은 이걸로..
(defun-q-list-ref 'c:WE-PD)
무엇보다 PDMODE와 PDSIZE의 주의할 점은
객체 특성이 아닌, 도면에 저장되는 시스템 변수이기 때문에
해당 도면에 존재하는 모든 점 객체가 변경된다는 점입니다.
결과물에 보이지 않길 원하는 객체를 주로 점으로 표현하기 때문에 (TITLE BLOCK의 인쇄 여백 표기 등)
다른 도면에 추가로 작업하는 경우나 협업하는 도면인 경우에는 변경 시 주의해야 합니다.