乐筑天下

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

正确闭合折线

[复制链接]

7

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
44
发表于 2019-2-20 10:06:05 | 显示全部楼层 |阅读模式
嗨,伙计们,感谢您抽出宝贵时间阅读这篇文章。 我的问题是:正确关闭折线的正确程序是什么?
这是我用来关闭折线的线:
  1. pline.Closed = true;

但是,如果我随后按如下方式查询折线:
  1. private const double TOLERANCE = 0.001;
  2. var t = new Tolerance(TOLERANCE, TOLERANCE);
  3. using (var curve1 = pline.GetGeCurve(t))
  4.             {
  5.                 using (var curve2 = pline.GetGeCurve(t))
  6.                 {
  7.                     using (var curveInter = new CurveCurveIntersector3d
  8.                    (
  9.                     curve1, curve2, pline.Normal, t))
  10.                     {
  11.                         int interCount = curveInter.NumberOfIntersectionPoints;
  12.                         int overlaps = curveInter.OverlapCount();
  13.                         if (overlaps < pline.NumberOfVertices)
  14.                         {
  15.                             // WHY AM I GOING IN HERE?  OVERLAPS=33, pline.NumberOfVertices = 34
  16.                         }
  17.                     }
  18.                 }
  19.             }

我的结论是,当我以编程方式关闭折线时,重叠计数不会更新。  (也应该是34)。任何想法如何正确关闭折线? 谢谢。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2019-2-20 11:29:25 | 显示全部楼层
闭合折线不会增加顶点的数量,仍然是相同的数量。虽然有时当最后一个线段有一个凸起时,cad会添加一个顶点,但这在编码时不会发生
回复

使用道具 举报

7

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
44
发表于 2019-2-20 11:34:28 | 显示全部楼层

正确。但是重叠计数应该增加以匹配顶点的数量。请参阅我的示例代码。
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

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

铜币
238
发表于 2019-2-20 11:42:34 | 显示全部楼层
如果多段线的起点和终点不在同一点,设置Closed=true会将多段线从上一个终点延伸到起点。因此,折线将以相同的顶点数和线段数(顶点之间)结束。在这种情况下,我们说来自折线的多边形没有重复的顶点。这是等同于AutoCAD中GIS多边形的正确闭合多段线。
在您的代码中,显然折线的起点和终点位于同一位置。Closed=true简单地使折线闭合(即在起点和终点之间添加长度为0的线段)。作为程序员,你有责任决定是否允许重复的顶点,因为你想创建一个闭合的折线作为多边形;如果没有,你需要删除它。如果您使用过AutoCAD Map,您会知道它附带的绘图清理工具的一个功能是从闭合多段线中删除重复的顶点。
这种起点/终点都在同一位置的闭合多段线通常是导入GIS多边形的结果,其中导入过程不会将GID多边形正确转换为AutoCAD的闭合多段线,因为在GIS worked中,闭合多段线环(多段线)由第一个点和最后一个点相同的一系列点表示。
因此,在AutoCAD中,闭合多段线没有正确或不正确的方法。您的代码有责任设置Closed=True/False,并在必要时检测/处理重复的顶点。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 08:50 , Processed in 0.225884 second(s), 60 queries .

© 2020-2025 乐筑天下

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