请问如何在if语句中并列多个判断值
本帖最后由 peraperson 于 2013-12-13 10:14 编辑比如我想在选择集中找到处于图层 a b c d 的图元
尝试了(if (= (cdr (assoc 8 endata)) "a,b,c,d")这种写法,结果不可行
请问应该怎么写
另外如何通过框选建立图层集代替 a b c.. (if (wcmatch (cdr (assoc 8 endata)) "a,b,c,d")行吗? 本帖最后由 peraperson 于 2013-12-13 10:03 编辑
自贡黄明儒 发表于 2013-12-13 09:53 static/image/common/back.gif
(if (wcmatch (cdr (assoc 8 endata)) "a,b,c,d")行吗?
非常谢谢黄兄
可以了 但是如果是要判断不等于呢?
还有 如果我不想通过写a b c d到lisp里(因为 a b c d等未定),希望通过框选图中多个元素得到相应的图层储存起来(即图层集)作为判断值 请问有什么方法呢
谢谢 (if (member (cdr (assoc 8 endata)) '("a" "b" "c" "d"))) (setq lan(cdr (assoc 8 endata)))
(if (or (= lan "a")
(= lan "b")
....
或者:
(if (member lan '("a" "b" "c" "d"))
... llsheng_73 发表于 2013-12-13 10:02 static/image/common/back.gif
(if (member (cdr (assoc 8 endata)) '("a" "b" "c" "d")))
谢谢 试了一下可行
如果我不想通过写a b c d到lisp里(因为 a b c d等未定),希望通过框选图中多个元素得到相应的图层储存起来(即图层集)作为判断值 请问有什么方法呢 ll_j 发表于 2013-12-13 10:05 static/image/common/back.gif
(setq lan(cdr (assoc 8 endata)))
(if (or (= lan "a")
(= lan "b")
谢谢 请问如何通过框选建立图层集代替 a b c... 本帖最后由 llsheng_73 于 2013-12-13 10:22 编辑
peraperson 发表于 2013-12-13 10:08 http://bbs.mjtd.com/static/image/common/back.gif
谢谢 请问如何通过框选建立图层集代替 a b c...
;;'("a" "b" "c" "d")这一部分你可以自己定义一个图层名表
;;比如你选了一堆东东得到一个选择集S,通过SSLENGTH S得到它的长度n
(setq n(sslength s)m 0ls nil)
(while (< m n)(setq ly(cdr(assoc 8(entget(ssname s m))))
m(1+ m)
ls(if(member ly ls)ls(cons ly ls))))
(if (member (cdr (assoc 8 endata)) ls)
(progn真 )
(progn假)
) peraperson 发表于 2013-12-13 10:08 static/image/common/back.gif
谢谢 请问如何通过框选建立图层集代替 a b c...
框选的时候需要用ssget的逻辑判断组码-4了,
(ssget (list '(-4 ."<or") '(8 . "a") ... '(-4 . "or>))) 试试 (ssget '((8 . "")))
详情 得究 WcMatch 的帮助