cad.net 替换Polyline2d的点

作者:神秘网友 发布时间:2021-02-21 20:50:14

cad.net 替换Polyline2d的点

Polyline2d的点更改,它和其他的图元处理起来不一样,因为它是一个复杂实体.
需要通过枚举值来处理.

提取点集

先看一个通用的提取点集的做法,
GetStretchPoints可以作用在:轻多段线/二维多段线/三维多段线
你只需要将Polyline2d改成其他即可.
之所以改成ListPoint3d是因为用上Linq,微软大法好啊!

/// summary
/// 二维多段线点集
/// /summary 
public static ListPoint3d GetPoint3ds(this Polyline2d pl)
{
    var pts3d = new Point3dCollection();
    pl.GetStretchPoints(pts3d);

    var lst = new ListPoint3d();
    foreach (Point3d item in pts3d)
    {
        lst.Add(item);
    }
    return lst;
}

将二维多段线的点集逆序

IsClockwise 判断是否顺时针,可参考叉乘判断

//打开图元
var ent = tr.GetObject(item, OpenMode.ForWrite) as Entity;                              
if (ent is Polyline2d pl2d)
{
    var pts3d = pl2d.GetPoint3ds();
    if (!IsClockwise(pts3d))//判断是否顺时针
    {
        continue;
    }

    int j = 0;
    var pl2dEnu = pl2d.GetEnumerator();
    while (pl2dEnu.MoveNext())
    { 
        if (j  0)
        {
            var id = (ObjectId)pl2dEnu.Current;
            var vtx = tr.GetObject(id, OpenMode.ForWrite) as Vertex2d;
            vtx.Position = pts3d[pts3d.Count - j];
        }
        j++;
    }
}

(完)

cad.net 替换Polyline2d的点 相关文章

  1. AutoCAD.Net/C#.Net QQ群:193522571 C# 命令重写,重定义,Override,Overrule

    解决方案: public class ObjectRule : ObjectOverrule { public override void Erase(DBObject dbObject, bool erasing) { base.Erase(dbObject, erasing); //定义数据库Database db = HostApplicationServices.WorkingDatabase;//获取当前文件Document doc

  2. 【js知识】splice()实现数组的添加、删除、替换

    目录 一、删除数组 二、添加数组 三、替换数组元素 splice 方法一个数组中最强大的方法,不仅可以对数组进行元素对添加,对数组元素对删除,对数组元素的替换,可以说它集百家与一身,它会直接修改原数组,返回删除的元素。 那么我们就来好好的看看它是如何进

  3. cad.net c#仿lisp的mapcar函数

    c#仿lisp的mapcar函数 /// summary/// 仿lisp的mapcar函数/// /summary/// typeparam name="T1"集合/typeparam/// typeparam name="T2"集合/typeparam/// typeparam name="TR"/typeparam/// param name="lst1"/param/// param name="lst2"/param/// param na

  4. springboot无法完成变量从pom到.properties文件自动替换的问题

    原贴地址:http://www.cnblogs.com/softidea/p/5644755.html 我在maven的pom文件中进行了多环境变量配置,引用了maven-resources-plugin,在application.properties文件中通过以下配置指定不同环境下的配置文件, spring.profiles.active = ${profiles.activ

  5. CSS 实现logo图像链接替换文本链接

    div id="logo"a href="http://neirong.org" title="资源共享"img src="images/logo.gif"/a/div 现在的网页设计一般用logo图片代码纯文本链接,而大部分网页设计师是直接在网页相关位置使用(lt;img src=”images/logo.gif”gt;)实现的,其实更好的方法是直接

  6. 力扣1736. 替换隐藏数字得到的最晚时间-C语言实现-简单题

    题目 传送门 给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 表示)。 有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。 替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。 示例 1: 输入:time =

  7. ast babeljs --2( 数组替换)

    https://www.cnblogs.com/gaoyongjian/p/13246736.html // 将js代码转换成ASTconst { parse } = require("@babel/parser");// 用来遍历AST中的节点const traverse = require("@babel/traverse").default;// AST转换成jsconst generator = require("@babel/ge

  8. ubuntu 安装指南

    替换默认的 http://archive.ubuntu.com/ 为 mirrors.aliyun.com 2.开启root sudo passwd root 设置密码 vim /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $# This is the sshd server system-wide configuration file

  9. sed替换配置文件

    sed -r -e "s#(.*ip: ).*#199.199.10.102#g" application.ymlsed -r -e "s#(.*ip: ).*#\1199.199.10.102#g" application.ymlsed -r -e "s#(ip: ).*#\1199.199.10.102#g" application.ymlsed -r -e "s#(ip: ).*#\1199.199.10.102#g" -e "s#(url: jdbc:mysql:/

  10. SQL REPLACE 函数 -替换字符串

    SQL REPLACE 函数 -替换字符串 REPLACE 函数 -用第3个表达式替换,第1个字符串表达式中,出现的所有第2个给定字符串的表达式。 语法: REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' ) 参数 'string_expression1' //待搜索

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2020, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词