CAD中lisp语言编辑问题:我想得到以下目的,求CAD二次开发的高手解答
最初选中很多线1……n,运行lisp,当我每单击一条线1时,就将该线1剔除选中,并且将剩下的所有线条2……n向z轴平移550的距离,然后再单击另一条线2,就将该线2剔除选...
最初选中很多线1……n,运行lisp,当我每单击一条线1时,就将该线1剔除选中,并且将剩下的所有线条2……n向z轴平移550的距离,然后再单击另一条线2,就将该线2剔除选中,并且将剩下的所有线条3……n向z轴平移550的距离,如此到最后,当选中为0,或者回车时结束命令,求高手解答啊,答得好分数可以追加,拜托啦,急!!!!!
求代码 展开
求代码 展开
1个回答
展开全部
你想要完整的代码?还是只要思路
仅供参考
(defun c:tt()
(setq ss0 nil ent0 nil)
(setq yunxing T)
(setq ss0
(ssget
'(
(0 . "line")
)
)
)
(while yunxing
(while (= nil ent0)
(setq ent0
(car
(entsel "\n选择要剔除的一根线:")
)
)
(setq ent0 (ssmemb ent0 ss0))
)
(setq ss0 (ssdel ent0 ss0))
(setq ent0 nil)
(setq i (sslength ss0) n 0)
(repeat i
(setq ent1 (ssname ss0 n))
(setq ent1 (entget ent1))
(setq xyz1 (cdr (assoc 10 ent1)))
(setq x1 (car xyz1) y1 (cadr xyz1) z1 (caddr xyz1))
(setq ent1 (subst
(cons 10 (list x1 y1 (+ 550 z1)))
(assoc 10 ent1)
ent1)
)
(setq xyz2 (cdr (assoc 11 ent1)))
(setq x2 (car xyz2) y2 (cadr xyz2) z2 (caddr xyz2))
(setq ent1 (subst
(cons 11 (list x2 y2 (+ 550 z2)))
(assoc 11 ent1)
ent1)
)
(entmod ent1)
(setq n (1+ n))
)
(grread)
)
)
仅供参考
(defun c:tt()
(setq ss0 nil ent0 nil)
(setq yunxing T)
(setq ss0
(ssget
'(
(0 . "line")
)
)
)
(while yunxing
(while (= nil ent0)
(setq ent0
(car
(entsel "\n选择要剔除的一根线:")
)
)
(setq ent0 (ssmemb ent0 ss0))
)
(setq ss0 (ssdel ent0 ss0))
(setq ent0 nil)
(setq i (sslength ss0) n 0)
(repeat i
(setq ent1 (ssname ss0 n))
(setq ent1 (entget ent1))
(setq xyz1 (cdr (assoc 10 ent1)))
(setq x1 (car xyz1) y1 (cadr xyz1) z1 (caddr xyz1))
(setq ent1 (subst
(cons 10 (list x1 y1 (+ 550 z1)))
(assoc 10 ent1)
ent1)
)
(setq xyz2 (cdr (assoc 11 ent1)))
(setq x2 (car xyz2) y2 (cadr xyz2) z2 (caddr xyz2))
(setq ent1 (subst
(cons 11 (list x2 y2 (+ 550 z2)))
(assoc 11 ent1)
ent1)
)
(entmod ent1)
(setq n (1+ n))
)
(grread)
)
)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询