(defun circle4(ss / c r) ;获取圆或圆弧四象限点
(setq ss (entget (ssname (ssget":e:s") 0)))
(setq c (cdr (assoc 10 ss)) ;圆心
r (cdr (assoc 40 ss)) ;半径
o1 (mapcar '- c (list r 0)) ;左
o2 (mapcar '+ c (list 0 r)) ;上
o3 (mapcar '+ c (list r 0)) ;右
o4 (mapcar '- c (list 0 r)) ;下
)
(if (<= (distance i o1) (* r 0.3)) (setq i o1))
(if (<= (distance i o2) (* r 0.3)) (setq i o2))
(if (<= (distance i o3) (* r 0.3)) (setq i o3))
(if (<= (distance i o4) (* r 0.3)) (setq i o4))
(princ))