|  ;;;****程序开始*****
(defun c:ft ()
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (princ "\n提示:程序开始...按Esc键可结束.\n")
  (setq dx (getvar "screensize"))
  (setq kgb (/ (car dx) (cadr dx)))
  (setq hd (getvar "viewsize"))
  (setq vcen (getvar "viewctr"))
  (setq  a (list  (- (car vcen) (* hd kgb 0.5))
    (- (cadr vcen) (/ hd 2))
    )
  )
  (setq b (list (+ (car a) (* hd kgb)) (+ (cadr a) hd)))
  (setq pcen vcen)
  (setq r (* 2 (/ (abs (- (cadr a) (cadr b))) 10)))
  (setq  a (list (+ (car a) r) (+ (cadr a) r))
  b (list (- (car b) r) (- (cadr b) r))
  )
  (setq  ss (ssadd)
  n  0
  )
  (command "color" 1)
  (while (< n 10)
    (command "circle" pcen r)
    (ssadd (entlast) ss)
    (setq n (+ n 1))
  )
;;;  (setq obj (entlast)
;;;  e (entget obj))
  (xunhuan ss a b r)
)
(defun xunhuan (ss a b r / col n ang angs ang1 col)
  (setq angs (list 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1))
  (while T
    (setq n 0)
    (while (< n 10)
      (setq e   (entget (ssname ss n))
      obj   (ssname ss n)
      pcen (cdr (assoc 10 e))
      col   (cdr (assoc 62 e))
      ang   (nth n angs)
      )
;;;      (setq f (polar pcen ang (/ r 100)))
;;;      (setq e (subst (cons 10 f) (assoc 10 e) e))
;;;      (entmod e)
      (command "move" obj "" pcen (polar pcen ang (/ r 100)))
      (setq pcen (polar pcen ang (/ r 100)))
      (if (or (> (car pcen) (car b))
        (< (car pcen) (car a))
        (> (cadr pcen) (cadr b))
        (< (cadr pcen) (cadr a))
    )
  (progn
    (setq pcen0 (polar pcen (+ ang pi) (/ r 100)))
    (cond  ((inters pcen pcen0 a (list (car a) (cadr b)))
     (setq ang1 (- pi ang))
    )
    ((inters pcen pcen0 b (list (car b) (cadr a)))
     (setq ang1 (- pi ang))
    )
    (t (setq ang1 (- (* 2 pi) ang)))
    )
    (princ ang)
    (princ ang1)
    (setq angs (subst ang1 ang angs))
    (princ angs)
    (setq col (1+ col))
    (if (= 7 col)
      (setq col 1)
    )
    (command "change" obj "" "p" "c" col "")
;;;    (setq e (subst (cons 62 col) (assoc 62 e) e))
;;;    (entmod e)
  )
      )
      (setq n (+ n 1))
;;;      (command "delay" "1")
    )
  )
)
 |