; Dimension'g for Chamfer & Radius
; Chamf / Radisu ÀÚµ¿ÀνÄ
; Dimtxt, Dimscale, Dimlfac Àû¿ë
;¸®½À±¸¹® ÇϴܺÎ...»ç¿ëÀÚ ·¹ÀÌ¾î ¹× »ö»óÀ» ¼³Á¤Çϼ¼¿ä
;Sub routines...
(defun @dtr(&angle) (setq &angle (* pi (/ &angle 180.0))))
(defun @rtd(&angle) (setq &angle (* 180.0 (/ &angle pi))))
(defun @angle(&pt1 &pt2) (@rtd (angle &pt1 &pt2)))
(defun @polar (&pt &angle &dist) (polar &pt (@dtr &angle) &dist))
(defun @list (&bpt &X &Y) (list (+ (car &bpt) &X) (+ (cadr &bpt) &Y)))
(defun @nth(&Number &VarName) (nth (1- &Number) &VarName))
;Main...
(defun C:DCR(/ $OldOsnap $NewOsnap $OldLayer $Oldortho $Sel $10 $11 $DistX $DistY nString $String $Spt $Ept qty $Angle $Apt)
  ;->*error* start
 (defun *error* (msg)(princ "error: ")(princ msg)
  (setvar "osmode" !OldOsnap)
  (setvar "clayer" !OldLayer)
 (setvar "orthomode" !OldOrtho)
 (princ))
;-<*error* end
  (setvar "cmdecho" 0)
  (setq $OldOsnap (getvar "osmode"))
  (setq $OldLayer (getvar "clayer"))
   (setq $OldOrtho (getvar "orthomode"))
   (setq $OldDimlfac (getvar "dimlfac"))
  (setvar "osmode" 0)
  (setvar "orthomode" 0)
  (setq $Sel (entget (car (entsel "n¸ðµû±â °´Ã¼ ¼±ÅÃ: "))))
  (if (= (setq $Entity (cdr (assoc 0 $Sel))) "LINE")
    (progn
    (setq $10 (cdr (assoc 10 $Sel)))
    (setq $11 (cdr (assoc 11 $Sel)))
    (setq $DistX (abs (- (car $10) (car $11))))
    (setq $DistY (abs (- (cadr $10) (cadr $11))))
  );progn
    (progn
    (setq $10 (cdr (assoc 10 $Sel)))
    (setq $DistX (cdr (assoc 40 $Sel)))
    (setq $DistY (cdr (assoc 40 $Sel)))
  );progn
 );if
  (if (= $DistX $DistY)
    (progn
      (if (= $Entity "LINE")
        (progn
          (setq nString (strcat "C" (rtos (* $DistX $OldDimlfac) 2 1)))
          (setq $Spt (@polar $10 (@angle $10 $11) (/ (distance $10 $11) 2.0)))
        );progn
        (progn
          (setq nString (strcat "R" (rtos (* $DistX $OldDimlfac) 2 1)))
          (setq $Spt (@polar $10 (- (@rtd (cdr (assoc 51 $Sel))) 45) (cdr (assoc 40 $Sel))))
        );progn
      );if 
      (setq $Ept (getpoint $Spt "n³¡Á¡: "))
      (princ (strcat "n¼±Åà °´Ã¼ < C or R " (rtos (* $DistX $OldDimlfac) 2 2) ">,"));++++++
     (setq qty (getint "¼ö·® <1:Enter>:"));++++++
    (if qty (setq qty (rtos qty)))
                           (if   (= qty nil)
     (progn
    (setq $String nString)
    );progn
    (progn    
    (setq $String  (strcat qty "-" nString))    
    );progn                             
                            );if 
      (setq $Angle (@angle $Spt $Ept))
      (setq $Apt (@polar $Spt $Angle (* (getvar "dimscale") (getvar "dimasz"))))
      (command "layer" "s" "44" "") ;<<<<===== 44 »ç¿ëÀÚ ·¹À̾î À̸§ º¯°æ
      (command "pline" $Spt "w" 0 (/ (getvar "dimasz") 3.0) $Apt "w" 0 0 $Ept "")
   (COMMAND "CHANGE" "L" "" "P" "C" "251" "") ;<<<<===== 251 ¸®´õ¼±»ö»ó º¯°æ
       (if (and (>= $Angle 90) (<= $Angle 270))  
        (command "text" (@polar $Ept (- $Angle 90) (* (getvar "dimscale") 1))
                        (* (getvar "dimscale") (getvar "dimtxt")) (- $Angle 180) $String)
        (command "text" "r" (@polar $Ept (+ $Angle 90) (* (getvar "dimscale") 1))
                        (* (getvar "dimscale") (getvar "dimtxt")) $Angle $String)
      
      );if
   (COMMAND "CHANGE" "L" "" "P" "C" "42" "") ;<<<<===== 42 ¹®ÀÚ»ö»ó º¯°æ
    );progn
  );if
  (setvar "osmode" $OldOsnap)
  (setvar "clayer" $OldLayer)
 (setvar "orthomode" $OldOrtho)
  (princ)
); defun