ectech 发表于 2022-7-6 11:53:34

使用“全部”创建选择集

尊敬的各位:,
 
我是autolisp的初学者,我想用所有的lwpolyline和circle创建一个选择集,但我不知道如何创建它。
 
(setq set(ssget“x”(list(cons 8(vlax get property object'Name))'(0。“lwpolyline”))
 
有人能帮我吗?谢谢

MSasu 发表于 2022-7-6 11:58:46

此逻辑筛选器将创建请求的选择集:
 
(setq set (ssget "_X" '((-4 . "<OR")
               (0 . "LWPOLYLINE")
               (0 . "CIRCLE")
            (-4 . "OR>"))))

 
当做

wizman 发表于 2022-7-6 12:01:07

Msasu,set也是一个lisp函数,不能用作变量。
 
也:
(setq myset(ssget“_X”(LIST)(0。“LWPOLYLINE,CIRCLE”)(cons 410(getvar“CTAB”)))))

MSasu 发表于 2022-7-6 12:04:47

@wizman:你说得对,我错了——在没有注意到这个问题的情况下保留了原始变量名。这太尴尬了!
 
此外,您提出的过滤对我来说是新的(逗号分隔类型)-今天早上我学到了一些东西。谢谢

ectech 发表于 2022-7-6 12:06:22

非常感谢你!谢谢你的帮助!

Lee Mac 发表于 2022-7-6 12:10:43

 
msasu,
 
仅供参考,任何wcmatch字符串都可以用于ssget筛选器,即。
 

(setq myset (ssget "_X" '((0 . "~INSERT"))))

 
指除INSERT外的所有对象。
 
或者可能:
 

(setq myset (ssget "_X" '((0 . "*TEXT,*LINE"))))

 
将检索多行文字、RTEXT和文字,以及LWPOLYLINE、POLYLINE、SPLINE、XLINE和LINE。
 

MSasu 发表于 2022-7-6 12:14:42

这很有用!非常感谢。

ectech 发表于 2022-7-6 12:17:19

谢谢在选择了所有lwpolyline和circle之后,我将把所有选择集转换为vla对象。然后我需要检查这个选择集是否有闭合项或半径项。正确吗?
 
(或
(=(vlax get property(vlax ename->vla object item)'关闭):vlax false)
(=(vlax get property(vlax ename->vla object item)'半径):vlax false);或
 
谢谢

ectech 发表于 2022-7-6 12:20:01

我试着写一些代码来检查lwpolyline和circle,但它没有检查圆,并得到以下错误。可能是lisp检查vl对象时没有此项,然后返回错误。是否可以编写lisp将所有圆转换为lwpolyline?
 
ActiveX服务器返回错误:未知名称:已关闭

Lee Mac 发表于 2022-7-6 12:23:13

 
出现错误的原因是圆没有闭合特性。
 
如果您试图将所有圆转换为LWPOLYLINE,为什么要在选择集中收集LWPOLYLINE?
 
此外,由于圆是一个完全独立的图形对象,因此需要定义多段线的线段数。
 
页: [1] 2
查看完整版本: 使用“全部”创建选择集