;;
;;Reamer Hole draw
;;

(defun bot_er (s)
(if (/= s "Function Cancelled")
   (if (= s "quit / exit abort")
   (princ) (princ (strcat "nERROR :" s)) ))
(setvar "cmdecho" ocmde) (setvar "osmode" oosmo)(setvar "clayer" cla)
(setq *error* olderr)
(princ))

(defun dtr (dtr1)(* pi (/ dtr1 180.00)))

(defun ss-add () (while (setq lst(entnext lst))(ssadd lst ss) ))
;--·¹À̾îÁ¦¾î-------------------------------------------------------
(defun out_lay () (command "layer" "s" "0" ""))
;¿ÜÇü¼±·¹À̾î 0     ¢º[»ç¿ëÀÚ°¡ ÁöÁ¤]
(defun cen_lay () (command "layer" "s" "22" "")) ;Á߽ɼ±·¹À̾î 22 ¢º[»ç¿ëÀÚ°¡ ÁöÁ¤]

;--[¸ÞÀθ®½À]----------------------------------------------------------
(defun C:
ream (/ olderr ocmde osmode cla dsc bp) ;¸í·É¾î head
(setq olderr *error* *error* bot_er)
(setq ocmde (getvar "cmdecho")  oosmo (getvar "osmode")
  cla (getvar "clayer")   dsc (getvar "dimscale")
  dtx (getvar "dimtxt")   );setq
(setvar "cmdecho" 0)
(setvar "osmode" 32)
(graphscr)
(initget 1)
(setq Bp (getpoint "n¡í¡í Pick the Base point : " ))
(initget 7)
(setq dia (getreal "n¡í¡í Input the Pin diameter (mm) : " ))
(initget 7)
(setq Dp (getreal "n¡í¡í Input the Hole depth (mm) : " ))
(initget 7)
(setq Ch (getreal "n¡í¡í Input the chamfer dist. : " ))
;--Cal--------------------------------------------------------------
(setq hd (/ dia 2.0) ; ÇÉÁö¸§ 1/2
   Qd (/ dia 4.0) ; ÇÉÁö¸§ 1/4
   tanA (tan (dtr 30)) ; tan Angle
      tanL (* tanA qd) ; tan30µµ
      ucp (/ dia 10.0);»ó Á߽ɼ± µ¹Ãâ¾ç
  lcp (/ dia 10.0); ÇÏ Á߽ɼ± µ¹Ãâ¾ç
      );setq
;--°¢ Æ÷ÀÎÆ®ÁöÁ¤----------------------------------------------------
(setq cp1 (polar bp (dtr 270.0) ch)
      cp2 (polar bp (dtr 270.0) dp)
      cp3 (polar cp2 (dtr 270.0) tanL)
  
  lp1 (polar bp (dtr 180.0) (+ hd ch))
  lp2 (polar cp1 (dtr 180.0) hd)
  lp3 (polar cp2 (dtr 180.0) hd)
  lp4 (polar cp2 (dtr 180.0) qd)
  
  rp1 (polar bp (dtr 0.0) (+ hd ch))
  rp2 (polar cp1 (dtr 0.0) hd)
  rp3 (polar cp2 (dtr 0.0) hd)
  rp4 (polar cp2 (dtr 0.0) qd)
   );setq
;--Draw----------------------------------------------------  
(setvar "osmode" 0)
(out_lay)

(command "line" lp1 lp2 "")
(setq ss(ssadd)
       ss(ssadd (setq lst(entlast)) ss))
(command "line" lp2 lp3 rp3 rp2 rp1 "")
(command "line" lp4 cp3 rp4 "")

(command "line" lp2 rp2 "")(setq e1 (entlast))
(command "change" e1 "" "P" "C" "8" "")
(setq cl (getstring "nAre you want Center Line? <Yes/No>[No]: "))
(if (or (= cl "y")(= cl "Y"))
 (progn
  (setq cucp (polar bp (dtr 90.0) (/ dia 5.0))
        clcp (polar cp3 (dtr 270.0) (/ dia 5.0))
 );setq
 (cen_lay)
 (command "line" cucp clcp "")
 );progn
 );if

(command "layer""m""Ghost""c""95" "" "l" "continuous" "" "p""n" "" "")
;È­¸é¿¡ Ç¥½Ã´Â µÇÁö¸¸ Àμâ´Â ¾ÈµÇ´Â ·¹ÀÌ¾î ¸¸µë(Åõ¸í·¹À̾î)
(command "layer" "s" "ghost" "") ; Åõ¸í·¹À̾î·Î ¹Ù²Þ
(setq ts (* dsc (* dtx 0.25)))
(setq tp (polar bp (dtr 270) dsc))
(command "text" "j" "m" tp ts "0" (rtos dia 2 3))
; ÀÔ·ÂÇÑ Áö¸§±Ô°ÝÀ» È­¸é¿¡ Ç¥½Ã(Àμâ´Â ¾ÈÇÔ)

 (command "rotate" (ss-add) "" bp pause)

(setvar "clayer" cla)
(setvar "cmdecho" ocmde)                              
(setvar "osmode" oosmo)
(setq *error* olderr)
(princ)                                              
);end of defun