夏天海滩上 发表于 2013-1-31 16:49:00

CAD VBA程序问题请教,请高手指导下。 (程序不知道在哪儿存在问题,选择集内是空的)

Sub www()
    '创建在实例中使用的对象
    Dim pt1(0 To 2) As Double
    Dim pt2(0 To 2) As Double   
   
    pt1(0) = -5: pt1(1) = -5: pt1(2) = 0
    pt2(0) = 30000: pt2(1) = 1005: pt2(2) = 0
On Error Resume Next
    Dim SSet As AcadSelectionSet
    If Not IsNull(ThisDrawing.SelectionSets.Item("Example")) Then
      Set SSet = ThisDrawing.SelectionSets.Item("Example")
      SSet.Delete   '及时删除不用的选择集非常重要
    End If
    Set SSet = ThisDrawing.SelectionSets.Add("Example")
'(2)向选择集中添加对象
   '设置选择过滤器
Dim FilterType(0 to 4) As Integer, FilterData(0 to 4) As Variant
FilterType(0) = -4
FilterData(0) = "<or"   '逻辑运算符的开始,表示一个或多个运算对象
'先选择OUTSIDE-4图层上的对象到选择集
FilterType(1) = 8
FilterData(1) = "OUTSIDE-4"
'再选择SP_OUTSIDE-4图层上的对象到选择集
FilterType(2) = 8
FilterData(2) = "SP_OUTSIDE-4"
'最后选择Stock图层上的对象到选择集
FilterType(3) = 8
FilterData(3) = "Stock"
FilterType(4) = -4
FilterData(4) = "or>"   '逻辑运算符的结束
'使用Crossing的选择模式
    SSet.Select acSelectionSetCrossing, pt1, pt2, FilterType, FilterData
MsgBox "选中对象上" & sset.Count & "个对象"
'(4)删除选择集
   
    'SSet.Erase   '删除选择集中所有对象,保留选择集对象
    'SSet.Delete    '删除选择集,保留其中对象
    '删除选择集和其中所有对象
    For Each element In SSet
      element.Delete
    Next
    SSet.Delete
End Sub   

mccad 发表于 2013-2-2 21:01:37

如果只是要选择不同的图层,可能用“OUTSIDE-4,SP_OUTSIDE-4,Stock”来表示图层名,就能够起到“OR”的作用。
页: [1]
查看完整版本: CAD VBA程序问题请教,请高手指导下。 (程序不知道在哪儿存在问题,选择集内是空的)