明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1150|回复: 9

[提问] 请问AutoLISP能不能选择多个对象后马上执行操作,而不必右键确认。

  [复制链接]
发表于 2016-8-25 21:00:00 | 显示全部楼层 |阅读模式
AutoCAD的“延伸”命令,可以只选择一个对象,也可以一次选择多个对象,选中后都能马上执行延伸操作。
而LISP的ssget函数选择对象后必须右键或回车确认,才能执行操作,entsel函数一次只能选一个对象。
请问在AutoLISP中有没有可以一次选择多个对象,然后不用右键或回车确认,就能马上执行操作的方法?

论坛搜索不能用了,不知道这个有没有人讨论过,了解的提点一下,谢谢!
发表于 2016-8-26 16:00:14 | 显示全部楼层
Cad船长 发表于 2016-8-26 14:38
能不能把你的这个手册发一个给我,我这里的跟你的不一样,谢谢!

明经网站上就有,自己搜索一下吧,我也是搜的
回复 支持 1 反对 0

使用道具 举报

发表于 2016-8-25 21:16:32 | 显示全部楼层
ssget S: 看这个参数的说明
 楼主| 发表于 2016-8-25 22:41:36 | 显示全部楼层
VBALISPER 发表于 2016-8-25 21:16
ssget S: 看这个参数的说明

我翻了 vlisp参考手册里只有 X P L I 等几个参数,没找S的,是我这个手册版本不对?
发表于 2016-8-26 09:08:13 | 显示全部楼层
本帖最后由 Sylvanas 于 2016-8-26 09:10 编辑
Cad船长 发表于 2016-8-25 22:41
我翻了 vlisp参考手册里只有 X P L I 等几个参数,没找S的,是我这个手册版本不对?

给你附一段手册内容

-------------------------------------

根据选定对象创建选择集

(ssget [sel-method] [pt1 [pt2]] [pt-list] [filter-list])
选择集中可以包含图纸空间和模型空间两个空间中的对象,但该选择集用于某操作时,那些在当前无效的空间中的对象会被 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。

-------------------------------------

自己慢慢看吧
 楼主| 发表于 2016-8-26 14:38:00 | 显示全部楼层
Sylvanas 发表于 2016-8-26 09:08
给你附一段手册内容

-------------------------------------

能不能把你的这个手册发一个给我,我这里的跟你的不一样,谢谢!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2016-8-26 14:55:39 | 显示全部楼层
(setq pt1(getpoint))
(setq pt3(getcorner pt1))
ssget "w" pt1 pt3
ssget "c" pt1 pt3
发表于 2023-11-8 15:45:47 | 显示全部楼层
题主的意思是:仅仅一次,而这一次是选择多个实体
发表于 2023-11-8 17:14:23 来自手机 | 显示全部楼层
(if(setq ss(ssget  ":s"))(函数  ss))
发表于 2023-11-8 22:52:34 | 显示全部楼层
本帖最后由 llsheng_73 于 2023-11-8 22:55 编辑


如果已有图元被事先选中,则从中过滤,否则进行一次手动选择;根据需要修改最后的过滤表
  1. (setq s(apply(function ssget)(vl-remove nil(list(if(cadr(ssgetfirst))nil":S")'((0 . "lwpolyline"))))))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-27 19:24 , Processed in 0.163101 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表