明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: yhly555

[提问] [已解决]如何用ssget "X"过滤选择不包含隐藏和冻结的对象

[复制链接]
 楼主| 发表于 2016-9-29 09:22 | 显示全部楼层
masterlong 发表于 2016-9-28 11:46
知识点1 : 反向过滤图层
(ssget '((8 . "~家具")))

感谢帮助!这个世界好人多〈〉
发表于 2016-10-29 21:47 | 显示全部楼层
楼主可能需要注意一个问题
比如判断出"图层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>")))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-13 21:44 , Processed in 0.129969 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表