初来乍到,请教一个问题,可别让我失望啊!
请问有没有办法一次选中一层中的所有物体?不用把其他层全冻结再拉框选的那种办法。 (defun c:ss()(ssget "x" (list (cons 8 (cdr(assoc 8(entget(car (entsel)))))))))扩展
(defun c:ss()
(princ "\样板物体")
(print(setq s (entget(car (entsel)))))
(setq p (getint "\n特征组码º"))
(ssget (list (cons p (cdr(assoc p s)))))
)
只要你明白DXF组码含义就能很方便的选择任何你想要的物体。 ;_2004.01.06.12.26_______________________
;_选择过滤器__BY__WKAII__明经通道________
;_在选择物体时,可以通过透明方式('ss)调用
(defun c:ss (/ filter e p)
(while (not e)
(princ "\n样板物体:")
(setq e (car (entsel)))
)
(print (setq e (entget e)))
(setq p (getstring "\n选择过滤组码(可以多选,间隔以逗号):"))
(if p
(foreach n (convert_string_to_int_lst p)
(if (assoc n e)
(setq filter (append filter (list (cons n (cdr (assoc n e))))))
(princ (strcat "\n"(itoa n)"为无效组码,没有进入过滤器。"))
)
)
)
(if filter
(progn
(princ "\n通过过滤器")
(princ filter)
(princ "选择物体")
(ssget filter)
)
)
)
;________________________________________________________
(defun convert_string_to_int_lst (str / lst n s1 cha )
(setq s1 ""
n0
)
(repeat (strlen str)
(setq cha (substr str (setq n (1+ n)) 1))
(if (= "," cha)
(setq lst (append lst (list (atoi s1)))
s1 ""
)
(setq s1 (strcat s1 cha))
)
)
(setq lst (append lst (list (atoi s1))))
) 通过这个程序,可以方便的完成复杂的选择任务。
比如,选中所有在 0 层上,字高为500,内容为 卧室 。。。的文字标注。
演示:
演示中为什么会有一个闪闪的红圈圈?是干什么用的? 无痕 : 红圈表示左击鼠标
今天更新了这个程序,可以通过对话框生成过滤表,方便很多~
不想再传了,发个连接吧(有演示):
http://www.xdcad.net/forum/showthread.php?s=&threadid=135586
不知道斑竹是不是介意~
页:
[1]