如何求得圈住所选的数个点的最小的一个圆
各位高手能否给个算法,有源码更好!(setq i 0 ms nil ss (ssget '((0 . "CIRCLE"))))<BR>(IF (>(SSLENGTH SS) 1)<BR> (progn<BR> (repeat (SSLENGTH SS)<BR> (setq is (ssname ss i)<BR> ms (append ms (list(list is (vla-get-radius (vlax-ename->vla-object is )))))<BR> i (1+ i)))<BR> (setq Samll-Circle (caar (vl-sort ms (function (lambda (e1 e2)(< (cadr e1) (cadr e2))))))))<BR> (setq Samll-Circle (ssname ss 0))) (defun TTT (/ SS I RAD MINRAD SMALL-CIRCLE)
(if (setq SS
(ssget '((0 . "CIRCLE")))
)
(progn
(setq I 0
MINRAD 1e99
)
(repeat (sslength SS)
(if (< (setq RAD (vla-get-radius
(vlax-ename->vla-object (ssname SS I))
)
)
MINRAD
)
(setqSMALL-CIRCLE
(ssname SS I)
MINRAD RAD
)
)
(setq I (1+ I))
)
)
)
SMALL-CIRCLE
) 哗三楼所运用的判断式很巧!! 借鉴.
默花花一朵 , 呵呵 我想可能是我没有将编程意图说清楚,是这样的:
已经存在很多个点,我选择到他们后,程序将画出能包围已选点中半径最小的那个圆(此圆在程序运行前不存在)。
而不是得到选集中半径最小的圆
但在此依然要感谢两位斑竹的关注!
页:
[1]