为什么多边形边的延长线上的点与多边形用IntersectWith求交点时候返回值也不为空
<P>写了一个判断点是否在多边形的某条边上的程序,<BR>以白色部分作为边界的时候,当取某条边延长线(红色部分)上的点时,</P><P>请问什么结果不正确?</P>
<P>Private Sub TestOnBoundary()<BR> Dim TestPoint As Variant<BR> Dim Util As AcadUtility<BR> Dim Entity As AcadEntity<BR> Dim PickPt As Variant<BR> <BR> Set Util = ThisDrawing.Utility<BR> On Error GoTo Done<BR> Util.GetEntity Entity, PickPt, "Select region: "<BR> Do While (True)<BR> TestPoint = Util.GetPoint(, vbCrLf & "Test point: ")<BR> If IsPointOnBoundary(TestPoint, Entity) Then<BR> Util.Prompt (vbCrLf & "Point is on the boundary")<BR> Else<BR> Util.Prompt (vbCrLf & "Point is not on the boundary")<BR> End If<BR> Loop<BR>Done:<BR>End Sub</P>
<P>Private Function IsPointOnBoundary( _<BR> ByVal varPnt As Variant, _<BR> ByVal objBoundary As AcadEntity) As Boolean<BR> Dim objDoc As AcadDocument<BR> Dim objBlock As AcadBlock<BR> Dim objPnt As AcadPoint<BR> Dim varPnts As Variant<BR> <BR> Set objDoc = objBoundary.Document<BR> Set objBlock = objDoc.ObjectIdToObject(objBoundary.OwnerID)<BR> <BR> Set objPnt = objBlock.AddPoint(varPnt)<BR> varPnts = objPnt.IntersectWith(objBoundary, acExtendNone)<BR> IsPointOnBoundary = UBound(varPnts) > 0<BR> objPnt.Delete<BR> <BR>End Function</P> <P>点和实体怎么会有交点?</P>
<P>过该点做一条直线,如果直线和边界的交点在该点,则点在边界上</P> <P>点在边界上的时候当然就有交点了,如果没记错的话做射线那种方法测的是否在边界内部</P> <P>仔细看一下我的方法!和以前的射线法不一样的</P> 明白了:)
页:
[1]