항상 도움을 주시는 고캐드 고수님들 감사합니다.
아래의 Lisp 파일도 고캐드에서 다운받은 파일임을
알리며 질문들어갑니다.
아래의 파일은 자동으로 Tap 치수자동기입 Lisp입니다.
실행시 출력은 “0-M10 TAP DP:10” 이런식으로 출력이
됩니다.
제가 바라는 출력은 수량부분이 “0”이면 “M10 TAP DP:10”
이런식으로 수량부분이 “0”이면 아예 “0”부분이 출력이 되지
않게 하는것과 지시선부분이 조절이 가능하게 하는것(지금은 화살표가
보이지 않을정도로 짧습니다) 입니다.
고수님들의 많은 관심바랍니다.
;;;;;;;;;;Tap 치수기입;;;;;;;
(defun c:Tad(/ #os #a #b dia k dp n txt ep ep1 ep2)
(setvar “cmdecho” 0)
(setq #os(getvar “osmode”))
(setvar “osmode” 512)
(setq #a(getpoint “n≫≫≫TAP 외경을 선택하세요:”))
(setvar “osmode” #os)
(if(setq #b(osnap #a “cen”))
(progn
(setq dia (fix(atof(rtos(*(distance #a #b)2.0)2 0))));;여기 11.5이상이면 12로인식
(initget “Yes No”)
(setq k (getkword “n관통 … < Yes > / No : “))
(if (= k “No”)
(progn
(setq dp (getint (strcat “n깊이< ” (itoa (1+ dia)) ” >: “)))
(if (= dp nil) (setq dp (1+ dia)))
)
)
(setq n (getint “n수량< 0 >: “))
(if (= n nil) (setq n 0))
(cond
((or (= k nil) (= k “Yes”)) (setq txt (strcat (itoa n) “-” “M” (itoa dia) ” TAP THRU”)))
((= k “No”) (setq txt (strcat (itoa n) “-” “M” (itoa dia) ” TAP DP:” (itoa dp))))
)
(setq EP (polar #b (/ pi 4) (distance #a #b)));;;한줄 추가
(setq ep1 (polar ep (/ pi 4) (/ dia 2)))
(setq ep2 (polar ep1 0 (/ dia 4)))
(setvar “osmode” 0);;;osnap 없애기
(command “qleader” ep ep1 ep2 “0” txt “”)
(setvar “osmode” #os);;;osnap 복구
)
)
(setvar “osmode” 37)
(princ)
)