在图上有一个圆和一条直线,我想把圆心半径和直线两端点都提取出来,我做了这么一个程序,可运行不成,Private Sub Command3_Click()Set objacad = GetObject(, "autocad.application")
objacad.WindowState = acMax
Dim sset As AcadSelectionSet '定义选择集对象
Dim element As AcadEntity '定义选择集中的元素对象
Set sset = objacad.ActiveDocument.SelectionSets.Add("ss1") '新建一个选择集 sset.SelectOnScreen '提示用户选择
objacad.Visible = True
For Each element In sset '在选择集中进行循环
element.Color = acGreen '改为绿色
NextDim objcircle As AcadCircle
Dim objline As AcadLine
For Each element In sset
If element Is objcircle Then
Text1(0) = objcircle.Center(0)
Text1(1) = objcircle.Center(1)
Text1(2) = objcircle.Center(2)
Text1(3) = objcircle.Radius
ElseIf element Is objline Then
Text2(0) = objline.StartPoint(0)
Text2(1) = objline.StartPoint(1)
Text2(2) = objline.EndPoint(0)
Text2(3) = objline.EndPoint(1)
End If
Next
sset.Delete '删除选择集
Me.Show
End Sub
但如果单独提取圆或直线都可实现,如下
Private Sub Command3_Click()
Set objacad = GetObject(, "autocad.application")
objacad.WindowState = acMax
Dim sset As AcadSelectionSet '定义选择集对象
Dim element As AcadEntity '定义选择集中的元素对象
Set sset = objacad.ActiveDocument.SelectionSets.Add("ss1") '新建一个选择集 sset.SelectOnScreen '提示用户选择
objacad.Visible = True
For Each element In sset '在选择集中进行循环
element.Color = acGreen '改为绿色
NextDim objcircle As AcadCircle
Dim objline As AcadLine
For Each objcircle In sset
'If element Is objcircle Then
Text1(0) = objcircle.Center(0)
Text1(1) = objcircle.Center(1)
Text1(2) = objcircle.Center(2)
Text1(3) = objcircle.Radius
'ElseIf element Is objline Then
'Text2(0) = objline.StartPoint(0)
'Text2(1) = objline.StartPoint(1)
'Text2(2) = objline.EndPoint(0)
'Text2(3) = objline.EndPoint(1)
'End If
Next
sset.Delete '删除选择集
Me.Show
End Sub
我怎么才能同时选择它们呢

解决方案 »

  1.   


    Option Explicit
    Dim objacad As AutoCAD.AcadApplicationPrivate Sub Command3_Click()Set objacad = GetObject(, "autocad.application")objacad.WindowState = acMax
    Dim sset As AcadSelectionSet '定义选择集对象
    Dim element As AcadEntity '定义选择集中的元素对象Set sset = objacad.ActiveDocument.SelectionSets.Add("ss1") '新建一个选择集
    objacad.Visible = Truesset.SelectOnScreen '提示用户选择
    objacad.Visible = True
    For Each element In sset '在选择集中进行循环
    element.Color = acGreen '改为绿色
    NextDim objcircle As AcadCircle
    Dim objline As AcadLine
    For Each element In ssetSelect Case element.ObjectName
       Case "AcDbLine"
          Set objline = element
          Text2(0) = objline.StartPoint(0)
          Text2(1) = objline.StartPoint(1)
          Text2(2) = objline.EndPoint(0)
          Text2(3) = objline.EndPoint(1)
       Case "AcDbCircle"
         Set objcircle = element
         Text1(0) = objcircle.Center(0)
         Text1(1) = objcircle.Center(1)
         Text1(2) = objcircle.Center(2)
         Text1(3) = objcircle.Radius
      Case Else
         
    End SelectNext
    sset.Delete '删除选择集
    Me.Show
    End Sub
      

  2.   

    感谢fvflove,高人,成功了