根据选定对象创建选择集
(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。
对象选择方法说明
示例
提示用户选择要加入选择集的对象:
命令: (ssget)
<Selection set: 2>
创建通过点 (2,2) 的对象的选择集:
命令: (ssget '(2 2))
nil
创建一个选择集,该选择集由最近所选择的对象组成:
命令: (ssget "_P")
<Selection set: 4>
创建一个选择集,该选择集由交叉窗选而成,交叉窗口的对角顶点是 (0,0) 和 (1,1):
命令: (ssget "_C" '(0 0) '(1 1))
<Selection set: b>
创建一个选择集,该选择集由从 (0,0) 到 (5,5) 的窗口中包含的所有对象组成:
命令: (ssget "_W" '(0 0) '(5 5))
<Selection set: d>
通过指定过滤器,可以获得由指定类型、图层或颜色的所有对象构成的选择集。下例返回的选择集仅包含隐含选择集中的蓝色直线(这些对象是在 PICKFIRST 有效时选取的):
命令: (ssget "_I" '((0 . "LINE") (62 . 5)))
<Selection set: 4>
下例中需要将点表传递给 ssget 函数。pt_list 变量不能包含定义零长度线段的点。
创建点表:
命令: (setq pt_list '((1 1)(3 1)(5 2)(2 4)))
((1 1) (3 1) (5 2) (2 4))
创建一个选择集,该选择集由 pt_list 所定义的多边形包含或与之相交的所有图元组成:
命令: (ssget "_CP" pt_list)
<Selection set: 13>
创建一个选择集,该选择集由 pt_list 所定义的多边形包含的所有蓝色线段组成:
命令: (ssget "_WP" pt_list '((0 . "LINE") (62 . 5)))
<Selection set: 8>
只有在不带参数调用 ssget 函数时,才会亮显被选取的对象。选择集会消耗 AutoCAD 的临时文件存储区,所以 AutoLISP 不允许同时打开多于 128 个选择集。如果选择集的数目达到了这个极限,AutoCAD 会拒绝再创建新的选择集,以后调用 ssget 函数只会返回 nil。可以通过将选择集设为 nil 来关闭不再需要的选择集。
在任何可以用 Last 选择方式来响应 AutoCAD“选择对象”提示的地方,都可以通过向 AutoCAD 传递一个选择集变量来响应。这样将选择该选择集变量中的所有对象。
ssget 函数忽略对象捕捉模式的当前设置,除非在调用本函数时专门指定它。
参阅
《Visual LISP 开发人员手册》中的 处理选择集 和 选择集过滤器表。
明经通道 版权所有 未经许可 不得传播 | 评论 |