只能通过一条线,查找在它某一范围之内的其它线,判断它们之间有没有交点。
- Sub test()
-
- ' 判断图纸中的实体数目,不存在时中断
- If ThisDrawing.ModelSpace.Count = 0 Then Exit Sub
- Dim EntObj1 As AcadEntity
- Dim EntObj2 As AcadEntity
- Dim v As Variant
- ' 遍历模型空间
- For Each EntObj1 In ThisDrawing.ModelSpace
- ' 判断实体的类型,线应该包含直线、圆弧、圆、多段线等等,要一一判断
- If TypeOf EntObj1 Is AcadLine Or TypeOf EntObj1 Is AcadLWPolyline Then
- For Each EntObj2 In ThisDrawing.ModelSpace
- If TypeOf EntObj1 Is AcadLine Or TypeOf EntObj1 Is AcadLWPolyline Then
- ' 判断相交情况
- v = EntObj1.IntersectWith(EntObj2, acExtendNone)
- If Not IsEmpty(v) Then
- ' 一个交点
- If UBound(v) = 3 Then
- ' 两个交点
- ElseIf UBound(v) = 6 Then
- ' 其它情况
- Else
- End If
- End If
- End If
- Next
- End If
- Next
- End Sub
这仅是一个示例,具体的要根据自己的情况来处理。 |