项目场景:

我根据一条多段线Polyline产生了由它顶点集合连接生成的线段Line列表,并且我想在多段线的“坡点”(即相邻攀升Line和下降Line的交点)处,做一条垂线。


问题描述

运行的结果:发现一些明显不是坡点的位置也产生了垂线。如下图所示:


原因分析:

再检查了算法无误的情况下,我发现,产生这种bug的原因在于没有对Polyline产生的线段Line做处理,一些长度极小的线段Line(肉眼在CAD中看不出来,除非你放大n倍)的首尾两点也被程序算进去了


解决方案:

对产生的Line列表做处理,将长度过小的Line剔除。

//自建方法LinesOfAPolyLine()是根据指定的Polyline产生相应的线段Line的列表,这里将线段Line列表中长度大于等于1mm的线段Line保留了,剔除了长度小于1mm的线段Line
List<Line> lines = LinesOfAPolyLine(targetPl).Where(x => x.Length >= 1).ToList();

再次运行程序,得到了想要的运行结果。只在“坡点”画了垂线。

CAD二次开发 根据多段线Polyline产生的线段Line需要做进一步处理才可以使用相关推荐

  1. CAD二次开发--三维多段线偏移(Polyline3d offset)实现方法【GetOffsetCurves附带原代码】

    你如果有在做CAD开发,并且你也有自定义的个性化的偏移需求,那么你会发现CAD目前只能进行2D线偏移:而3D线分为两种,第一种为"假三维"(z为0),这种虽然不会报错,也能看见他的 ...

  2. CAD二次开发--三维多段线(Polyline3d)删除再绘制不能同步刷新的问题(格式刷变更实体属性踩坑总结)

    大家是否遇到过这个问题呢?变更一条三维多段线的属性(类似于格式刷),当删除再绘制的时候,会出现明显的卡顿现象,就是命令输入完毕后,必须鼠标再点一下才能成功!很明显这个和"格式刷"那 ...

  3. c# cad二次开发 通过选择txt文件将自动转换成多段线

    c# cad二次开发 通过选择txt文件将自动转换成多段线,txt样式如下 using System; using System.Collections.Generic; using System.T ...

  4. c# CAD二次开发 类库 创建各种图形、直线、圆、多段线、正方形、点等

    c# CAD二次开发 类库 创建各种图形.直线.圆.多段线.正方形.点等 using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD ...

  5. intersect 相交 范围_关于CAD二次开发中(范围线自相交)相交线的问题

    CAD二次开发对于毕业没多久,又是半路出家的我来说,是一个很大的挑战,遇到过很多难以解决的问题,这次在CAD二次开发遇到一个很苦恼的问题:判断 一个由线段组成的闭合区域中,是否存在着相互之间相交的线段 ...

  6. lisp CAD二次开发 宗地线自动编号

    lisp CAD二次开发 宗地线自动编号 (defun c:ZZ () (setvar "osmode" 0) (princ "\n选取宗地线-") (setq ...

  7. CAD二次开发(C#)第三节

    前言 这是最后一部分代码,往后若有时间,对其中的代码详细讲解.初心不变,以便日后查看.特别感谢作者孙成波译作<AutoCAD .NET 开发指南 2012 版>.三部分代码里面有些许失误, ...

  8. c#CAD二次开发全套视频目录

    本人非专业编程人员,设计院画图民工一名.自学CAD编程,也写了一些小程序!初期学习lisp编程语言,基本了解CAD各中开发模块,写过一些程序!前段时间自学C#CAD二次开发,遍布网上无教学视频.经过自 ...

  9. CAD二次开发(C#) 第一节

    前言 由于工作需要,最近在学习二次开发,将其记录于此,以便日后查看. 语法 涉及"特性","进程"知识点,需要有所了解 #region CAD二次开发--第一节 ...

最新文章

  1. 非结构化信息-》半结构化-》结构化-》关联数据体系-》数据挖掘-》故事化呈现-》决策导向
  2. Informatica:当好大数据的清道夫
  3. 十个隐藏_LOL手游:新版增加42个英雄,大白兔:10个隐藏T0角色
  4. 损失函数|交叉熵损失函数
  5. 微课视频小学用计算机画画,初识电脑绘画
  6. Java黑皮书课后题第7章:7.9(找出最小元素)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值,并显示这个最小值
  7. DROP TABLE、TRUNCATE TABLE和DELETE的区别
  8. 最近阅读20171106
  9. 防止properties乱码配置---SpringBoot
  10. 【软件工程】业务过程与解决方案
  11. mybatis 自动生成integer_通过mybatis-generator-core工具自动关联表生成对应model、mappers及dao层代码类完整教程...
  12. java对象序列化为字符串
  13. pyTorch api
  14. python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统
  15. EXCEL生成SQL脚本
  16. 阿铭Linux_网站维护学习笔记20190410
  17. 巧做“士兵突击”的个性日历
  18. 时空数据生成对抗网络研究综述(上)
  19. 计算机中时序信号的作用是什么,时序信号
  20. 3w 字长文爆肝 Java 基础面试题!太顶了!!!

热门文章

  1. 七个习惯让你免费学好英语
  2. 刹车刹不住,太危险?我在绿源杭州电动车店提的新车超稳哒~
  3. 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题解决全过程(提问篇)...
  4. 解决Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' to ALLOWED_HOSTS问题
  5. android7.0模拟器pc版,安卓9.0模拟器电脑版
  6. 如何实现跨行跨地区转账实时到帐而且免手续费?
  7. 日常面试刷题9-29
  8. genymotion-安卓模拟器-修改IMEI
  9. 计算属性普通函数写法 和 set get 写法
  10. OBS Studio下载速度慢,加速下载!11m/s