功能不好:-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")))))
(setq total (ssget "x"
(list '(0 . "lwpolyline")
(cons 8 "layer1,layer2")
(cons 410 (getvar "ctab"))
)
)
)
塔瓦特 您的”)
是错误的。正确的是
(-4.“and>”)我认为你必须使用OR代替,并且^^一个对象不能在两层上。 也许 吧:
在-4之后需要一个空格
(-4.
should be (-4 .
有两种方法可以实现这一点,即使用逻辑滤波器代码:
(ssget "_X"
(list
'(0 . "LWPOLYLINE")
'(-4 . "<OR")
'(8 . "layer1")
'(8 . "layer2")
'(-4 . "OR>")
(cons 410 (getvar "ctab"))
)
)或使用通配符过滤器,例如:
我建议您阅读Visual LISP IDE帮助文档的所有部分:
AutoLISP开发者指南>使用AutoLISP语言>使用AutoLISP操作AutoCAD对象>选择集处理
此外,请阅读有关使用撇号将表达式标记为文字的内容。 非常感谢你所有的帮助! 尊敬的李:,
如果我使用函数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"))
)
)
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公司 LWpolyline可以具有名称或图层名称的特性吗?
以及如何过滤层名称(vlax get property…..在使用变量保持对象的选择集以获取它们的层名称之前?
我的想法是对的还是被误解了?
谢谢
我*相信*实体对象具有“层”属性,而层对象具有“名称”属性。
老实说,我也需要更多关于OP意图的信息来回答这个问题。
但是,有一种方法可以提供ssget过滤器对象信息:
7
页:
[1]
2