如何判断两直线相交
Public Sub test1()Dim line1 As AcadLine
Dim line2 As AcadLine
Dim pt As Variant
Dim intpoint As Variant
ThisDrawing.Utility.GetEntity line1, pt, "1"
ThisDrawing.Utility.GetEntity line2, pt, "1"
intpoint = line1.IntersectWith(line2, acExtendNone)
Debug.Print VarType(intpoint)
End Sub
无论直线是否相交,VarType(intpoint)的值均为8197
有无其它方法判断? vbDouble 5 双精度浮点数
vbArray 8192 数组
8197代表双精度浮点数的数组。
如果VarType(intpoint) = vbEmpty,那么没有交点。否则,如果UBound(intPoints) = -1,没有交点,其它的,(UBound(intPoints) + 1) / 3为交点个数。 是啊,本身经过intpoint = line1.IntersectWith(line2, acExtendNone)后,intpoint也就变成了数组了,而数组是否没有数据你要另外判断,也就是判断数组的上标了。用Ubound(intpoint)来判断。 如果光是判断直线先看它们是否平行。也就是是看它们相对X轴的夹角是否相等。
线段就稍微麻烦一点
呵呵,这是我的方法,仅供参考 只判断平行并不能确定是否有交点。楼主用的是acExtendNone,延伸出直线的交点不算的。
页:
[1]