;;
;; °æ»ç¸é¿¡ º¸ÀÌ´Â ¿ø ±×¸®±â - Ÿ¿ø(ellipse) draw
;;; ysJeong 2009.2.11
;;
;--Error handler--------------------------------------------------------
(defun bot_er (s)
(if (/= s "Function Cancelled") (if (= s "quit / exit abort")
   (princ) (princ (strcat "nERROR :" s)) ));if,if
(setvar "cmdecho" ocmde) (setvar "osmode" oosmo)(setvar "clayer" cla)
(setq *error* olderr)(princ))
;--conversion angle--------------------------------------------------
(defun dtr (dtr1)(* pi (/ dtr1 180.00)))
;--sub routin for rotate----------------------------------------------
(defun ss-add () (while (setq lst(entnext lst))(ssadd lst ss) ))
;--layer control-------------------------------------------------------
(defun out_lay () (command "layer" "s" "0" ""))
;¿ÜÇü¼±·¹À̾î 0     ¢º[»ç¿ëÀÚ°¡ ÁöÁ¤]
(defun cen_lay () (command "layer" "s" "22" "")) ;Á߽ɼ±·¹À̾î 22 ¢º[»ç¿ëÀÚ°¡ ÁöÁ¤]
;--Lisp main----------------------------------------------------------
(defun C:
TaWon (/ olderr ocmde osmode cla dsc dtc bp dia ang
hdia sindia sdia p1 p2 p3 p4 p5 p6 p7 ss cl)
(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 Diameter : " ))
(initget 7)
(setq ang (getreal "n¡í¡í Input the Slope angle : " ))
;;---calculation-------------------------------------------------------
(setq hdia (/ dia 2.0)
      sindia (sin (dtr ang))
   sdia (* hdia sindia)
      );setq
;;---Point creation---------------------------------------------------
(setq p1 (polar bp (dtr 90.0) hdia)
      p2 (polar bp (dtr 0.0) sdia)
   p3 (polar bp (dtr 180.0) sdia)
  
   p4 (polar bp (dtr 90.0) (* hdia 1.2))
   p5 (polar bp (dtr 270.0) (* hdia 1.2))
  
   p6 (polar bp (dtr 0.0) (* sdia 1.2))
   p7 (polar bp (dtr 180.0) (* sdia 1.2))
   );setq
;;---Draw----------------------------------------------------------------
(setvar "osmode" 0)
(out_lay)
(command "ellipse" p2 p3 p1 "")
(setq ss(ssadd)
       ss(ssadd (setq lst(entlast)) ss))
(setq cl (getstring "nAre you want Center Line? <Yes/No>[No]: "))
(if (or (= cl "y")(= cl "Y"))
 (progn
 (cen_lay)
 (command "line" p4 p5 "")
 (command "line" p6 p7 "")
 );progn
 );if
;--Draw after rotate---------------------------------------------------
 (command "rotate" (ss-add) "" bp pause)
;--------------------------------------------------------------
(setvar "clayer" cla)
(setvar "cmdecho" ocmde)                              
(setvar "osmode" oosmo)
(setq *error* olderr)
(princ)                                              
);end of defun