- 积分
- 64470
- 明经币
- 个
- 注册时间
- 2005-11-29
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2016-10-29 21:47:59
|
显示全部楼层
楼主可能需要注意一个问题
比如判断出"图层1"、"图层2"..."图层n"是关闭的或者被冻结的,总之就是不想选择到的图层
那么怎么写最后的过滤表?
我们知道:类型为字符型的组通常可以这样写'(8 . "图层1,图层2...图层n"),这样作为过滤的时候只要是其中之一都会被选择,相当于(-4 . "<or")(8 . "图层1")(8 . "图层2")...(8 . "图层n")(-4 . "or>")
但是,如果这些图层名前边都加上一个~的时候,得到的结果很可能不是你所期望的
比如'(8 "~图层1,~图层2")实际上它根本不起作用了,原因在于那个逗号的作用实际上相当于or,最终就是图层2不是图层1,所以被选中,同样的,因为图层1不是图层2,也被选中,有点绕?但它实际上就是这么干的。。。
这个时候,如果用not来限定就不会有问题了(-4 ."<not")(8 . " "图层1,图层2...图层n")(-4 . "not>")
也就是说,不管是冻结的图层还是隐藏的图层甚至锁定的图层,只要先得到这个图层列表,然后用not进行限定就真正解决问题了
所设得到的需要排除的图层列表为lays,需要选择多段线(0 . "lwpolyline"),那么可以写成
(ssget"X"(list'(0 . "lwpolyline")'(-4 . "<not")(cons 8(apply'strcat(mapcar'(lambda(x)(strcat","x))lays)))'(-4 . "not>"))) |
|