注册 登录
明经CAD社区 返回首页

sieben的个人空间 http://www.mjtd.com/?43121 [收藏] [复制] [分享] [RSS]

日志

判断多义线的时钟走向

已有 1836 次阅读2010-12-14 23:26 |个人分类:揾食艰难|系统分类:开发|

如何知道多义线Polyline(特别是封闭多义线)的时钟走向呢?从起点到终点是顺时针走向还是逆时针走向?

同时,本函数对于判断一个点位于封闭多义线内还是外也是有帮助的。

很抱歉:Lisp代码不是以一个完整函数的形式出现,懒得整理了

C#代码

    /// <summary>
    /// 判断轻型多义线的时钟走向
    /// Version : 2008.11.14
    /// </summary>
    /// <param name="pline">轻型多义性</param>
    /// <returns>顺时针返回-1,逆时针返回1</returns>
    static public int Clockwise(Polyline pline)
    {
      Polyline pline1 = (Polyline)pline.Clone();
      double bulge0 = pline1.GetBulgeAt(0);
      double area0 = pline1.Area;
      if (bulge0 == 0.0)
      {
        pline1.SetBulgeAt(0, 0.5);
        double area1 = pline1.Area;
        if (area1 > area0)
          return 1;
        else
          return -1;
      }
      else
      {
        pline1.SetBulgeAt(0, 0);
        double area1 = pline1.Area;
        if (bulge0 > 0)
        {
          if (area1 > area0)
            return -1;
          else
            return 1;
        }
        else
        {
          if (area1 > area0)
            return 1;
          else
            return -1;
        }
      }
    }

Visual Lisp 代码

     (setq bulge0 (vla-getbulge obj1 0)
    area0  (vla-get-area obj1)
     )
     (setq p11 (vlax-curve-getpointatparam obj1 0.5)
    p13 (vlax-curve-getpointatparam obj1 0)
    p14 (vlax-curve-getpointatparam obj1 1)
     )
     (if (= bulge0 0.0)
       (progn
  (vla-setbulge obj1 0 0.5)
  (setq area1 (vla-get-area obj1))
  (if (> area1 area0)
    (setq cxk_clocksize 1)
    (setq cxk_clocksize -1)
  )
       )
       (progn
  (vla-setbulge obj1 0 0.0)
  (setq area1 (vla-get-area obj1))
  (if (> area1 area0)
    (if (> bulge0 0)
      (setq cxk_clocksize -1)
      (setq cxk_clocksize 1)
    )
    (if (> bulge0 0)
      (setq cxk_clocksize 1)
      (setq cxk_clocksize -1)
    )
  )
       )
     )
     (vla-setbulge obj1 0 bulge0)

草木世交.Sieben


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

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

GMT+8, 2024-4-27 02:48 , Processed in 0.108874 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部