CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

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

2023-1-6 11:45| 发布者: admin| 查看: 679| 评论: 0|来自: AutoCAD

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

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

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

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

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

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

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

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

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

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

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


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 13:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部