当前位置: 首页 > news >正文

Auto CAD二次开发——折线多段线

        学如逆水行舟,不进则退。 愿自己不忘初心,坚持积累。感谢大家的支持。本篇博客主要是学习多段不带圆弧的多段线。下一篇将学习带圆弧的多段线。

1、基础知识储备

        多段线与之前的直线、圆弧、圆同属于Entity,这里我简单叙述一下多段线的继承关系:Polyline(多段线)->Curve(曲线)->Entity(实体)->DBObject(基础数据对象)->Drawable(图形)->RXObject,,因此都可以使用Database 图形数据库进行绘制。

2、绘制折线多段线

2.1底层逻辑

public Polyline();
public Polyline(int vertices);

参数vertices表示顶点

除此之外,Polyline类库中分装了其他的方法:

1、public bool Closed { get; set; }//判断是否闭合

2、public void AddVertexAt(int index, Point2d pt, double bulge, double startWidth, double endWidth);//添加顶点

参数1:顶点的序号;参数2:顶点(Point2d类型);参数3:凸度(主要用于绘制圆弧,直线为0);参数4:起始线宽;参数5:终止线宽。

3、public double ConstantWidth { get; set; }//全局线宽

2.2不封装代码:

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CAD_CreateEntity
{public class PolyClass{[CommandMethod("CreatePolyline")]public void CreatePolyLine(){Polyline pl = new Polyline();Point2d p1 = new Point2d(100, 100);Point2d p2 = new Point2d(200, 100);Point2d p3 = new Point2d(200, 200);pl.AddVertexAt(0, p1, 0, 0, 0);pl.AddVertexAt(1, p2, 0, 0, 0);pl.AddVertexAt(2, p3, 0, 0, 0);pl.Closed = true;pl.ConstantWidth = 10;//声明图形数据库Database db = HostApplicationServices.WorkingDatabase;db.AddEntityToModelSpace(pl);}}
}

运行结果:

2.3分装代码:

函数封装:

        /// <summary>/// 绘制折线多段线/// </summary>/// <param name="db">图形数据库</param>/// <param name="isClosed">是否闭合</param>/// <param name="constantWidth">线宽</param>/// <param name="vertices">多段线的定点,可变参数</param>/// <returns>ObjectId</returns>public static ObjectId AddPolyLineToModelSpace(this Database db, bool isClosed, double constantWidth, params Point2d[] vertices){if (vertices.Length < 2){return ObjectId.Null;}//声明一个多段线对象Polyline pLine = new Polyline();//添加多段线的顶点for (int i = 0; i < vertices.Length; i++){pLine.AddVertexAt(i, vertices[i], 0, 0, 0);}//判断是否闭合if (isClosed){pLine.Closed = true;}//设置多段线的线宽pLine.ConstantWidth = constantWidth;return db.AddEntityToModelSpace(pLine);}

函数调用:

            //声明图形数据库Database db = HostApplicationServices.WorkingDatabase;db.AddPolyLineToModelSpace(true, 0, new Point2d(10, 10), new Point2d(50, 10), new Point2d(100, 20));db.AddPolyLineToModelSpace(true, 0, new Point2d(10, 50), new Point2d(50, 50), new Point2d(100, 60));

运行结果:

http://www.dtcms.com/a/540117.html

相关文章:

  • django做的购物网站海口网站建设优化案例
  • 一个密码破解器
  • 如何查看网站的建设者重庆建设部网站官网
  • Ansible 的条件语句与循环详解
  • 生产级 Ansible 部署全流程-nginx示例
  • Ansible Playbook 深度解析:自动化任务编排最佳实践
  • Ansible生产调优与故障排查全攻略
  • 【笔记】Podman Desktop 部署 开源数字人 HeyGem.ai
  • vue-day02
  • 青岛有哪些做网站的公司公司网页制作需要什么哪些材料
  • 建站公司用wordpress如何查看网站的建设方式
  • Leetcode 3727. Maximum Alternating Sum of Squares
  • rtp组播乱序三种策略模式选择(AI)
  • Docker基础 - 入门基础和Helloworld
  • 集群——GitLabJenkins部署
  • deepin 终端,但是版本是 deepin 15 的
  • 简单的分布式锁 SpringBoot Redisson‌
  • 如何建立一个视频网站网站域名权
  • 如何修改wordpress站名泰安网站建设哪家不错
  • 【Swift】LeetCode 73. 矩阵置零
  • 益和热力性能优化实践:从 SQL Server 到 TDengine 时序数据库,写入快 20 秒、查询提速 5 倍
  • 蚂蚁集团已在香港申请「ANTCOIN」等 Web3 相关商标
  • HarmonyOS实战项目:开发一个分布式新闻阅读客户端
  • “Web3、区块链、稳定币”名词解析
  • 【参赛心得】鸿蒙三方库适配实战:从 Hadoop 生态到鸿蒙生态,企业级项目集成的 6 个最佳实践
  • 【SpringBoot】29 核心功能 - 数据访问 - Spring Boot 2 操作 Redis 实践指南:本地安装与阿里云 Redis 对比应用
  • B.40.3.1-Spring Boot与Spring Cloud核心技术详解
  • HarmonyOS RemoteWindow远程窗口组件的分布式能力深度解析
  • HarmonyOS自动化测试与持续集成实战指南
  • 智慧团建网站入口官网手机前端开发软件工具