明经通道 AutoLISP 函数  
sssetfirst
 

设置哪些对象既是被选取的又是被夹取的

(sssetfirst gripset[pickset]) 

gripset 参数指定的选择集中的对象是被夹取的,而 pickset 参数指定的选择集中的对象是既被夹取的又被选取的。如果两个选择集有公共部分(即某些对象同时属于这两个选择集), sssetfirst 函数将只选择和夹取 pickset 指定的选择集(而不夹取 gripset 选择集)。

在使用该函数时,需要由用户构建有效的选择集。例如,可能需要确认在选择集中不包含背景图纸空间视口(DXF 组码为 69),或者确定选定的对象属于当前布局,如下述代码所示:

(setq ss (ssget (list (cons 410 (getvar "ctab")))))

参数

gripset

要夹取的选择集。如果 gripset 为 nil 且已指定 pickset,则 sssetfirst 夹取并选择 pickset。如果 gripset 为 nil 且未指定 pickset,则 sssetfirst 关闭原来打开的夹点句柄和选择集。

pickset

将被选择的选择集。

返回值

选择集或指定的集。

示例

首先,绘制一个正方形并建立三个选择集。开始实现绘制边 1,并创建一个包含该线的选择集:

命令: (entmake (list (cons 0 "line") '(10 0.0 0.0 0.0)'(11 0.0 10.0 0.0)))

((0 . "line") (10 0.0 0.0 0.0) (11 0.0 10.0 0.0))

命令: (setq gripset (ssget "_l"))

<Selection set: a5>

变量 gripset 指向创建的选择集。

绘制边 2 并将其添加到 gripset 选择集:

命令: (entmake (list (cons 0 "line") '(10 0.0 10.0 0.0)'(11 10.0 10.0 0.0)))

((0 . "line") (10 0.0 10.0 0.0) (11 10.0 10.0 0.0))

命令: (ssadd (entlast) gripset)

<Selection set: a5>

创建另一个选择集,使之仅包含边 2:

命令: (setq 2onlyset (ssget "_l"))

<Selection set: a8>

绘制边 3 并将其添加到 gripset 选择集:

命令: (entmake (list (cons 0 "line") '(10 10.0 10.0 0.0)'(11 10.0 0.0 0.0)))

((0 . "line") (10 10.0 10.0 0.0) (11 10.0 0.0 0.0))

命令: (ssadd (entlast) gripset)

<Selection set: a5>

创建另一个选择集,使之仅包含边 3:

命令: (setq pickset (ssget "_l"))

<Selection set: ab>

变量 pickset 指向新的选择集。

绘制边 4 并将其添加到 gripset 和 pickset 选择集:

命令: (entmake (list (cons 0 "line") '(10 10.0 0.0 0.0)'(11 0.0 0.0 0.0)))

((0 . "line") (10 10.0 0.0 0.0) (11 0.0 0.0 0.0))

命令: (ssadd (entlast) gripset)

<Selection set: a5>

命令: (ssadd (entlast) pickset)

<Selection set: ab>

这时,gripset 包含边 1-4,pickset 包含边 3 和 4,2onlyset 仅包含边 2。

打开 gripset 选择集中所有对象的夹点句柄:

命令: (sssetfirst gripset)

(<Selection set: a5>)

关闭 gripset 中所有对象的夹点句柄:

命令: (sssetfirst nil)

(nil)

打开夹点句柄并选择 pickset 中的所有对象:

命令: (sssetfirst nil pickset)

(nil <Selection set: ab>)

打开 2onlyset 中所有对象的夹点句柄,并选择 pickset 中的所有对象:

命令: (sssetfirst 2onlyset pickset)

(<Selection set: a8> <Selection set: ab>)

每次调用 sssetfirst 都替换了上一次调用 sssetfirst 夹取和选择的选择集。例如,在执行下述命令后,2onlyset 中的夹点打开,而没有选定选择集:

命令: (sssetfirst 2onlyset

(<Selection set: a8>)

注意 不要在 AutoCAD 执行命令的过程中调用 sssetfirst。

参阅

ssgetssgetfirst 函数。

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

 评论