CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于选择对象和选择集(AutoLISP)

2023-1-8 11:13| 发布者: admin| 查看: 750| 评论: 0|来自: AutoCAD

摘要: 选择集是一个或多个选定对象(实体)的组。

选择集是一个或多个选定对象(实体)的组。

您可以以交互方式在选择集中向对象添加对象、从中选择移除对象或列出对象。下面的示例代码使用 thefunction 返回包含图形中所有对象的选择集。ssget

(ssget "X")
<Selection set: 1>

AutoLISP 提供了许多用于处理选择集的函数。下面列出了一些可用于处理选择集的函数:

  • ssget- 提示用户选择对象(实体),并返回选择集。
  • ssadd- 将对象(实体)添加到选择集,或创建新的选择集。
  • ssdel- 从选择集中移除对象(实体)。
  • ssname- 返回选择集的索引元素的对象(实体)名称。
  • sslength- 返回一个整数,其中包含选择集中的对象(实体)数。

该函数提供了创建选择集的最通用方法。它可以通过以下方式之一创建选择集:ssget

  • 使用“上一个”、“上一个”、“窗口”、“隐含”、“窗口多边形”、“交叉”、“交叉多边形”或“围栏”选项显式指定要选择的对象
  • 指定单个点
  • 选择数据库中的所有对象
  • 提示用户选择对象

使用任何选项,都可以使用筛选来指定所选对象必须匹配的属性和条件列表。

注意:选择集和图元名称在图形处理之间不相同。

第一个参数 to 是一个字符串,用于描述要使用的选择选项。接下来的两个参数 pt1pt2 指定相关选项的点值(如果它们不适用,则应省略它们)。必须提供点列表 pt-list 作为允许按面(即围栏、交叉面和窗口面)进行选择的方法的参数。最后一个参数,过滤器列表,是可选的。如果提供了筛选器列表,则指定筛选中使用的实体字段值的列表。例如,您可以获取一个选择集,其中包含给定类型、给定图层上或给定颜色的所有对象。ssget

下表显示了调用以下示例:ssget

SSGET 示例

函数调用

影响

(setq  pt1 '(0.0 0.0 0.0)
       pt2 '(5.0 5.0 0.0)
       pt3 '(4.0 1.0 0.0)
       pt4 '(2.0 6.0 0.0)
)

将 pt1、pt2、pt3 和 pt4 设置为点值

(setq ss1 (ssget))

提示用户选择常规对象,并将这些项目放在选择集中

(setq ss1 (ssget "P"))

从最近创建的选择集创建选择集

(setq ss1 (ssget "L"))

创建添加到数据库的最后一个对象的选择集,该选择集在屏幕上可见

(setq ss1 (ssget pt2))

创建通过点 (5,5) 的对象选择集

(setq ss1 (ssget "W" pt1 pt2))

创建窗口内从 (0,0) 到 (5,5) 对象的选择集

(setq ss1 (ssget "F" (list pt2 pt3 pt4)))

创建越过围栏并由点 (5,5)、(4,1) 和 (2,6) 定义的对象的选择集

(setq ss1 (ssget "WP" (list pt1 pt2 pt3)))

在由点 (0,0)、(5,5) 和 (4,1) 定义的多边形内创建对象的选择集

(setq ss1 (ssget "X"))

创建数据库中所有对象的选择集

当应用程序使用完选择集后,将其从内存中释放非常重要。这可以通过将它设置为:nil

(setq ss1 nil)
记得:您还可以通过将变量中存储的值定义为函数中的局部变量来释放存储在变量中的值所使用的内存。

不建议尝试同时管理大量选择集。AutoLISP 应用程序一次打开的选择集不能超过 128 个。(系统上的限制可能较低。达到限制时,AutoCAD 将不会创建更多选择集。一次保持打开的最小集数,并尽快将不需要的选择集设置为打开。如果达到最大选择集数,则必须调用函数以释放未使用的内存,然后另一个函数才能正常工作。nilgcssget


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 14:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部