求助,如何写同心圆的判断
本帖最后由 atjsking 于 2013-11-6 20:09 编辑大神们好,新人求助。
在一张图中有多个圆,
我要做的是选择同心的园,并删除?该怎么做?
(setq ss (ssget"x"'((0"circle")))) ;选择所有的圆
怎么做出判断某两个圆是同心的 ,并删除这两个圆??? 已经解决!
看看这个帖子http://bbs.mjtd.com/forum.php?mod=viewthread&tid=96275 本帖最后由 llsheng_73 于 2013-11-7 14:11 编辑
(setq ss(ssget "X"'((0 . "circle"))))
(if ss(progn
(setq m(sslength ss)n 0)
(while(< n m)
(setq e(ssname ss n)n(1+ n)l n
p(assoc 10(entget e))
P(vl-princ-to-string(list(nth 1 p)(nth 2 p)))
a nil)
(while(< l m)
(setq f(ssname ss l)l(1+ l)
p1(assoc 10(entget f))
P1(vl-princ-to-string(list(nth 1 p1)(nth 2 p1))))
(if(= p p1)
(progn
(ssdel f ss)(entdel f)
(setq l(1- l)m(1- m)a t))))
(if a(progn
(ssdel e ss)
(entdel e)
(setq n(1- n)m(1- m))))
)
)
)
同心圆的话必然圆心相同,当然Z坐标看怎么说了....现在把直接不要Z坐标了也就是只有Z坐标不同的认为它们同心,应该可以满足你的要求了吧。。。 两个圆同心,你是删除大的圆呢还是小的? llsheng_73 发表于 2013-11-6 09:03 static/image/common/back.gif
同心圆的话必然圆心相同。。。
谢谢大神!!!无比感激,我在做的是一个检测封闭线的程序。
在所有的图元两端点做 同规格的圆,最后一步是删除同心圆,只留单圆卡住了,
现在解决了,非常感谢!!! llsheng_73 发表于 2013-11-6 09:03 static/image/common/back.gif
同心圆的话必然圆心相同。。。
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=108242&page=1#pid616522
大神再帮下,有BUG,位于圆弧两端的圆无法删除………… atjsking 发表于 2013-11-7 12:30 static/image/common/back.gif
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=108242&page=1#pid616522
大神再帮下,有BUG,位于 ...
是因为它位于圆弧两端还是它们的Z坐标不一样? atjsking 发表于 2013-11-7 12:30 static/image/common/back.gif
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=108242&page=1#pid616522
大神再帮下,有BUG,位于 ...
我不知道你的圆是什么样子,由于程序内没有设置允许偏差,所以必须完全同心,当然又考虑到可能Z坐标可能不相同,所以给你改了下,忽略了Z坐标的存在。如果还是不能删除,那很可能差一个允许偏差。。。你可以自己进行修改,反正就是对两个圆的圆心坐标(组码10后边那三个数)进行比较,如果在你的允许偏差内就认为它们相同,自己改下IF 的条件表达式吧,不难的 好东西啊,数量太多的话,CAD有点运行不过来了 谢谢楼主的分享,非常好用,收藏备用了!
页:
[1]