C# CAD-Xdata数据 添加(一)

2024-02-17 01:04
文章标签 c# 数据 .net cad netcore xdata

本文主要是介绍C# CAD-Xdata数据 添加(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 运行环境Visual Studio 2022 c# cad2016

一、XData(扩展数据)特定代码值

XData(扩展数据)特定代码值 XData通过一系列DXF组码(DxfCode)存储不同类型的数据,包括但不限于ASCII字符串、已注册应用程序名称、控制字符串、图层信息、二进制数据块、坐标值、方向向量、实数、距离、比例和整数等。

ExtendedDataAsciiString=1000:表示一个ASCII格式的字符串。
ExtendedDataRegAppName=1001:指向已注册应用程序的名称,用于识别或解释相关联的XData。
ExtendedDataControlString = 1002:控制字符串,通常用作分隔符或其他特殊标记用途。
ExtendedDataLayerName = 1003:图层名称信息。
ExtendedDataBinaryChunk = 1004:二进制数据块,用于存储非文本格式数据。
ExtendedDataHandle=1005:句柄,指向数据库中的其他对象。坐标相关:ExtendedDataXCoordinate =1010
ExtendedDataYCoordinate = 1020
ExtendedDataZCoordinate=1030:分别表示笛卡尔坐标系下的X、Y、Z坐标值。
ExtendedDataWorldXCoordinate=1011, ExtendedDataWorldYCoordinate =1021, ExtendedDataWorldZCoordinate =1031:世界坐标系下的绝对坐标X、Y、Z。
ExtendedDataWorldXDisp, ExtendedDataWorldYDisp, ExtendedDataWorldZDisp:世界坐标系下的位移量。
ExtendedDataWorldXDir, ExtendedDataWorldYDir, ExtendedDataWorldZDir:世界坐标系下的方向向量。其他数值类型:ExtendedDataReal=1040:实数类型的数值。
ExtendedDataDist =1041:距离数值,精确的距离测量结果。
ExtendedDataScale=1042:比例数值,例如缩放因子。
整数类型:
ExtendedDataInteger16= 1070:16位整数。
ExtendedDataInteger32=1071:32位整数。ExtendedDataLong=1072:有时也用于表示32位整数,具体取决于上下文。
还有更多其它组码用来表示颜色、点样式、线型等图形属性以及各种布尔值、角度、日期时间等数据类型。

二、新建注册应用程序的名称

当使用XData(扩展数据)存储自定义信息时,包含一个DXF组码为ExtendedDataRegAppName=1001的数据,确保其他软件组件能够根据这个标识来解析相应的数据格式。 

 public static void CreateRegApp(this Document doc, string appName){try{using (var documentLock = doc.LockDocument()){using (Transaction trans = doc.Database.TransactionManager.StartTransaction()){RegAppTable table = (RegAppTable)trans.GetObject(doc.Database.RegAppTableId, OpenMode.ForWrite, false);if (!table.Has(appName)){RegAppTableRecord regAppRec = new RegAppTableRecord();regAppRec.Name = appName;table.Add(regAppRec);trans.AddNewlyCreatedDBObject(regAppRec, true);}trans.Commit();}}}catch (Exception ex){throw ex;}}

三、向选定实体添加扩展数据(XData)

选定的AutoCAD实体上添加包含已注册应用程序标识以及特定ASCII文本信息的扩展数据。

 using (Transaction transaction = db.TransactionManager.StartTransaction()){Entity ent01 = transaction.GetObject(outerId, OpenMode.ForWrite) as Entity;ResultBuffer rb = new ResultBuffer();rb.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, "ACAD"));rb.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, "作者:John Doe"));ent01.XData = rb;// 构造 ResultBuffer 对象来存储扩展数据transaction.Commit();ed.WriteMessage("\n成功向选中实体添加了 XData。");}

 四、检查是否成功添加了扩展数据(XData)


编写代码检查: 您可以再次通过.NET API读取刚刚设置过XData的实体,并查看其XData属性来验证数据是否已成功添加。

 using (Transaction transaction = db.TransactionManager.StartTransaction()){Entity ent01 = transaction.GetObject(outerId, OpenMode.ForRead) as Entity;// 检查实体是否存在扩展数据if (ent01.XData != null){ResultBuffer rb = ent01.XData; // 获取实体的扩展数据// 遍历ResultBuffer以查看数据foreach (TypedValue tv in rb){switch ((DxfCode)tv.TypeCode){case DxfCode.ExtendedDataRegAppName:string regAppName = tv.ToString();break;case DxfCode.ExtendedDataAsciiString:string asciiData = tv.ToString();ed.WriteMessage("\n找到的ASCII字符串: " + asciiData);break;// 其他类型的DXF组码...}}}else{ed.WriteMessage("\n实体没有扩展数据!");}// 无需在这里提交事务,因为我们只是读取数据}

五、总结:

一、XData(扩展数据)特定代码值 XData通过一系列DXF组码(DxfCode)存储不同类型的数据,包括但不限于ASCII字符串、已注册应用程序名称、控制字符串、图层信息、二进制数据块、坐标值、方向向量、实数、距离、比例和整数等。

二、新建注册应用程序的名称 为了使其他软件组件能够识别并解析自定义的XData格式,可以创建一个已注册的应用程序。提供的C#方法CreateRegApp会检查文档中的RegAppTable是否存在指定名称的应用程序,如果不存在,则创建新的RegAppTableRecord并添加到表中。

三、向选定实体添加扩展数据(XData) 通过.NET API,可以为选定的AutoCAD实体添加包含已注册应用程序标识和特定ASCII文本信息的XData。示例代码中创建了一个ResultBuffer对象,并向其中添加了指向“ACAD”注册应用程序和一个ASCII字符串的TypedValue,然后将该ResultBuffer设置为实体的XData属性。

四、检查是否成功添加了扩展数据(XData) 验证是否成功添加XData的方法是再次读取实体的XData属性。如果实体具有非空的XData属性,则遍历其内容并根据DXF组码解析出已添加的数据,例如在示例中输出找到的ASCII字符串。由于只是读取数据,因此无需提交事务。

//祝大家好运

//感谢大家的点赞,收藏,转发,关注  

这篇关于C# CAD-Xdata数据 添加(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/716228

相关文章

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1