rb 发表于 2002-9-24 22:14:00

请问:在下面的程序中,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

mccad 发表于 2002-9-25 12:10:00

建立过滤器,如果你用过ALISP编过程序应该可以了解的

页: [1]
查看完整版本: 请问:在下面的程序中,gpCode(0)=0,gpCode(1) =8,gpCode(0) =-4 表示?