明经通道 AutoLISP 函数  
ssget
 

根据选定对象创建选择集

(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 开发人员手册》中的 处理选择集选择集过滤器表

明经通道 版权所有 未经许可 不得传播

 评论