ahbbwzb 发表于 2004-1-6 11:36:00

初来乍到,请教一个问题,可别让我失望啊!

请问有没有办法一次选中一层中的所有物体?不用把其他层全冻结再拉框选的那种办法。

wkaii 发表于 2004-1-6 11:40:00

(defun c:ss()(ssget "x" (list (cons 8 (cdr(assoc 8(entget(car (entsel)))))))))




wkaii 发表于 2004-1-6 11:52:00

扩展
(defun c:ss()
(princ "\样板物体")
(print(setq s (entget(car (entsel)))))
(setq p (getint "\n特征组码º"))
(ssget (list (cons p (cdr(assoc p s)))))
)
只要你明白DXF组码含义就能很方便的选择任何你想要的物体。

wkaii 发表于 2004-1-6 12:32:00

;_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))))
)

wkaii 发表于 2004-1-6 12:51:00

通过这个程序,可以方便的完成复杂的选择任务。
比如,选中所有在 0 层上,字高为500,内容为 卧室 。。。的文字标注。
演示:

无痕 发表于 2004-1-6 17:27:00

演示中为什么会有一个闪闪的红圈圈?是干什么用的?

wkaii 发表于 2004-1-7 15:59:00

无痕 : 红圈表示左击鼠标

今天更新了这个程序,可以通过对话框生成过滤表,方便很多~
不想再传了,发个连接吧(有演示):
http://www.xdcad.net/forum/showthread.php?s=&threadid=135586
不知道斑竹是不是介意~
页: [1]
查看完整版本: 初来乍到,请教一个问题,可别让我失望啊!