明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1362|回复: 5

请教高手,关于求交点

[复制链接]
发表于 2008-3-21 10:45:00 | 显示全部楼层 |阅读模式

我的代码如下,(附图如附件):

Public Sub FindIntersect()
Dim e11 As AcadEntity
Dim e22 As AcadEntity
Dim intPoints As Variant

Set e11 = ThisDrawing.ModelSpace(0)
Set e22 = ThisDrawing.ModelSpace(1)
intPoints = e11.IntersectWith(e22, acExtendNone)


Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim str As String

If VarType(intPoints) <> vbEmpty Then
   For i = LBound(intPoints) To UBound(intPoints)
      str = "Intersection Point[" & k & "] is: " & intPoints(j) & "," & intPoints(j + 1) & "," & intPoints(j + 2)
      MsgBox str, , "IntersectWith Example"
      str = ""
      i = i + 2
      j = j + 3
      k = k + 1
   Next
End If
End Sub

附图中的两个图元明明是有交点的啊,为什么显示不出交点的坐标呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2008-3-21 10:57:00 | 显示全部楼层

为什么明明有交点,LBound(intPoints)与 UBound(intPoints)的值还分别为0和-1

初学的同志们请注意了,特别当你第一次使用intersectWith()时,说是用VarType(intPoints) <> vbEmpty 其实不能判断交点是否存在,这是autocad帮助文件中的一个小错误。

我想知道的是,既然这样,我们应该怎么样来判断两个图元是否有交点?

发表于 2008-3-21 11:25:00 | 显示全部楼层
本帖最后由 作者 于 2008-3-21 11:25:38 编辑

双击那红色二维多段线,看属性里的标高

双击那白色直线,看属性里的Z,Z代表三维空间上的高度

二则高度不一致,看上去是相交,其实是没有相交

用IntersectWith命令时要注意实体都在一个高度上

建议用IntersectWith命令前把所有实体高度设置为0

发表于 2008-3-21 16:43:00 | 显示全部楼层
cctv2cctv发表于2008-3-21 11:25:00双击那红色二维多段线,看属性里的标高双击那白色直线,看属性里的Z,Z代表三维空间上的高度二则高度不一致,看上去是相交,其实是没有相交用IntersectWith命令时要注意实体都在一个高度上建议用

建议用IntersectWith命令前把所有实体高度设置为0

发表于 2008-3-21 18:12:00 | 显示全部楼层
本帖最后由 作者 于 2008-3-21 18:13:09 编辑

怎么样来判断两个图元是否有交点

UBound(intPoints)》0

发表于 2008-3-21 18:55:00 | 显示全部楼层

我也在考虑这个问题,怎么判段两个面域是否有交集呢,用intersectwith图形就变了,能不能在对图形步操作的情况下判断是否有交集呢

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 11:38 , Processed in 0.163363 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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