keyzero 发表于 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
附图中的两个图元明明是有交点的啊,为什么显示不出交点的坐标呢?
**** Hidden Message *****

keyzero 发表于 2008-3-21 10:57:00

为什么明明有交点,LBound(intPoints)与 UBound(intPoints)的值还分别为0和-1
初学的同志们请注意了,特别当你第一次使用intersectWith()时,说是用VarType(intPoints)vbEmpty 其实不能判断交点是否存在,这是autocad帮助文件中的一个小错误。
我想知道的是,既然这样,我们应该怎么样来判断两个图元是否有交点?

cctv2cctv 发表于 2008-3-21 11:25:00


双击那红色二维多段线,看属性里的标高
双击那白色直线,看属性里的Z,Z代表三维空间上的高度
二则高度不一致,看上去是相交,其实是没有相交
用IntersectWith命令时要注意实体都在一个高度上
建议用IntersectWith命令前把所有实体高度设置为0

fjfhgdwfn 发表于 2008-3-21 16:43:00


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

雪山飞狐_lzh 发表于 2008-3-21 18:12:00


怎么样来判断两个图元是否有交点
UBound(intPoints)》0

tuzianjing 发表于 2008-3-21 18:55:00

我也在考虑这个问题,怎么判段两个面域是否有交集呢,用intersectwith图形就变了,能不能在对图形步操作的情况下判断是否有交集呢
页: [1]
查看完整版本: 请教高手,关于求交点