请问AutoLISP能不能选择多个对象后马上执行操作,而不必右键确认。
AutoCAD的“延伸”命令,可以只选择一个对象,也可以一次选择多个对象,选中后都能马上执行延伸操作。而LISP的ssget函数选择对象后必须右键或回车确认,才能执行操作,entsel函数一次只能选一个对象。
请问在AutoLISP中有没有可以一次选择多个对象,然后不用右键或回车确认,就能马上执行操作的方法?
论坛搜索不能用了,不知道这个有没有人讨论过,了解的提点一下,谢谢! Cad船长 发表于 2016-8-26 14:38 static/image/common/back.gif
能不能把你的这个手册发一个给我,我这里的跟你的不一样,谢谢!
明经网站上就有,自己搜索一下吧,我也是搜的 ssget S: 看这个参数的说明 VBALISPER 发表于 2016-8-25 21:16 static/image/common/back.gif
ssget S: 看这个参数的说明
我翻了 vlisp参考手册里只有 X P L I 等几个参数,没找S的,是我这个手册版本不对? 本帖最后由 Sylvanas 于 2016-8-26 09:10 编辑
Cad船长 发表于 2016-8-25 22:41 static/image/common/back.gif
我翻了 vlisp参考手册里只有 X P L I 等几个参数,没找S的,是我这个手册版本不对?
给你附一段手册内容
-------------------------------------
根据选定对象创建选择集
(ssget ] )
选择集中可以包含图纸空间和模型空间两个空间中的对象,但该选择集用于某操作时,那些在当前无效的空间中的对象会被 ssget 过滤掉。由 ssget 函数返回的选择集中仅包含主图元(不包含属性和多段线顶点)。
参数
sel-method
字符串,指定对象选择方法。有效选择方法包括:
C 窗交。
CP 圈交(指定多段线内和与该多段线相交的所有对象)。
F 栏选。
I 隐含窗口选择(在执行 PICKFIRST 期间选择的对象)。
L 添加到数据库的最后一个可见对象。
P 最后一个创建的选择集。
W 窗口选择。
WP 圈围(指定多边形内的所有对象)。
X 整个数据库。如果指定了 X 选择方法,而又没有提供 filter-list 参数,则 ssget 选择数据库中的所有图元,包括关闭、冻结图层中的图元和可见屏幕外的图元。
:E 光标的对象选择拾取框中的所有对象。
:N 在执行 ssget 操作的过程中,为选定图元调用 ssnamex 获得容器块和转换矩阵的附加信息。只有通过窗口、窗交点拾取等图形选择方法选定的图元,这一附加信息才可以使用。
与其他对象选择方法不同,:N 可能会返回选择集中的多个同名图元。例如,如果用户选择了一个复杂图元(如 BlockReference、PolygonMesh 或老式多段线)的子图元,那么 ssget 将查看该子图元是否已被选中。不过,ssget 实际上会将主图元(如 BlockReference 和 PolygonMesh)添加到选择集中。这样就会在选择集中出现多个同名图元,而 ssnamex 获得的每个图元的子图元信息各不相同。
:S 仅允许单一选择集。
pt1
与选择相关的点。
pt2
与选择相关的点。
pt-list
点表。
filter-list
关联表,指定对象的特性。与 filter-list 相匹配的对象将被添加到选择集。
如果省略所有参数,则 ssget 函数给出“选择对象”提示,允许用户交互式地构造选择集。
如果仅提供了一个点,而没有提供对象选择方法,AutoCAD 假定用户拾取单个点来选择对象。
返回值
如果成功则返回创建选择集的名称。如果没有选定对象则返回 nil。
-------------------------------------
自己慢慢看吧 Sylvanas 发表于 2016-8-26 09:08 static/image/common/back.gif
给你附一段手册内容
-------------------------------------
能不能把你的这个手册发一个给我,我这里的跟你的不一样,谢谢!
(setq pt1(getpoint))
(setq pt3(getcorner pt1))
ssget "w" pt1 pt3
ssget "c" pt1 pt3
题主的意思是:仅仅一次,而这一次是选择多个实体 (if(setq ss(ssget":s"))(函数ss)) 本帖最后由 llsheng_73 于 2023-11-8 22:55 编辑
如果已有图元被事先选中,则从中过滤,否则进行一次手动选择;根据需要修改最后的过滤表
(setq s(apply(function ssget)(vl-remove nil(list(if(cadr(ssgetfirst))nil":S")'((0 . "lwpolyline"))))))
页:
[1]