CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于选择过滤器测试的逻辑分组(AutoLISP)

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

摘要: 您可以使用嵌套布尔表达式定义测试组,以从使用 ssget 创建的选择集中筛选对象。

您可以使用嵌套布尔表达式定义测试组,以从创建时使用的选择集中筛选对象。ssget

下表列出了可用于筛选选择集的分组运算符:

选择集过滤器列表的分组运算符

启动运算符

包围

结束运算符

“<和”

一个或多个操作数

“和>”

“<或”

一个或多个操作数

“或者>”

“<异或”

两个操作数

“异或>”

“<不是”

一个操作数

“不行>”

分组运算符由 -4 个 dxf 组代码指定,就像关系运算符一样。它们是配对的,必须在过滤器列表中正确平衡,否则调用将失败。ssget

(ssget "X"
  '(
    (-4 . "<OR")
      (-4 . "<AND")
        (0 . "CIRCLE")
        (40 . 1.0)
      (-4 . "AND>")
      (-4 . "<AND")
        (0 . "LINE")
        (8 . "ABC")
      (-4 . "AND>")
    (-4 . "OR>")
  )
)

此过滤器列表允许选择半径为 1.0 的所有圆加上图层“ABC”上的所有线。分组运算符不区分大小写;例如,您可以指定 ,而不是,。-3 dxf 组代码中不允许使用分组运算符。在 -3 dxf 组代码中指定的多个应用程序名称使用隐式运算符。如果要使用其他分组运算符测试扩展数据,请指定单独的 -3 dxf 组代码并根据需要对其进行分组。"and>""<or""AND>""<OR"AND

以下示例代码演示如何为应用程序“APP1”或“APP2”选择具有扩展数据的所有圆圈,但不能同时选择两者:

(ssget "X"
  '((0 . "CIRCLE")
    (-4 . "<XOR")
      (-3 ("APP1"))
      (-3 ("APP2"))
    (-4 . "XOR>")
  )
)

您可以通过将常用分组运算符设置为等于符号来简化其编码。前面的示例可以重写如下(请注意,在此示例中,您必须显式引用每个列表):

(setq <xor '(-4 . "<XOR")
         xor> '(-4 . "XOR>"))

(ssget "X"
  (list
    '(0 . "CIRCLE")
    <xor
    '(-3 ("APP1"))
    '(-3 ("APP2"))
    xor>
  )
)

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 12:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部