明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3576|回复: 12

如何判断,多线段的顺逆时针之分?

  [复制链接]
发表于 2003-11-19 14:35 | 显示全部楼层 |阅读模式
如何判断,多线段的顺逆时针之分? 我的问题参看: http://bbs.mjtd.com/forum.php?mod=viewthread&tid=12800
发表于 2021-9-17 11:51 来自手机 | 显示全部楼层
非常好,有用
发表于 2003-11-19 16:20 | 显示全部楼层
  1. Sub rv()
  2.     Dim pnt As Variant
  3.     Dim ent As AcadEntity
  4.     ThisDrawing.Utility.GetEntity ent, pnt, "请选择多段线:"
  5.     Dim rev As Boolean
  6.     rev = IsClockWise(ent)
  7.     If rev Then
  8.         Debug.Print "顺时针"
  9.     Else
  10.         Debug.Print "逆时针"
  11.     End If
  12. End Sub

  13. Function IsClockWise(objEntity As AcadEntity) As Boolean
  14.     On Error Resume Next
  15.     Dim NewObj As Variant
  16.     NewObj = objEntity.Offset(-0.01)
  17.     Dim Area1 As Double
  18.     Dim Area2 As Double
  19.     Area1 = objEntity.Area
  20.     Area2 = NewObj(0).Area
  21.     Dim i As Integer
  22.     For i = 0 To UBound(NewObj)
  23.         NewObj(i).Delete
  24.     Next
  25.     If Area1 < Area2 Then IsClockWise = True
  26. End Function
发表于 2003-11-19 21:41 | 显示全部楼层
站长的方法很有意思!
如果单纯根据坐标数据判断曲线的方向,在晓东CAD有过讨论,我也提供了一种方法。详见:
http://www.xdcad.net/forum/showthread.php?s=&threadid=34540&perpage=15&display=&pagenumber=1
发表于 2003-11-20 07:31 | 显示全部楼层
贴子看过了,方法不错,但在VBA中要达到你所说的目的,方法:
1.使用VLAX操作曲线的方法,先找到最西边的点,然后按一个小距离取前一点和后一点进行判断。
2.找最西边的点的方法:先使用GetBoundingBox方法取外框,找到外框四个点中西边的两个点画一直线,该直线与曲线的相交点就是最西边的点了

使用面积法应该说是最简单的方法,而对于自相交的曲线,确实没有方向可说,要判断是否自相关,在相得NewObj = objEntity.Offset(-0.01)中的面积小于原面积后,还需要再求NewObj = objEntity.Offset(0.01)中的面积是否小于原面积,如果两个偏移方法的面积均小于原面积,则可以判断曲线为自相关。
 楼主| 发表于 2003-11-20 10:20 | 显示全部楼层
多谢!
发表于 2003-11-20 10:58 | 显示全部楼层
又是你,哈哈,你问的问题我猜到了,因为我也遇到了,而我解决的办法不是去判断顺时针,逆时针,而是两个偏移都生成,然后判断一下两条多段线的长短,长的在外,短的在内,做出取舍就行了~~~~~~~~~~~
发表于 2004-9-23 13:28 | 显示全部楼层
今晚打老虎发表于2003-11-20 10:58:00又是你,哈哈,你问的问题我猜到了,因为我也遇到了,而我解决的办法不是去判断顺时针,逆时针,而是两个偏移都生成,然后判断一下两条多段线的长短,长的在外,...

你这个方法可行
发表于 2004-9-23 21:02 | 显示全部楼层
与面积判断法的同理
发表于 2006-1-13 13:13 | 显示全部楼层

mccad朋友的这个方法我有些不懂,能不能解释一下里面的细节,主要是Offset这个方法是设置偏移量的,但是这个怎么又和面积Area关系上了,一头雾水~~

我也遇到了这个问题,非常希望和感谢有人能帮帮我啊~~

发表于 2006-1-13 17:44 | 显示全部楼层
haitu发表于2006-1-13 13:13:00 mccad朋友的这个方法我有些不懂,能不能解释一下里面的细节,主要是Offset这个方法是设置偏移量的,但是这个怎么又和面积Area关系上了,一头雾水~~...


用左手或者右手比划一下就知道了啊

四指的方向是线的走向 大拇指的方向表示将偏移的方向

那顺时针走 则新生成的线围出来的面积要大或小些

反之..~-_-b.

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-5 22:00 , Processed in 0.281243 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表