pparc 发表于 2011-6-7 11:37:25

高手们来帮个忙吧 图层多选 筛选并过滤

帮找找下面程序的错误吧 member老不成功 什么情况?
(defun c:ceshi ()
(prompt"\n请选择要选择过滤的图层上的对象")
(setq s1 (ssget))
(setq la '())
       (setq len (sslength s1) i 0)
       (while (< i len)
            (setq temp (ssname s1 i))
            (setq templst (list (assoc 8 (entget temp))))
            (setq la (appendtemplst la))   
            (setq i (1+ i))
       )
(prompt"\n请选择要生成对象的范围")
(setq ss1 (ssget "x" '((-4 . "<OR") la (-4 . "<OR"))))
)

caoyin 发表于 2011-6-7 13:43:22

(setq ss1 (ssget "x" '((-4 . "<OR") la (-4 . "<OR"))))
->
(setq ss1 (ssget "x" (list '(-4 . "<OR") la '(-4 . "<OR"))))
试试

pparc 发表于 2011-6-7 13:48:59

回复 caoyin 的帖子

运行了一下提示错误: ssget 列表错误

caoyin 发表于 2011-6-7 13:51:02

或者这样
(defun c:ceshi (/ S1 I TEMP LAY LST FILT SS1)
(prompt"\n请选择要选择过滤的图层上的对象")
(setq s1 (ssget)I (sslength s1))
(while (setq TEMP (ssname s1 (setq I (1- I))))
    (setq LAY (cdr (assoc 8 (entget temp))))
    (or (member LAY LST)
      (setq LST (cons LAY LST))
    )
)
(prompt"\n请选择要生成对象的范围")
(setq FILT (read (vl-string-translate "( )" "\",\"" (vl-princ-to-string LST)))
      ss1(ssget "x" (list (cons 8 FILT)))
)
)

caoyin 发表于 2011-6-7 13:53:27

本帖最后由 caoyin 于 2011-6-7 14:05 编辑

pparc 发表于 2011-6-7 13:48 http://space.mjtd.com/static/image/common/back.gif
回复 caoyin 的帖子

运行了一下提示错误: ssget 列表错误

那是你的代码问题,检查一下变量la

pparc 发表于 2011-6-7 14:03:14

回复 caoyin 的帖子

谢谢 找出来 应该是la有问题
页: [1]
查看完整版本: 高手们来帮个忙吧 图层多选 筛选并过滤