看看下面的例子。

- [FONT=courier new]
- Sub Test()
- On Error Resume Next
- ' 选择直线
- Dim EntObj(0 To 0) As AcadEntity
- Dim pPt As Variant
- ThisDrawing.Utility.GetEntity EntObj(0), pPt, "选择直线: "
- If EntObj(0) Is Nothing Then Exit Sub
- ' 求直线的外框
- Dim Pt1 As Variant
- Dim Pt2 As Variant
- EntObj(0).GetBoundingBox Pt1, Pt2
-
- ' 创建选择集
- Dim ssetObj As AcadSelectionSet
- Set ssetObj = ThisDrawing.SelectionSets("SSET")
- If Err Then Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")
- ssetObj.Clear
- ' 选择与该直线相交或者包含在外框中的所有实体
- ssetObj.Select acSelectionSetCrossing, Pt1, Pt2
- If ssetObj.Count = 0 Then Exit Sub
-
- ' 由于其中包含了自身实体,故应从选择集中移走
- ' 由于移去函数的参数是对象集合,所以在上面定义的是单个对象的对象集合
- ssetObj.RemoveItems EntObj
-
- '枚举交点,判断是否相交
- Dim Pts As Variant
- Dim i As Integer
- For i = 0 To ssetObj.Count - 1
- Pts = ssetObj(i).IntersectWith(EntObj(0), acExtendNone)
- If Not IsEmpty(Pts) Then
- Debug.Print "实体" & ssetObj(i).Handle & "与直线" & EntObj(0).Handle & "相交"
- End If
- Next
- End Sub
- [/FONT]
|