CAD 的autolisp编程问题:我用下面这个程序还去掉重合的点,但这个程序不能够循环。 50

(defunc:ere()(setqa(ssget))(setqi(sslengtha))(while(>i1)(setqj(-i1))(setqb(ssnamea(se... (defun c:ere()
(setq a (ssget))
(setq i (sslength a))
(while (> i 1)
(setq j (- i 1))
(setq b (ssname a (setq i (1- i))))
(setq c (entget b))
(while (> j 0)
(setq b1 (ssname a (setq j (1- j))))
(setq c1 (entget b1))
(if (and (= (rtos (cadr (assoc 10 c)) 2 4)(rtos (cadr (assoc 10 c1)) 2 4))
(= (rtos (caddr (assoc 10 c)) 2 4)(rtos (caddr (assoc 10 c1)) 2 4)))
(command "erase" b1 "")
))))
展开
 我来答
美妙又虔敬丶多宝鱼7603
2011-05-13 · TA获得超过265个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:196万
展开全部
(defun c:ere ( )
(setq ss (ssget (list (cons 0 "POINT"))) li '() si 0 ei 0)
(repeat (sslength ss)
(setq cs (ssname ss si) si (1+ si) ce (entget cs))
(if (member (vl-princ-to-string (cdr (assoc 10 ce))) li)
(progn
(command "_.Erase" cs "")
(setq ei (1+ ei))
)
(setq li (cons (vl-princ-to-string (cdr (assoc 10 ce))) li))
)
)
(princ (strcat "\n在选择的" (itoa (sslength ss)) "个点中,删除了" (itoa ei) "个重复的点!"))
(princ)
)

上面的程序,我用的是REPEAT,用WHILE也是一样的效果。另外,循环里面套循环个人觉得不太可取,若对象过多会运算很大。
甘曦之
2011-05-13
知道答主
回答量:10
采纳率:0%
帮助的人:4.1万
展开全部
不妨试试下面的代码:
(defun c:ere()
(setq a (ssget (list(cons 0 "point"))))
(setq i (sslength a))
(setq j (1- i))
(while (> j -1)
(setq b (ssname a j))
(setq c (entget b))
(if (/= c nil)
(progn
(setq zb(cdr (assoc 10 c)))
(setq cfdj(ssget "x" (list (cons 10 Zb)(cons 0 "point"))))
(if (/= cfdj nil)(progn(setq cfdj(ssdel b cfdj))(command "erase" cfdj "")))
)
)
(setq j(1- j))
)
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7e38fb2
2011-05-11 · TA获得超过518个赞
知道小有建树答主
回答量:475
采纳率:0%
帮助的人:297万
展开全部
可以用(repeat (sslength i)
.................)试试,用while循环i值没有在循环体中修正啊,这样不成死循环了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KYJFHG
2011-05-20
知道答主
回答量:51
采纳率:0%
帮助的人:14万
展开全部
fgrdtgrrfg
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XSWSKY
2012-08-30
知道答主
回答量:4
采纳率:0%
帮助的人:6270
展开全部
请问朋友是否有删除重复线的LISP命令
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式