(SETQ ERASE_SUM 0
I 0
N (SSLENGTH SS_CIRCLE)
ZN N
)
(WHILE (/= N 0)
(PROGN
(SETQ ED (ENTGET (SSNAME SS_CIRCLE I))
RAD (CDR (ASSOC '40 ED))
X (CADR (ASSOC 10 ED))
Y (CADDR (ASSOC 10 ED))
Z (LAST (ASSOC 10 ED))
)
(SETQ J (+ I 1))
(REPEAT (- (- ZN I) 1)
(PROGN
(SETQ ENT(SSNAME SS_CIRCLE J)
ED(ENTGET ENT)
X_SAME(CADR (ASSOC 10 ED))
Y_SAME(CADDR (ASSOC 10 ED))
Z_SAME(LAST (ASSOC 10 ED))
RAD_SAME (CDR (ASSOC '40 ED))
)
(IF (AND (EQUAL X_SAME X 0.00001)
(EQUAL Y_SAME Y 0.00001)
(EQUAL Z_SAME Z 0.00001)
(EQUAL RAD_SAME RAD 0.00001)
)
(PROGN
(SSDEL ENT SS_CIRCLE)
(COMMAND "ERASE" ENT "")
(SETQ N (- N 1)
ERASE_SUM (1+ ERASE_SUM)
)
)
(SETQ J (+ J 1))
)
)
)
(SETQ ZN (SSLENGTH SS_CIRCLE))
(IF (< I (- (SSLENGTH SS_CIRCLE) 1))
(SETQ I (1+ I))
)
(SETQ N (- N 1))
)
)
(IF (/= ERASE_SUM 0)
(PROGN
(REDRAW)
(ALERT (STRCAT "\n 有 "
(RTOS ERASE_SUM 2 0)
" 个重复的孔将被删除!!! "
)
)
)
)
SS_CIRCLE
)
这是以有写的一程序里面用到的,可以控制精度.
因为两圆重叠时,不一定刚好是同心或等半径.
(defun c:tt (/ ss i e ent cpt r pts)
(setq ss(ssget '((0 . "CIRCLE")))
fz (getdist "\n 圆心&半径误差(误差值内按1个计算):")
i -1)
(while(setq e(ssname ss(setq i(1+ i))))
(setq ent (entget e)
cpt (cdr(assoc 10 ent))
r (cdr(assoc 40 ent)))
(if (not(member 'T (mapcar '(lambda(x)(and(equal cpt (car x) fz)(equal r (cadr x) fz)))pts)))
(setq pts (cons (list cpt r) pts))
)
) (length pts)
) <p>楼主,相关命令是什么啊?我不是很清楚啊,谢谢!</p><p><a href="mailto:liguofeng3909@126.com">liguofeng3909@126.com</a></p> 回复 无痕 的帖子
简洁.实用.明了.很好 本帖最后由 ljttjl 于 2011-6-10 20:31 编辑
或http://ljttjl.ys168.com 2009-2试用程序及演示20091111删除完全重叠图元对象 目录下载此程序
以下为此程序演示:
phoenixdjq 发表于 2006-12-29 20:47
给你一个网上下载的删除重线的程序,谁做的我忘了你可以先把多余的圆删除,然后再计算,就可以了
好用,谢谢大佬分享,学习了。居然是18年前的东西,太强了
页:
1
[2]