明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3036|回复: 6

[求助]如何判斷POLYLINE是順時針還是逆時針走的?

[复制链接]
发表于 2007-2-6 16:18:00 | 显示全部楼层 |阅读模式
[求助]如何判斷POLYLINE是順時針還是逆時針走的?
发表于 2007-2-6 17:36:00 | 显示全部楼层
本帖最后由 作者 于 2007-2-6 17:39:46 编辑

1、如果多段线只有两个点呢? --根本无法判断顺逆。

2、如果在三个点以上,只需要判断1、2点的矢量和2、3点的矢量的叉积即可。(可能有退化情况)

3、再说这样的判断是无意义的,因为多段线可能在中途转向。

如果你的需要不是这样的,下面已经有讨论:

http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=1090

 楼主| 发表于 2007-2-7 08:21:00 | 显示全部楼层
非常感謝!
发表于 2007-2-8 13:28:00 | 显示全部楼层
计算几何的算法 在www.gameres.com里搜索有
发表于 2007-2-14 23:34:00 | 显示全部楼层
只有封闭的多义线才有意义。可将多义线变成多折线(将其中的圆弧部分用多条直线拟合)后再判断。
发表于 2007-2-16 22:03:00 | 显示全部楼层
(defun C:test(/ ss fd ang offsetObj plineObj)
  (if (setq ss (ssget ":s" '((0 . "*POLYLINE"))))
   (progn
    (setq plineObj (vlax-ename->vla-object (ssname ss 0)))
    (setq fd (vlax-curve-getFirstDeriv plineObj 0.5))
    (setq ang (atan (/ (cadr fd) (car fd))))
    (setq offsetplineObj (car (vlax-safearray->list
      (vlax-variant-value
        (vla-offset plineObj 0.0001)))))
    (if (> (vla-get-length plineobj) (vla-get-length offsetplineobj))
       (princ "\n顺时针.")
       (princ "\n反时针.")
    )
    (vla-delete offsetplineObj)
   );progn
   (princ "\nNo object selected or object selected is not a polyline.")
 );end_if
 (princ)
)
发表于 2016-9-24 00:33:37 | 显示全部楼层
楼上的运用巧妙
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 03:51 , Processed in 0.163729 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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