dyheng 发表于 2005-5-26 21:24:00

如何知道一个点是在多线的内侧还是外侧(偏移多线时用)?

现在想实现这种效果:用户在多线的两侧单击一下,通过判断点在多线的内侧还是外侧以决定该多线的偏移方向。但是点在多线的哪侧我判断不出来,请问哪位大哥有办法,帮忙解决一下,谢谢了!

wyj7485 发表于 2005-5-27 08:40:00

Public Obj As Object<BR>Public Pnt As Variant<BR>Sub test()<BR>Dim a, handle<BR>a = 20


ThisDrawing.Utility.GetEntity Obj, Pnt, vbCrLf &amp; "选择多段线:"<BR>ThisDrawing.Utility.GetPoint Pnt, vbCrLf &amp; "指定点以确定偏移所在一侧:"


handle = Obj.handle<BR>ThisDrawing.SendCommand "offset" &amp; Str(a) &amp; vbCr &amp; "(handent " &amp; Chr(34) &amp; handle &amp; Chr(34) &amp; ")" &amp; vbCr &amp; _<BR>"(list " &amp; Str(Pnt(0)) &amp; Str(Pnt(1)) &amp; Str(Pnt(2)) &amp; ")" &amp; vbCr &amp; vbCr


End Sub

dyheng 发表于 2005-5-27 16:43:00

2楼楼主,你种方法可以实现偏移,但由于a=20这个值永远都是正值,所以无论你选择哪一侧,也就是无论选点A还是点B,这个多线永远都是向一侧偏移(当图示多线为逆时针方向画时永远向B侧偏移)。我求助的目的就是想通过判断点与多线的位置关系来动态设定a的正负值,也就是通过判断A点或B点在多线的内侧或外侧(图示多线为逆时针方向画的)来设定a=-20还是a=20,请问有办法吗?

wyj7485 发表于 2005-5-27 18:02:00

Public Obj As Object<BR>Public Pnt As Variant<BR>Sub test()<BR>Dim a, handle<BR>a = 20



ThisDrawing.Utility.GetEntity Obj, Pnt, vbCrLf &amp; "选择多段线:"<BR>Pnt=ThisDrawing.Utility.GetPoint (, vbCrLf &amp; "指定点以确定偏移所在一侧:")'此处修改了


handle = Obj.handle<BR>ThisDrawing.SendCommand "offset" &amp; Str(a) &amp; vbCr &amp; "(handent " &amp; Chr(34) &amp; handle &amp; Chr(34) &amp; ")" &amp; vbCr &amp; _<BR>"(list " &amp; Str(Pnt(0)) &amp; Str(Pnt(1)) &amp; Str(Pnt(2)) &amp; ")" &amp; vbCr &amp; vbCr


End Sub

文字

dyheng 发表于 2005-5-28 13:46:00

谢谢!这次可以了!

dyheng 发表于 2005-6-2 20:12:00

<A name=34765><FONT color=#000066><B>wyj7485</B></FONT></A>大哥,现在又出了点问题,我还想利用偏移后的多线对象,好像用SendCommand这种方法偏移出来的对象都无法得到,是不是这样的?有没有解决方法,可以使我能够得到偏移后对象节点的坐标,谢谢了!

wyj7485 发表于 2005-6-3 10:13:00

本帖最后由 作者 于 2005-6-3 10:44:02 编辑 <br /><br /> Public Pt As Variant'放到全局变量定义区<BR>Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)<BR>If Object.ObjectName = "AcDbPolyline" Then<BR>Pt = Object.Coordinates<BR>End If<BR>End Sub

wyj7485 发表于 2005-6-3 18:10:00

本帖最后由 作者 于 2005-6-15 16:39:32 编辑 <br /><br /> 这种方法最好:



set objentity=ThisDrawing.ModelSpace.Item(ThisDrawing.ModelSpace.Count-1)<BR>

fl202 发表于 2018-2-7 15:41:46

请参考:

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=176590&page=1&extra=#pid809120
页: [1]
查看完整版本: 如何知道一个点是在多线的内侧还是外侧(偏移多线时用)?