ahyin 发表于 2022-7-6 09:06:55

功能不好:-4.0

尊敬的各位:,
 
请帮助更正我的代码,我想选择第1层和第2层中的所有多段线,但收到错误消息:函数错误:-4.0,我的代码有什么问题吗?
 
谢谢
 
(setq total (ssget "x" (list '(0 . "lwpolyline") (-4. "<and") (cons 8 "layer1")(cons 8 "layer2") <-4. "and>")(cons 410 (getvar "ctab")))))

Tharwat 发表于 2022-7-6 09:15:37


(setq total (ssget "x"
                  (list '(0 . "lwpolyline")
                        (cons 8 "layer1,layer2")
                        (cons 410 (getvar "ctab"))
                  )
         )
)

 
塔瓦特

ketxu 发表于 2022-7-6 09:21:22

您的”)
 
是错误的。正确的是
(-4.“and>”)我认为你必须使用OR代替,并且^^一个对象不能在两层上。

David Bethel 发表于 2022-7-6 09:24:31

也许 吧:
 
在-4之后需要一个空格
 
(-4.

should be (-4 .

Lee Mac 发表于 2022-7-6 09:31:22

有两种方法可以实现这一点,即使用逻辑滤波器代码:
 
(ssget "_X"
(list
'(0 . "LWPOLYLINE")
'(-4 . "<OR")
'(8 . "layer1")
'(8 . "layer2")
'(-4 . "OR>")
   (cons 410 (getvar "ctab"))
)
)或使用通配符过滤器,例如:
 
我建议您阅读Visual LISP IDE帮助文档的所有部分:
 
AutoLISP开发者指南>使用AutoLISP语言>使用AutoLISP操作AutoCAD对象>选择集处理
 
此外,请阅读有关使用撇号将表达式标记为文字的内容。

ahyin 发表于 2022-7-6 09:38:40

非常感谢你所有的帮助!

ahyin 发表于 2022-7-6 09:41:16

尊敬的李:,
 
如果我使用函数vlax get property来获取层名称并使选择集的以下代码正确与否?
 
](ssget "_X"
(list
'(0 . "LWPOLYLINE")
'(-4 . "<OR")
'(8 . (vlax-get-property object1 'Name))
'(8 . (vlax-get-property object2 'Name))
'(-4 . "OR>")
   (cons 410 (getvar "ctab"))
)
)
 
 

BlackBox 发表于 2022-7-6 09:47:50

 
IMO-有人没有听取好的建议:
 
 
... 在任何情况下,在计算表达式时都要使用cons:
 
(ssget "_X"
(list
'(0 . "LWPOLYLINE")
'(-4 . "<OR")
(cons 8 (vlax-get-property object1 'Layer))
(cons 8 (vlax-get-property object2 'Layer))
'(-4 . "OR>")
(cons 410 (getvar "ctab"))
)
)
 
HTH公司

Tharwat 发表于 2022-7-6 09:55:40

LWpolyline可以具有名称或图层名称的特性吗?
 
以及如何过滤层名称(vlax get property…..在使用变量保持对象的选择集以获取它们的层名称之前?
 
我的想法是对的还是被误解了?
 
谢谢

BlackBox 发表于 2022-7-6 09:59:14

 
我*相信*实体对象具有“层”属性,而层对象具有“名称”属性。
 
 
老实说,我也需要更多关于OP意图的信息来回答这个问题。
 
但是,有一种方法可以提供ssget过滤器对象信息:
 
7
页: [1] 2
查看完整版本: 功能不好:-4.0