明经通道 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 开发人员手册》中的 处理选择集 和 选择集过滤器表。

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

 评论