CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

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

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

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

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

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

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

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

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

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

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

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

注意:选择集和图元名称在图形会话之间不会保持不变。

的第一个参数是一个字符串,用于描述要使用的选择选项。接下来的两个参数 pt1pt2 指定相关选项的点值(如果它们不适用,则应将其省略)。必须提供点列表 pt-list 作为允许按面(即“栅栏”、“交叉面”和“窗口多边形”)选择方法的参数。最后一个参数 filter-list 是可选的。如果提供了 filter-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   苏公网安备32011402011833)

GMT+8, 2024-12-15 14:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部