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.pswp.cn/pingmian/93930.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93930.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93930.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【UniApp打包鴻蒙APP全流程】如何配置并添加UniApp API所需的鴻蒙系統權限

一、前言&#xff1a;為什么選擇 UniApp 打包鴻蒙應用&#xff1f; 隨著鴻蒙生態的快速發展&#xff0c;越來越多開發者希望將現有跨平臺項目快速接入鴻蒙系統。而 UniApp 作為國內領先的跨平臺開發框架&#xff0c;憑借其“一次開發&#xff0c;多端發布”的特性&#xff0c;…

STM32-FreeRTOS快速入門指南(下)

第十一章 FreeRTOS事件標志組 1. 事件標志組簡介 事件標志組與信號量一樣屬于任務間同步的機制&#xff0c;但是信號量一般用于任務間的單事件同步&#xff0c;對于任務間的多事件同步&#xff0c;僅使用信號量就顯得力不從心了。 FreeRTOS 提供的事件標志組可以很好的處理多事…

KTH7812磁編碼器芯片完全支持ABZ和UVW輸出模式

KTH7812磁編碼器芯片完全支持ABZ和UVW輸出模式&#xff0c;具體功能細節如下&#xff1a;&#x1f527; 1. ABZ輸出特性 分辨率可編程&#xff1a;支持 4~4096步/圈&#xff08;對應1~1024個脈沖周期/圈&#xff09;&#xff0c;用戶可通過配置寄存器自定義分辨率。 輸出頻率…

Android為ijkplayer設置音頻發音類型usage

官方文檔 多區音頻路由 | Android Open Source Projecthttps://source.android.google.cn/docs/automotive/audio/audio-multizone-routing?hlzh-cn 背景 車機系統開發多分區&#xff08;zone&#xff09;功能&#xff0c;可以實現同一個app通過設置&#xff0c;在不同分…

C++ 循環:從入門到精通的深度解析

《C++ 循環:從入門到精通的深度解析》 目錄 循環的本質與編程價值 三大基礎循環結構詳解 循環控制語句:break與continue的魔法 嵌套循環:構建復雜邏輯的基石 現代C++循環特性(C++11+) 循環性能優化與常見陷阱 實戰案例:算法與工程中的循環應用 面試題深度解析與編程技巧…

| `cat /etc/os-release` | 發行版詳細信息(如 Ubuntu、CentOS) |

在 Linux 或類 Unix 系統中&#xff0c;最簡潔的命令查看操作系統類型是&#xff1a; uname -s? 輸出示例&#xff1a; LinuxDarwin&#xff08;macOS&#xff09;FreeBSD 等&#x1f50d; 說明&#xff1a; uname&#xff1a;顯示系統信息-s&#xff1a;僅顯示操作系統內核名…

Maya 3D建模:點、線、面、創建多邊面

目錄 一 點、線、面 二 創建多邊面 一 點、線、面 鼠標放在模型上 按住鼠標右鍵&#xff1a;就可以選擇點 線 面 shift 加選點線面 ctrl 減選點線面 頂點面&#xff1a;是一個檢查模式&#xff0c;觀察有無錯誤 選擇面&#xff0c;單擊一個面&#xff0c;按住shift鍵 同時…

CXR-LT 2024:一場關于基于胸部X線的長尾、多標簽和零樣本疾病分類的MICCAI挑戰賽|文獻速遞-深度學習人工智能醫療圖像

Title題目CXR-LT 2024: A MICCAI challenge on long-tailed, multi-label, and zero-shotdisease classification from chest X-rayCXR-LT 2024&#xff1a;一場關于基于胸部X線的長尾、多標簽和零樣本疾病分類的MICCAI挑戰賽01文獻速遞介紹CXR-LT系列是一項由社區推動的計劃&a…

拆解本地組策略編輯器 (gpedit.msc) 的界面和功能

我們來詳細拆解本地組策略編輯器 (gpedit.msc) 的界面和功能。打開后,你會看到一個標準的微軟管理控制臺 (MMC) 窗口,主要分為三個部分。 這是一個典型的本地組策略編輯器界面,我們將其分為三個主要部分進行講解: +-----------------------------------------------+----…

[NCTF2019]True XML cookbook

TRY 嘗試XML外部實體注入 <?xml version"1.0" encoding"utf-8" ?> <!DOCTYPE user[<!ENTITY flag SYSTEM "file://./doLogin.php"> ]> <user><username> &flag; </username><password>1</pa…

嵌入式硬件篇---模塊使用

在電子開發、自動化控制等領域&#xff0c;“模塊” 是實現特定功能的標準化組件&#xff08;可以理解為 “功能積木”&#xff09;。不同模塊分工明確&#xff0c;比如有的負責感知環境&#xff08;傳感器&#xff09;&#xff0c;有的負責通信&#xff08;藍牙 / WiFi&#x…

密碼管理中Null 密碼

Null 密碼定義&#xff1a;Null 密碼是指允許用戶或系統賬戶使用空密碼&#xff08;即不輸入任何字符&#xff09;進行登錄或身份驗證的配置。危害&#xff1a;完全繞過身份驗證&#xff1a;這是最嚴重的危害。攻擊者無需破解或竊取任何密碼&#xff0c;只需輸入用戶名并留空密…

git新建項目如何推送到遠程倉庫

? git新建項目如何推送到遠程倉庫 一、遠程代碼庫操作(gitee為例) 1. 建新倉庫 2. 找到地址:這里可以看到用戶名等其他信息 3. 記住地址url(https) 二、本地操作 1. 安裝git 2. 創建項目 3. 在當前項目下打開git bash 4. 添加遠程倉庫 5. 檢查遠程倉庫地址 6. 檢查當前狀…

代碼管理平臺Gitlab如何通過 ZeroNews 實現遠程訪問?

Gitlab介紹1.1 GitLabGitLab 是一個基于 Web 的開源代碼托管平臺&#xff0c;集代碼托管、項目管理、持續集成與持續部署等功能于一身。它采用 Git 作為版本控制系統&#xff0c;界面友好、功能豐富。相較于市場上的 Gitee 和 GitHub&#xff0c;GitLab 有以下優勢&#xff1a;…

基于STM32F103C8T6控制A4988模塊驅動2相4線步進電機

文章目錄一、A4988模塊簡介二、A4988引腳說明三、A4988的Vref電壓調節四、STM32F103C8T6控制A4988驅動2相4線步進電機準備工作引腳接線代碼示例效果展示五、A4988電機驅動板常見問題一、A4988模塊簡介 A4988 是一款功能齊全的微步進電機驅動器&#xff0c;內置轉換器&#xff0…

基于單片機智能晾衣架/智能窗戶/智能窗簾設計

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 智能晾衣架系統基于單片機設計&#xff0c;融合傳感器技術與物聯網功能&#xff0c;實現衣物的自…

Python爬蟲實戰:研究dark-fantasy,構建奇幻文學數據采集分析系統

1. 引言 1.1 研究背景 奇幻文學作為奇幻文學的重要子類別,融合了哥特式元素與傳統奇幻設定,以其對人性的深刻探索和復雜的道德困境構建,成為當代文學研究的重要對象。與傳統奇幻文學強調英雄主義和光明戰勝黑暗的敘事不同,奇幻往往展現道德邊界、復雜的角色動機和充滿不確…

算法提升樹形數據結構-(線段樹)

今天介紹有關線段樹的相關部分的知識&#xff0c;線段樹是樹的數據結構中十分重要的算法處理思想。1.建立初始樹的條件2.基本框架3.區間修改的相關代碼4.區間查詢的代碼題目描述給定一個長度為 N 的數組 a&#xff0c;其初值分別為 a1?,a2?,...,aN?。現有 Q 個操作&#xff…

java-代碼隨想錄第十四天| 二叉樹層序遍歷相關題目

目錄 102.二叉樹的層序遍歷 107.二叉樹的層次遍歷II 199.二叉樹的右視圖 637.二叉樹的層平均值 429.N叉樹的層序遍歷 515.在每個樹行中找最大值 116.填充每個節點的下一個右側節點指針 117.填充每個節點的下一個右側節點指針II 104.二叉樹的最大深度 111.二叉樹的最小…

C++智能指針詳解:告別內存泄漏,擁抱安全高效

??小新課堂開課了&#xff0c;歡迎歡迎~?? &#x1f388;&#x1f388;養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; 所屬專欄&#xff1a;C&#xff1a;由淺入深篇 小新的主頁&#xff1a;編程版小新-CSDN博客 引言&#xff1a;為什么引入智能指針&#…