请问:在下面的程序中,gpCode(0)=0,gpCode(1) =8,gpCode(0) =-4 表示?
请问:在下面的程序中,gpCode(0)=0,gpCode(1) =8,gpCode(0) =-4 分别表示什么意思?
Sub AddToASelectionSet()
' 创建新的选择集
Dim sset As AcadSelectionSet
Set sset = ThisDrawing.SelectionSets.Add("SS1")
Dim FilterType As Variant, FilterData As Variant
Dim gpCode(1) As Integer, dataValue(1) As Variant
'创建过滤器
'本例为过滤图层为“7”的直线
'使用的是变体数组进行定义
'直线过滤器
gpCode(0) = 0
dataValue(0) = "LINE"
'图层过滤器
gpCode(1) = 8
dataValue(1) = "7"
FilterType = gpCode
FilterData = dataValue
' 添加至选择集中,在选择过程中进行过滤
' 完成选择后按回车。
sset.SelectOnScreen FilterType, FilterData
' 在选择集中循环并将每一已合条件的对象颜色更改为蓝色。
Dim entry As AcadEntity
For Each entry In sset
entry.Color = acBlue
entry.Update
Next entry
End Sub
用户也可以创建使用下表中的逻辑分组运算符的布尔表达式,以进行多条件的过滤,这些布尔运算符可以进行嵌套:
起始运算符 包含的内容 结束运算符
"<AND" 一个或多个操作数 "AND>"
"<OR" 一个或多个操作数 "OR>"
"<XOR" 两个操作数 "XOR>"
"<NOT" 一个操作数 "NOT>"
分组运算符由 -4 组指定。它们是成对出现的,必须在过滤器表中适当均衡。
以下是使用布尔运算符的多条件过滤的例子,它过滤直线或圆弧:
Sub AddToASSet2()
' 创建新的选择集
Dim sset As AcadSelectionSet
Set sset = ThisDrawing.SelectionSets.Add("SS1")
Dim FilterType As Variant, FilterData As Variant
Dim gpCode(3) As Integer, dataValue(3) As Variant
'创建过滤器
'本例为过滤直线或圆弧
'使用的是变体数组进行定义
'分组运算符
gpCode(0) = -4
dataValue(0) = "<or"
'直线过滤器
gpCode(1) = 0
dataValue(1) = "LINE"
'圆弧过滤器
gpCode(2) = 0
dataValue(2) = "ARE"
'分组运算符
gpCode(3) = -4
dataValue(3) = "or>"
FilterType = gpCode
FilterData = dataValue
' 添加至选择集中,在选择过程中进行过滤
' 完成选择后按回车。
sset.SelectOnScreen FilterType, FilterData
' 在选择集中循环并将每一已合条件的对象颜色更改为蓝色。
Dim entry As AcadEntity
For Each entry In sset
entry.Color = acBlue
entry.Update
Next entry
End Sub
建立过滤器,如果你用过ALISP编过程序应该可以了解的
页:
[1]