guliande 发表于 2010-6-1 10:56:00

[求助]如何根据顺OR逆时针来确定点的顺序

大家好,有个问题向大家请教:
比如有一个多线段组成的封闭图形,各个节点依次衔接起来。如A,B,C,D,E'''''',我的问题是如果根据顺OR逆时针来确定点的顺序。
如附件(cad2004)

**** Hidden Message *****

雪山飞狐_lzh 发表于 2010-6-1 21:06:00

在晓东看到的Arx的代码,最近太忙了,有时间改写下
http://www.xdcad.net/forum/showthread.php?s=&threadid=34540&perpage=15&display=&pagenumber=1

guliande 发表于 2010-6-2 07:47:00

谢谢~

雪山飞狐_lzh 发表于 2010-6-13 16:24:00

试下:
复制代码

雪山飞狐_lzh 发表于 2010-6-13 16:37:00

测试代码


      
      public void test()
      {
            var db = HostApplicationServices.WorkingDatabase;
            var doc = Application.DocumentManager.GetDocument(db);
            var ed = doc.Editor;
            var resEnt = ed.GetEntity("\n请选择优化多段线:");
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                Polyline pl = resEnt.ObjectId.GetObject(OpenMode.ForWrite) as Polyline;
                var pnts =GetAll(0, pl.NumberOfVertices - 1, i => pl.GetPoint2dAt(i));
                ed.WriteMessage("\n面积:{0}\n顺时针:{1}", pnts.GetArea(), pnts.IsClockWise());
                tr.Commit();
            }
      }
      public IEnumerable GetAll(int start, int end, Func func)
      {
            for (int i = start; i <= end; i++)
            {
                yield return func(i);
            }
      }


效果:
命令: ctest
请选择优化多段线:
面积:304398.872847913
顺时针:False

sgj789012 发表于 2010-7-22 12:20:00

我来顶一下
页: [1]
查看完整版本: [求助]如何根据顺OR逆时针来确定点的顺序