如果没有第二行(command)则程序运行完,会出行一条空白的提示行
此程序启动后,只要选取两个圆就能显示这两个圆的中心距及最小边距
(defun c:cd1 (/ st a b len a1 a2 a3 b1 b2 b3 dis fi dis1)
;(COMMAND)
(setvar "cmdecho" 0)
(princ "\nSelect two circle or arc...")
(setq st (ssget '(( 0 . "CIRCLE,ARC")))
len (sslength st)
a (CDR (assoc 0 (entget (ssname st 0))))
b (CDR (assoc 0 (entget (ssname st 1))))
)
(if (AND (= len 2) (OR (= a "ARC")(= A "CIRCLE")) (OR (= B "ARC")(= B "CIRCLE")))
(PROGN
(SETQ A1 (ENTGET (SSNAME ST 0))
A2 (CDR (ASSOC 40 A1))
A3 (CDR (ASSOC 10 A1))
(defun C:CD1 (/ ST A B LEN A1 A2 A3 B1 B2 B3 DIS FI DIS1)
(setvar "cmdecho" 0)
(prompt "Select two circle or arc...")
(setq ST (ssget '((0 . "CIRCLE,ARC")))
LEN (sslength ST)
A (cdr (assoc 0 (entget (ssname ST 0))))
B (cdr (assoc 0 (entget (ssname ST 1))))
)
(if (and (= LEN 2)
(or (= A "ARC") (= A "CIRCLE"))
(or (= B "ARC") (= B "CIRCLE"))
)
(progn
(setq A1 (entget (ssname ST 0))
A2 (cdr (assoc 40 A1))
A3 (cdr (assoc 10 A1))
(defun C:CD1 (/ ST A B LEN A1 A2 A3 B1 B2 B3 DIS FI DIS1)
(setvar "cmdecho" 0)
(command "_.select" "")
(prompt "Select two circle or arc...")
(setq ST (ssget '((0 . "CIRCLE,ARC")))
...........
...........