多种不同名称的块选择
<p><font face="Verdana"><font face="Verdana">以下只能选一种名称的块,我想要的效果是选择多种不同名称的块,然后在框选的范围内这几种名称的块都可以选择,不知道要怎样实现.</font></font></p><p> </p>
<p><font face="Verdana">(setq en (entget (CAR (entsel "\n请选择块源对象: "))))</font><font face="Verdana"><br/>(setq ss</p>
<p>(ssget </p>
<p>(list '(0 . "INSERT") </p>
<p><font face="黑体"><font color="#ff00ff"> <font face="Arial"><strong>(cons 2 (cdr (assoc 2 en))</strong></font></font></font><font face="Arial" color="#ff00ff"><strong>)</strong></font></p>
<p><font face="黑体">)</font></p>
<p><font face="黑体">)</font></p>
<p><font face="黑体">)<br/></p></font></font>
(defun c:tt ()
(setq ss1 nil)
(if (and (princ "\n选择图块") (setq ss (ssget '((0 . "INSERT"))))) (progn
(setq i 1 bnlst "")
(setq bn (cdr(assoc 2 (entget(ssname ss 0)))))
(repeat (sslength ss)
(setq bn (strcat bn "," (cdr(assoc 2 (entget(ssname ss i))))))
(setq i (1+ i))
)
(princ "\n选择图块")
(setq ss1 (ssget (list '(0 . "INSERT") (cons 2 bn))))
))
ss1
)
<p>程式有点小问题,不过跟据的思路稍为修改了一下,已完全可以使用,原来多个名称是可以用,号分开的</p>
<p><font face="Verdana">(defun c:tt1(/ ss i bn bn1 ss1)<br/> (princ "\n请选择块源对象:")<br/> (while (= ss nil) (setq ss (ssget '((0 . "INSERT")))))<br/> (progn<br/> (setq i 0)<br/> (setq bn (cdr(assoc 2 (entget(ssname ss 0)))))<br/> (repeat (sslength ss)<br/> (setq bn1 (cdr(assoc 2 (entget(ssname ss i)))))<br/> (if (/= bn1 bn)(setq bn (strcat bn "," bn1)))<br/> (setq i (1+ i))<br/> )<br/>)<br/> (princ "\n选择图块")<br/> (setq ss1 (ssget (list '(0 . "INSERT") (cons 2 bn))))<br/>(princ)<br/>)<br/></font></p> 论坛高手真多,一会就解答了
页:
[1]