Miller87 发表于 2022-7-5 19:45:19

过滤器列表操作帮助

Hy编码器!
我不明白为什么这个简单的代码不起作用:
我的目的是对属于第1层和第2层的线条进行连接选择。
 


(setq ss (ssget "_X" '(
                      (0 . "LINE")
             
             (-4 . "<AND")
                
                (8 . "layer1")
                (8 . "layer2")
             
                
                
             
             (-4 . ">AND")
             
                     )
)
)

(sssetfirst nil ss)


 
我不明白是否有什么错误。
对不起,我提了个愚蠢的问题
谢谢

David Bethel 发表于 2022-7-5 19:59:52

在AND测试中不能有2个层。尝试OR测试
 
 
 
作为替补
(setq ss (ssget "X" (list (cons 0 "LINE")(cons 8 "LAYER1,LAYER2"))))
 
-大卫

Miller87 发表于 2022-7-5 20:04:45

有没有简单的方法来选择属于第1层第2层的线,排除所有其他线和其他对象?

Miller87 发表于 2022-7-5 20:14:17


(setq ss (ssget "_X"
'(
       (-4 . "<OR")
         (-4 . "<AND") (0 . "LINE")    (8 . "layer1") (-4 . "AND>")
         (-4 . "<AND") (0 . "LINE")    (8 . "layer2") (-4 . "AND>")
       (-4 . "OR>")
   )
)

)



 
 
我做到了!
 
但仍然存在一些问题;
我需要插入存储在变量中的层的类似字符串的名称。
 

(setq ss (ssget "_X"
'(
       (-4 . "<OR")
         (-4 . "<AND") (0 . "LINE")    (8 . "layer1") (-4 . "AND>")
         (-4 . "<AND") (0 . "LINE")    (8 . "layer2") (-4 . "AND>")
       (-4 . "OR>")
   )
)

)



 
 
我得到了这个错误:错误的值错误的SSGET。
这可能吗?

David Bethel 发表于 2022-7-5 20:27:50

是的,你做到了!这是一种非常冗长的方式,但它是正确有效的-大卫

Lee Mac 发表于 2022-7-5 20:30:17

我建议:
(ssget "_X" '((0 . "LINE") (8 . "layer1,layer2")))
 
关于使用变量,请参阅我的教程。

Miller87 发表于 2022-7-5 20:41:27


(setq ss (ssget "_X" (list '(0 . "LINE") (cons 8 (strcat namelayer1 "," namelayer2)))))

(sssetfirst nil ss)

 
这是最后的代码。
谢谢大家!

Lee Mac 发表于 2022-7-5 20:47:56

干得好不客气。
页: [1]
查看完整版本: 过滤器列表操作帮助