明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3409|回复: 4

如何判断两直线相交

[复制链接]
发表于 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
有无其它方法判断?
发表于 2003-11-9 21:36:00 | 显示全部楼层
vbDouble 5 双精度浮点数
vbArray 8192 数组

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

如果VarType(intpoint) = vbEmpty,那么没有交点。否则,如果UBound(intPoints) = -1,没有交点,其它的,(UBound(intPoints) + 1) / 3为交点个数。
发表于 2003-11-9 21:41:00 | 显示全部楼层
是啊,本身经过intpoint = line1.IntersectWith(line2, acExtendNone)后,intpoint也就变成了数组了,而数组是否没有数据你要另外判断,也就是判断数组的上标了。用Ubound(intpoint)来判断。
发表于 2003-11-9 21:55:00 | 显示全部楼层
如果光是判断直线先看它们是否平行。也就是是看它们相对X轴的夹角是否相等。
  线段就稍微麻烦一点
呵呵,这是我的方法,仅供参考
发表于 2003-11-10 08:50:00 | 显示全部楼层
只判断平行并不能确定是否有交点。楼主用的是acExtendNone,延伸出直线的交点不算的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 13:32 , Processed in 0.161722 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表