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

C#开源库ACadSharp读取dwg图元的示例

文章目录

  • 介绍
  • 数据示例
  • 读取图元属性

介绍

开源库ACadSharp的地址:https://github.com/DomCR/ACadSharp

可以在NuGet中搜索到该库并安装。

数据示例

数据是一个绘制了以下简单图元的dwg数据:
在这里插入图片描述

读取图元属性

创建了.net6控制台项目,通过NuGet安装了ACadSharp库。

测试了以下几种图元的读取:

  • Line
  • Arc
  • Circle
  • Ellipse
  • LwPolyline
  • MText
  • Text
using ACadSharp.IO;
using ACadSharp;
using ACadSharp.Entities;namespace TestACadSharp
{internal class Program{static void Main(string[] args){var dwgPath = "./test-data/demo.dwg";CadDocument doc = DwgReader.Read(dwgPath, onNotification);//遍历所有实体foreach (var entity in doc.Entities){PrintInfo(entity);Console.WriteLine();}Console.WriteLine("Over!");}static void PrintInfo(Entity ent){switch (ent){case Line:var e = ent as Line;Console.WriteLine($"Line: X1={e.StartPoint.X},Y1={e.StartPoint.Y}," +$"X2={e.EndPoint.X},Y2={e.EndPoint.Y},Handle={e.Handle}");break;case Arc:var a = ent as Arc;Console.WriteLine($"Arc: r={a.Radius},X={a.Center.X},Y={a.Center.Y}," +$"StartAngle={a.StartAngle},EndAngle={a.EndAngle}");break;case Circle:var c = ent as Circle;Console.WriteLine($"Circle: r={c.Radius},X={c.Center.X},Y={c.Center.Y}");break;case Ellipse:var ee = ent as Ellipse;Console.WriteLine($"Ellipse: X={ee.Center.X},Y={ee.Center.Y}," +$"MajorAxis={ee.MajorAxis},MinorAxis={ee.MinorAxis}," +$"Rotation={ee.Rotation}");break;case Polyline:var p = ent as Polyline;Console.WriteLine($"Polyline: IsClosed={p.IsClosed}");for (int i = 0; i < p.Vertices.Count; i++){var v = p.Vertices[i];Console.WriteLine($"Bulge={v.Bulge},X={v.Location.X},Y={v.Location.Y}");}break;case LwPolyline:var wp = ent as LwPolyline;Console.WriteLine($"LwPolyline: IsClosed={wp.IsClosed}");for (int i = 0; i < wp.Vertices.Count; i++){var v = wp.Vertices[i];Console.WriteLine($"Bulge={v.Bulge},X={v.Location.X},Y={v.Location.Y}");}break;case MText:var mt = ent as MText;Console.WriteLine($"MText: X={mt.InsertPoint.X},Y={mt.InsertPoint.Y},Text={mt.Value},Height={mt.Height}");break;case TextEntity:var t = ent as TextEntity;Console.WriteLine($"Text: X={t.InsertPoint.X},Y={t.InsertPoint.Y},Text={t.Value},Height={t.Height}");break;default:break;}}// Process a notification form the readerprivate static void onNotification(object sender, NotificationEventArgs e){Console.WriteLine(e.Message);}}
}

在控制台打印了图元的部分属性:

Line: X1=0,Y1=0,X2=100,Y2=100,Handle=591Circle: r=20,X=100,Y=100LwPolyline: IsClosed=False
Bulge=0,X=100,Y=0
Bulge=0,X=200,Y=100
Bulge=0,X=200,Y=200Arc: r=50,X=200,Y=0,StartAngle=1.5707963267948961,EndAngle=3.5853960407017067LwPolyline: IsClosed=True
Bulge=0,X=0,Y=200
Bulge=0,X=20,Y=200
Bulge=0,X=100,Y=300
Bulge=0,X=20,Y=300LwPolyline: IsClosed=False
Bulge=1.7160122950374628,X=144.12226845286386,Y=251.44355233800798
Bulge=0,X=203.49903695426838,Y=270.9970954309483
Bulge=0,X=168.5715230805963,Y=344.3228820294762
Bulge=0,X=91.0324529571044,Y=367.36812645092596Ellipse: X=325.5331742656035,Y=139.27755185746537,MajorAxis=167.47948810551864,MinorAxis=61.59293601510967,Rotation=-2.3304093705041717Text: X=334.465413122849,Y=340.1926829662716,Text=hello,Height=77.01746524013924MText: X=427.1373896780551,Y=226.34077414221065,Text=world\P!!!!,Height=77.01746524013924
http://www.dtcms.com/a/344805.html

相关文章:

  • 为何她在“传递情报”时会被干扰?—— 探究 TCP 协议在无线环境中的信号干扰问题
  • 算法题复盘+代码解读(2)—— 两数之和
  • 【功能测试面试题】
  • 【数据结构】B+ 树——高度近似于菌丝网络——详细解说与其 C 代码实现
  • CVPR焦点 | 神经网络新范式:轻量化与精度并行,重塑视觉任务性能天花板
  • 解释一下,Linux,shell,Vmware,Ubuntu,以及Linux命令和shell命令的区别
  • 1337俚语的由来
  • Seaborn数据可视化实战:Seaborn时间序列可视化入门
  • Linux学习-网络编程2
  • .java->.class->java 虚拟机中运行
  • 51.Seata-TCC模式
  • 前端函数防抖
  • Nginx + Keepalived 实现高可用负载均衡集群
  • 前端桌面端解决方案技术选型:全面指南
  • 深入理解强化学习的target network
  • 3.5MM防水耳机插座
  • 为什么访问HTTPS站点时,会发生SSL证书错误
  • JAVA基础代码示例
  • SpringBoot -- 集成Spring Security (二)
  • LightGBM时序预测详解:从原理到 PSO 参数优化
  • 如何理解面向过程和面向对象,举例说明一下?
  • [docker/大数据]Spark快速入门
  • 【实时Linux实战系列】实时系统中的预测性维护策略
  • 能源行业合同管理难点有哪些?企业该如何应对?
  • FIFO核心原理与机制
  • QGIS 绿色版修正
  • 基于vtkImageViewer2的MPR(二):改进
  • JavaScript 操作 DOM
  • 图论——Floyd算法
  • 四十一、【高级特性篇】API 文档驱动:OpenAPI/Swagger 一键导入测试用例