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

请教高手,关于求交点

<p>我的代码如下,(附图如附件):</p><p>Public Sub FindIntersect()<br/>Dim e11 As AcadEntity<br/>Dim e22 As AcadEntity<br/>Dim intPoints As Variant</p><p>Set e11 = ThisDrawing.ModelSpace(0)<br/>Set e22 = ThisDrawing.ModelSpace(1)<br/>intPoints = e11.IntersectWith(e22, acExtendNone)</p><p><br/>Dim i As Integer<br/>Dim j As Integer<br/>Dim k As Integer<br/>Dim str As String</p><p>If VarType(intPoints) &lt;&gt; vbEmpty Then<br/>&nbsp;&nbsp; For i = LBound(intPoints) To UBound(intPoints)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = "Intersection Point[" &amp; k &amp; "] is: " &amp; intPoints(j) &amp; "," &amp; intPoints(j + 1) &amp; "," &amp; intPoints(j + 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox str, , "IntersectWith Example"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = ""<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = i + 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j = j + 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k = k + 1<br/>&nbsp;&nbsp; Next<br/>End If<br/>End Sub<br/></p><p>附图中的两个图元明明是有交点的啊,为什么显示不出交点的坐标呢?</p>

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

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

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

本帖最后由 作者 于 2008-3-21 11:25:38 编辑 <br /><br /> <p>双击那红色二维多段线,看属性里的标高</p><p>双击那白色直线,看属性里的Z,Z代表三维空间上的高度</p><p>二则高度不一致,看上去是相交,其实是没有相交</p><p>用IntersectWith命令时要注意实体都在一个高度上</p><p>建议用IntersectWith命令前把所有实体高度设置为0</p>

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

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

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

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

本帖最后由 作者 于 2008-3-21 18:13:09 编辑 <br /><br /> <p>怎么样来判断两个图元是否有交点</p><p>UBound(intPoints)》0</p>

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

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