乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 183|回复: 8

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

[复制链接]

13

主题

31

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2005-5-26 21:24:00 | 显示全部楼层 |阅读模式
现在想实现这种效果:用户在多线的两侧单击一下,通过判断点在多线的内侧还是外侧以决定该多线的偏移方向。但是点在多线的哪侧我判断不出来,请问哪位大哥有办法,帮忙解决一下,谢谢了!

2phdnoc5244.jpg

2phdnoc5244.jpg

回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2005-5-27 08:40:00 | 显示全部楼层
Public Obj As Object
Public Pnt As Variant
Sub test()
Dim a, handle
a = 20
ThisDrawing.Utility.GetEntity Obj, Pnt, vbCrLf & "选择多段线:"
ThisDrawing.Utility.GetPoint Pnt, vbCrLf & "指定点以确定偏移所在一侧:"
handle = Obj.handle
ThisDrawing.SendCommand "offset" & Str(a) & vbCr & "(handent " & Chr(34) & handle & Chr(34) & ")" & vbCr & _
"(list " & Str(Pnt(0)) & Str(Pnt(1)) & Str(Pnt(2)) & ")" & vbCr & vbCr
End Sub
回复

使用道具 举报

13

主题

31

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2005-5-27 18:02:00 | 显示全部楼层
Public Obj As Object
Public Pnt As Variant
Sub test()
Dim a, handle
a = 20 ThisDrawing.Utility.GetEntity Obj, Pnt, vbCrLf & "选择多段线:"
'此处修改了
handle = Obj.handle
ThisDrawing.SendCommand "offset" & Str(a) & vbCr & "(handent " & Chr(34) & handle & Chr(34) & ")" & vbCr & _
"(list " & Str(Pnt(0)) & Str(Pnt(1)) & Str(Pnt(2)) & ")" & vbCr & vbCr
End Sub[glow=255,red,2]文字[/glow]
回复

使用道具 举报

13

主题

31

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2005-5-28 13:46:00 | 显示全部楼层
谢谢!这次可以了!
回复

使用道具 举报

13

主题

31

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2005-6-2 20:12:00 | 显示全部楼层
wyj7485大哥,现在又出了点问题,我还想利用偏移后的多线对象,好像用SendCommand这种方法偏移出来的对象都无法得到,是不是这样的?有没有解决方法,可以使我能够得到偏移后对象节点的坐标,谢谢了!
回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2005-6-3 10:13:00 | 显示全部楼层

Public Pt As Variant'放到全局变量定义区
Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
If Object.ObjectName = "AcDbPolyline" Then
Pt = Object.Coordinates
End If
End Sub
回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2005-6-3 18:10:00 | 显示全部楼层

这种方法最好: set objentity=ThisDrawing.ModelSpace.Item(ThisDrawing.ModelSpace.Count-1)
回复

使用道具 举报

11

主题

247

帖子

12

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
289
发表于 2018-2-7 15:41:00 | 显示全部楼层
请参考:
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 08:39 , Processed in 0.961151 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表