WWWDONG 发表于 2003-11-9 20:50:00

如何判断两直线相交

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
有无其它方法判断?

efan2000 发表于 2003-11-9 21:36:00

vbDouble 5 双精度浮点数
vbArray 8192 数组

8197代表双精度浮点数的数组。

如果VarType(intpoint) = vbEmpty,那么没有交点。否则,如果UBound(intPoints) = -1,没有交点,其它的,(UBound(intPoints) + 1) / 3为交点个数。

mccad 发表于 2003-11-9 21:41:00

是啊,本身经过intpoint = line1.IntersectWith(line2, acExtendNone)后,intpoint也就变成了数组了,而数组是否没有数据你要另外判断,也就是判断数组的上标了。用Ubound(intpoint)来判断。

gzy 发表于 2003-11-9 21:55:00

如果光是判断直线先看它们是否平行。也就是是看它们相对X轴的夹角是否相等。
线段就稍微麻烦一点
呵呵,这是我的方法,仅供参考

subtlation 发表于 2003-11-10 08:50:00

只判断平行并不能确定是否有交点。楼主用的是acExtendNone,延伸出直线的交点不算的。
页: [1]
查看完整版本: 如何判断两直线相交