(defun c:arrow()
(setq temp_osnap (getvar "osmode")) (setq size (getvar "dimasz")) (setvar "osmode" 512) ;nearest point (setq p0 (getpoint)) (setq p1 (osnap p0 "mid")) (setq p2 (osnap p0 "end")) (setq p3 (osnap p0 "cen")) (if (= p3 nil) (progn ;// in case of "line" (setq a9 (angle p2 p1)) ) (progn ;// in case of "arc" (setq a0 (angle p3 p2)) (setq a1 (angle p3 p1)) ;// µÎ º¤ÅÍÀÇ »çÀÕ°¢ÀÌ 180µµ º¸´Ù ÀÛ°Ô
(if (> (- a0 a1) (dtr 180)) (setq a0 (- a0 (dtr 360))) ) (if (< (- a0 a1) (dtr -180)) (setq a1 (- a1 (dtr 360))) ) (if (> a0 a1) ;// determine the dir. of arr. ;// in counterclockwise (setq a2 (- a0 (dtr 90))) ;// in clockwise (setq a2 (+ a0 (dtr 90))) ) (setq a9 a2) ) ) ;// drawing (setq xx (+ (car p2) (* size (cos a9)))) (setq yy (+ (cadr p2) (* size (sin a9)))) (setq p9 (list xx yy)) (command "osmode" 0) (command "pline" p2 "w" 0 (/ size 3) p9 "w" 0 0 "") (setvar "osmode" temp_osnap) ) |