hawnn 发表于 2009-2-21 11:53:00

[已解决]同心圆、弧判断

本帖最后由 作者 于 2009-7-5 18:57:37 编辑 <br /><br /> <p>我在写一个画中心线的命令,现在有个问题,我用如下函数获取所有圆和圆弧的</p><p>(setq cobj (ssget '((-4 . "&lt;OR") (0 . "CIRCLE") (0 . "ARC") (-4 . "OR&gt;"))))</p><p>那么请问大家,如果存在同心圆或者圆弧,怎么忽略掉其中比较小的圆或者弧,直接加大的选择集呢?</p><p>因为螺丝过孔经常是两个同心圆...所以,中心线画重了</p>

zml84 发表于 2009-2-21 15:10:00

顾名思义,比较圆心。

Andyhon 发表于 2009-2-21 15:13:00

本帖最后由 作者 于 2009-2-21 23:13:21 编辑


(defun dxg (code ele)
   (cdr (assoc code (entget ele)))
)
;; (setq cobj (ssget "X" '((0 . "CIRCLE,ARC"))))
;; 单试同一圆心选择集
(setq cobj (ssget '((0 . "CIRCLE,ARC"))))
(cond
((< (setq nn (sslength cobj)) 2))
(T
(setq ee (ssname cobj (1- nn))
       Rad (dxg 40 ee)
      nn (1- (1- nn))
)
(while (setq e1 (ssname cobj nn))
    (setq Rad1 (dxg 40 e1)
            nn (1- nn)
    )
    (cond
   ((> Rad1 Rad)
      (ssdel ee cobj)
      (setq eee1
         RadRad1
   ))
   (T (ssdel e1 cobj))
))) )
===>cobj (nn=1 / max Rad)

hawnn 发表于 2009-2-21 19:11:00

本帖最后由 作者 于 2009-2-21 19:13:55 编辑 <br /><br /> <p>谢谢Andyhon</p><p>不过现在又有个问题,只能对一个对象操作了?</p><p>我框选N个圆,只能画出一个</p>

ljttjl 发表于 2009-2-21 19:50:00

<p>解决思路:提取所有圆和圆弧的圆心坐标后,将其组成表,然后消除相同坐标后组成新表,再进行其它操作。</p>

laorenhao999 发表于 2014-11-7 13:43:45

ljttjl 发表于 2009-2-21 19:50 static/image/common/back.gif
解决思路:提取所有圆和圆弧的圆心坐标后,将其组成表,然后消除相同坐标后组成新表,再进行其它操作。

好思路!赞一个!
页: [1]
查看完整版本: [已解决]同心圆、弧判断