torcky 发表于 2004-11-16 22:18:00

如何求得圈住所选的数个点的最小的一个圆

各位高手能否给个算法,有源码更好!

BDYCAD 发表于 2004-11-17 08:55:00

(setq i 0 ms nil ss (ssget '((0 . "CIRCLE"))))<BR>(IF (&gt;(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-&gt;vla-object is )))))<BR>               i (1+ i)))<BR>                                       (setq Samll-Circle (caar (vl-sort ms (function (lambda (e1 e2)(&lt; (cadr e1) (cadr e2))))))))<BR>                       (setq Samll-Circle (ssname ss 0)))

龙龙仔 发表于 2004-11-17 13:16:00

(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
)

BDYCAD 发表于 2004-11-17 14:31:00

哗三楼所运用的判断式很巧!! 借鉴.


默花花一朵 , 呵呵

torcky 发表于 2004-11-18 21:08:00

我想可能是我没有将编程意图说清楚,是这样的:


               已经存在很多个点,我选择到他们后,程序将画出能包围已选点中半径最小的那个圆(此圆在程序运行前不存在)。


        而不是得到选集中半径最小的圆





但在此依然要感谢两位斑竹的关注!

页: [1]
查看完整版本: 如何求得圈住所选的数个点的最小的一个圆