zhongys 发表于 2010-10-22 21:49:00

多种不同名称的块选择

<p><font face="Verdana"><font face="Verdana">以下只能选一种名称的块,我想要的效果是选择多种不同名称的块,然后在框选的范围内这几种名称的块都可以选择,不知道要怎样实现.</font></font></p>
<p>&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp; <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>

ZZXXQQ 发表于 2010-10-22 23:17:00



(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
)

zhongys 发表于 2010-10-23 00:25:00

<p>程式有点小问题,不过跟据的思路稍为修改了一下,已完全可以使用,原来多个名称是可以用,号分开的</p>
<p><font face="Verdana">(defun c:tt1(/ ss i bn bn1 ss1)<br/>&nbsp;(princ "\n请选择块源对象:")<br/>&nbsp;(while (= ss nil) (setq ss (ssget '((0 . "INSERT")))))<br/>&nbsp;(progn<br/>&nbsp; (setq i 0)<br/>&nbsp; (setq bn (cdr(assoc 2 (entget(ssname ss 0)))))<br/>&nbsp; (repeat (sslength ss)<br/>&nbsp;&nbsp; (setq bn1 (cdr(assoc 2 (entget(ssname ss i)))))<br/>&nbsp;&nbsp; (if (/= bn1 bn)(setq bn (strcat bn "," bn1)))<br/>&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp; )<br/>)<br/>&nbsp; (princ "\n选择图块")<br/>&nbsp; (setq ss1 (ssget (list '(0 . "INSERT") (cons 2 bn))))<br/>(princ)<br/>)<br/></font></p>

shalei021647 发表于 2011-11-13 11:27:25

论坛高手真多,一会就解答了
页: [1]
查看完整版本: 多种不同名称的块选择