ssget (AutoLISP)
从选定对象创建选择集
支持的平台:Windows 和 Mac OS
签名
(ssget [sel-method] [pt1 [pt2]] [pt-list] [filter-list])
-
sel-方法
-
类型:字符串
对象选择方法。
有效的选择方法包括
一个
|
所有对象都处于选中状态。
|
C
|
交叉选择;与指定矩形交叉和内部的所有对象。
|
CP公司
|
交叉多边形选择;所有对象在指定多边形内交叉和内部。
|
F
|
围栏选择。
|
我
|
隐含选择;在 AutoCAD PICKFIRST 系统变量生效时选定的对象。
注意:该函数返回有效的选择集或 。如果在调用函数时选择了对象,则返回有效的选择集。ssgetnil
|
L
|
添加到数据库的最后一个可见对象。
|
P
|
选择上一个选择集。
|
W
|
窗口选择(指定矩形内的所有对象)。
|
可湿性粉剂
|
窗口多边形(指定多边形内的所有对象)。
|
X
|
整个数据库。如果指定选择方法且未提供过滤器列表,则选择数据库中的所有图元,包括关闭、冻结和不在可见屏幕中的图层上的图元。Xssget
|
:D
|
允许选择重复对象。
|
:E
|
光标的对象选择选项框中的所有内容都将被选中并添加到选择集中。
|
:L
|
仅允许选择未锁定的图层。
|
:N
|
有关操作期间选择的任何实体的容器块和转换矩阵的其他信息。此附加信息仅适用于通过图形选择方法(如窗口、交叉和点选择)选择的图元。ssnamexssget
与其他对象选择方法不同,:N 可以在选择集中返回具有相同实体名称的多个实体。例如,如果用户选择复杂实体(如 BlockReference、PolygonMesh 或旧式折线)的子实体,则在确定是否已选择该子实体时,将查看该子实体。但是,实际上将主实体(BlockReference、PolygonMesh 等)添加到选择集中。结果可能是选择集中具有相同实体名称的多个条目(每个条目将具有不同的子实体信息以供报告)。ssgetssgetssnamex
|
_:R
|
允许选择长事务中的实体。
|
:S
|
只允许单个选择,可以选择一个或多个对象。
注意:使用“+.”和“:S”强制选择单个对象。
|
_:U
|
启用子实体选择。
不能与重复 (“:D”) 或嵌套 (“:N”) 选择模式结合使用。在此模式下,默认情况下会选择顶级实体,但用户可以在进行选择时尝试通过按 CTRL 键来选择子实体。此选项仅支持交互式选择,例如窗口、交叉和多边形。它不支持所有选择、筛选选择或组选择。
|
_:V
|
强制选择子实体。
将用户执行的所有交互式图形选择视为子实体选择。返回的选择集仅包含子图元。此选项不能与重复 (“:D”) 或嵌套 (“:N”) 选择模式结合使用。此选项仅支持交互式选择,例如窗口和交叉点。它不支持所有选择、筛选选择或组选择。
|
#
|
控制允许的对象选择模式。
- “+”允许添加关键字“Last”、“All”和“Previous”。
- “-”允许删除关键字“Last”、“All”、“Group”和“Previous”。
- “.”强制用户使用指针设备“拾取”或输入有效的坐标值来选择对象。
这不是一个显式关键字,而是一个隐含的关键字。
结合“+”和“-”,使用以下关键字控制相应的选择模式:
- A - 全部
- B - 盒子和 AUto
- C - 交叉和 CPolygon
- F - 围栏
- G - 组
- L - 楦
- M - 多个
- P - 上一页
- W - 窗口和 WPolygon
;; Allow for a single selection
(ssget "_:S")
Select objects: ?
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Previous/AUto
;; Allow the user to only pick a single object
(ssget "_:S+.")
Select objects: ?
*Invalid selection*
Expects a single object.
;; Allow the user to only pick a single object or
;; use the Last or Previous selection modes
(ssget "_:S+L+P")
Select objects: ?
*Invalid selection*
Valid keywords: Last/Previous
;; Remove the Multiple and All selection modes
(ssget "-M-A")
Select objects: ?
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/Fence/WPolygon/CPolygon/Group/Add/Remove/Previous/Undo/AUto/SIngle
|
-
PT1 (英语:PT1)
-
类型:列表
相对于所选内容的点。
-
第2部分
-
类型:列表
相对于所选内容的点。
-
pt-列表
-
类型:列表
要点列表。
-
筛选器列表
-
类型:列表
指定对象属性的关联列表。与筛选器列表匹配的对象将添加到选择集中。
返回值
类型:Pickset(选择集)或 nil
如果成功,则为创建的选择集的名称;否则,如果未选择任何对象。nil
言论
选择集可以包含图纸空间和模型空间中的对象,但是在操作中使用选择集时,会从当前未生效的空间中过滤掉对象。返回的选择集仅包含主图元(不包含属性或折线顶点)。ssgetssget
如果省略所有参数,则会使用“选择对象”提示提示用户,从而允许以交互方式构造选择集。ssget
如果提供点但未指定对象选择方法,则 AutoCAD 假定用户通过选取单个点来选取对象。
- 使用选择方法时,如果用户选择复杂实体(如 BlockReference、PolygonMesh 或旧式折线)的子实体,则在确定是否已选择该子实体时,将查看该子实体。但是,实际上将主实体(BlockReference、PolygonMesh 等)添加到选择集中。因此,可以在选择集中具有相同实体名称的多个条目(每个条目将具有不同的子实体信息以供报告)。由于该方法不保证每个条目都是唯一的,因此依赖于唯一性的代码不应使用使用此选项创建的选择集。:Nssgetssgetssnamex:N
- 在 MDI 环境中使用选择方法时,不能总是指望最后绘制的对象保持可见。例如,如果应用程序绘制了一条线,而用户随后最小化或级联了 AutoCAD 图形窗口,则该线可能不再可见。如果发生这种情况,则 with the 选项将返回 。Lssget"L"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) 创建窗口内对象的选择集:
(ssget "_W" '(0 0) '(5 5))
<Selection set: d>
通过指定过滤器,可以获得一个选择集,其中包含给定类型、给定图层或给定颜色的所有对象。以下示例返回一个选择集,该选择集仅包含属于隐含选择集一部分的蓝线(在 AutoCAD PICKFIRST 系统变量生效时选定的对象):
(ssget "_I" '((0 . "LINE") (62 . 5)))
<Selection set: 4>
以下示例要求将点列表传递给函数。该变量不能包含定义零长度线段的点。ssgetpt_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>
仅当不带参数使用时,才会突出显示所选对象。选择集会占用 AutoCAD 临时文件槽,因此 AutoLISP 不允许同时打开超过 128 个文件槽。如果达到此限制,AutoCAD 将无法再创建任何选择集并返回所有调用。要关闭不必要的选择集变量,请将其设置为 。ssgetnilssgetnil
可以将选择集变量传递给 AutoCAD,以响应任何“选择对象”提示,在“最后”选择有效时。然后,AutoCAD 将选择选择集变量中的所有对象。
对象捕捉模式的当前设置将被忽略,除非您在功能中明确请求它。ssget
|