CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于选择集过滤器列表(AutoLISP)

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

摘要: 实体筛选器列表是使用与 entget 返回的列表格式相同的 DXF 组代码的关联列表。

实体筛选器列表是使用 DXF 组代码的关联列表,其格式与 返回的列表相同。entget

该函数可识别除实体名称(组代码 -1)、句柄(组代码 5)和 xdata(大于 1000 的组代码)之外的所有组代码。如果在筛选器列表中使用了无效的组代码,则 将忽略该代码。使用组代码 -3 搜索带有 xdata 的对象。当 filter-list 作为 的最后一个参数提供时,该函数将扫描选定对象并创建一个选择集,其中包含与指定条件匹配的所有主要实体的名称。筛选器列表指定要检查实体的哪些属性(或多个属性)以及哪些值构成匹配项。ssgetssgetssget

例如,您可以获取一个选择集,其中包含给定类型、给定图层或给定颜色的所有对象。

以下示例演示了将筛选器列表与各种对象选择选项一起使用的不同方法。

使用筛选器列表的 SSGET 示例

函数调用

影响

(setq ss1

(ssget '((0 . "TEXT")))

)

提示常规对象选择,但仅将文本对象添加到选择集中。

(setq ss1

(ssget "P" '((0 . "LINE")))

)

创建一个选择集,其中包含上次创建的选择集中的所有线对象。

(setq ss1

(ssget "W" pt1 pt2 '((8 . "FLOOR9")))

)

创建窗口内所有对象的选择集,这些对象也位于图层 FLOOR9 上。

(setq ss1

(ssget "X" '((0 . "CIRCLE")))

)

创建数据库中属于 Circle 对象的所有对象的选择集。

(setq ss1

(ssget "I" '((0 . "LINE") (62 . 5)))

)

创建属于隐含选择集的所有蓝色线条对象的选择集(在 AutoCAD PICKFIRST 系统变量生效时选择的对象)。

请注意,此筛选器选取已分配颜色 5(蓝色)的线,但不会选取已由 ByLayer 或 ByBlock 属性应用其颜色的蓝线。

如果组代码和所需值都已知,则可以如前所述引用列表。如果变量指定了任一变量,则必须使用 and 函数构造列表。例如,以下代码创建数据库中位于层 FLOOR3 上的所有对象的选择集:listcons

(setq lay_name "FLOOR3")
(setq ss1
  (ssget "X"
    (list (cons 8 lay_name))
  )
)

如果 filter-list 指定了多个属性,则仅当实体与所有指定条件匹配时,该实体才会包含在选择集中,如以下示例代码所示:

(ssget "X" (list (cons 0 "CIRCLE")(cons 8 lay_name)(cons 62 3)))

此代码仅选择图层 FLOOR3 上颜色为绿色的 Circle 对象。这种类型的测试执行布尔运算。“AND”

该函数通过扫描所选实体并将每个主实体的字段与指定的筛选列表进行比较来筛选选择集。如果实体的属性与筛选列表中的所有指定字段匹配,则该实体将包含在返回的选择集中。否则,该图元将不包括在选择集中。如果所选实体均未与指定的筛选条件匹配,则该函数将返回。ssgetssgetnil

注意:某些组代码的含义可能因实体而异,并且并非所有组代码都存在于所有实体中。如果在筛选器中指定了特定的组代码,则不包含该组代码的实体将从返回的选择集中排除。ssget

筛选选择集时,它检索的选定对象可能包括图纸空间和模型空间中的图元。但是,当选择集传递给 AutoCAD 命令时,仅使用当前生效空间中的图元。(实体所属的空间由其 67 组代码的值指定。ssget


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-12-16 00:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部