增加过滤器列表条件的复杂程度

AutoCAD ActiveX/VBA

 
增加过滤器列表条件的复杂程度
 
 
 

如果指定多个选择条件,AutoCAD 将假设选定对象必须符合所有条件。但用户可以按照其他方式来指定条件。对于数字项,用户可以指定关系运算(例如,圆的半径必须大于或等于 5.0);对于所有项,用户可以指定逻辑运算(例如 Text Mtext)。

使用 -4 DXF 组码来指示过滤器规格中的关系运算符。以字符串的形式来指定运算符。下表显示了可以使用的关系运算符:

选择集过滤器列表的关系运算符

运算符

说明

"*"

任何情况(总为真)

"="

相等

"!="

不等于

"/="

不等于

"<>"

不等于

"<"

小于

"<="

小于或等于

">"

大于

">="

大于或等于

"&"

按位 AND(仅限于整数组)

"&="

按位屏蔽相等(仅限于整数组)

过滤器列表中的逻辑运算符也由 -4 组代码表示,运算符为字符串,但必须组对。运算符以小于号开始 (<),以大于号结束 (>)。下表列出了可以在选择集过滤中使用的逻辑运算符。

选择集过滤器列表的逻辑编组运算符

开始

运算符

包含的内容

结束

运算符

"<AND"

一个或多个运算对象

"AND>"

"<OR"

一个或多个运算对象

"OR>"

"<XOR"

两个运算对象

"XOR>"

"<NOT"

一个运算对象

"NOT>"

选择半径大于或等于 5.0 的圆

以下代码指定选择半径大于或等于 5.0 的圆:

Sub Ch4_FilterRelational()
   Dim sstext As AcadSelectionSet
   Dim FilterType(2) As Integer
   Dim FilterData(2) As Variant
   Set sstext = ThisDrawing.SelectionSets.Add("SS5")
      
   FilterType(0) = 0
   FilterData(0) = "Circle"
   FilterType(1) = -4
   FilterData(1) = ">="
   FilterType(2) = 40
   FilterData(2) = 5#
      
   sstext.SelectOnScreen FilterType, FilterData
End Sub

选择 Text 或 Mtext

下例指定选择 Text 或 Mtext 对象:

Sub Ch4_FilterOrTest()
   Dim sstext As AcadSelectionSet
   Dim FilterType(3) As Integer
   Dim FilterData(3) As Variant
   Set sstext = ThisDrawing.SelectionSets.Add("SS6")
   FilterType(0) = -4
   FilterData(0) = "<or"
   FilterType(1) = 0
   FilterData(1) = "TEXT"
   FilterType(2) = 0
   FilterData(2) = "MTEXT"
   FilterType(3) = -4
   FilterData(3) = "or>"
      
   sstext.SelectOnScreen FilterType, FilterData
End Sub