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数据 添加(一)
运行环境Visual Studio 2022 c# cad2016 一、XData(扩展数据)特定代码值 XData(扩展数据)特定代码值 XData通过一系列DXF组码(DxfCode)存储不同类型的数据,包括但不限于ASCII字符串、已注册应…...
【NLP】MHA、MQA、GQA机制的区别
Note LLama2的注意力机制使用了GQA。三种机制的图如下: MHA机制(Multi-head Attention) MHA(Multi-head Attention)是标准的多头注意力机制,包含h个Query、Key 和 Value 矩阵。所有注意力头的 Key 和 V…...
nginx upstream server主动健康监测模块添加https检测功能
1 缘起 前面的《nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和源码分析》系列已经分析了ngx_http_upstream_check_module的实现原理,并且在借助这个模块的框架实现了一个udp健康检测的新功能。 但是ngx_http_upstream_check_mod…...
OCP的operator——(4)用户任务:使用Operator创建etcd集群
文章目录 环境在namespace中安装Operator先决条件使用Web console从OperatorHub安装删除 使用CLI从OperatorHub安装从已安装的Operator创建应用使用Operator创建etcd集群报错从web console debug从命令行debug分析 参考 环境 RHEL 9.3Red Hat OpenShift Local 2.32 在namespa…...
win7自带截图工具保存失效解决办法
今日发现一台远航技术的win7中自带的截图工具使用时正常,保存图片时没有弹出保存位置的对话窗口,无法正常保存图片。解决方案如下: 1、进入注册表编辑器。开始-搜索程序和文件-输入 regedit 按下回车键,打开注册表; 2、…...
Android14之Android Rust模块编译语法(一百八十七)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
分布式文件系统 SpringBoot+FastDFS+Vue.js【三】
分布式文件系统 SpringBootFastDFSVue.js【三】 七、创建后台--分角色管理7.1.创建后台数据库表7.2.创建实体类7.2.1.Admin7.2.2.Menu7.2.3.MenuBean7.2.4.Role7.2.5.RoleMenu 7.3.编辑配置文件application.yml7.4.编写工具类7.4.1.AuthContextHolder7.4.2.HttpUtils7.4.3.Stri…...
【深度学习每日小知识】全景分割
全景分割 全景分割是一项计算机视觉任务,涉及将图像或视频分割成不同的对象及其各自的部分,并用相应的类别标记每个像素。与传统的语义分割相比,它是一种更全面的图像分割方法,传统的语义分割仅将图像划分为类别,而不…...
机器人能否返回原点
657. 机器人能否返回原点 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右&a…...
Mysql5.6忘记密码,如何找回(windows)
mysql5.6安装 第一步:关闭正在运行的数据库服务 net stop mysql第二步:在my.ini文件当中的[mysqld] 任意一个位置放入 skip-grant-tables第三步:启动mysql服务 net start mysql第四步:服务启动成功后就可以登录了,…...
算法训练营day29, 贪心算法3
import ( "sort" ) // 1005. K 次取反后最大化的数组和 func largestSumAfterKNegations(nums []int, k int) int { //先从小到大排序 sort.Ints(nums) sum : 0 //将数组中负数转为正数 for i : 0; i < len(nums); i { if nums[i] < 0 && k > 0 …...
164基于matlab的奇异值分解、小波降噪、zoom细化
基于matlab的奇异值分解、小波降噪、zoom细化。程序已调通,可直接运行。 164 奇异值分解 小波降噪 zoom细化 (xiaohongshu.com)...
每日OJ题_算法_递归③力扣206. 反转链表
目录 力扣206. 反转链表 解析代码 力扣206. 反转链表 206. 反转链表 LCR 024. 反转链表 难度 简单 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,…...
【Linux】指令 【whereis】
whereis是一个用于查找特定文件在文件系统中的位置的命令。 主要查找二进制文件或帮助文件,适用于那些不属于常规文件系统的特殊文件。 查找ping命令的二进制文件,你可以使用如下命令: whereis -b ping查看命令的帮助文件,可以添…...
牛客网SQL进阶128:未完成试卷数大于1的有效用户
官网链接: 未完成试卷数大于1的有效用户_牛客题霸_牛客网现有试卷作答记录表exam_record(uid用户ID, exam_id试卷ID, st。题目来自【牛客题霸】https://www.nowcoder.com/practice/46cb7a33f7204f3ba7f6536d2fc04286?tpId240&tqId2183007&ru%2…...
GitHub的使用操作
记得看目录哦! 1. 创建仓库2. 下载desktop3. 把创建的库克隆到本地4. 文件拷贝到本地仓库5. 在网址后面加/compare进行比较6. 给系统添加功能 1. 创建仓库 2. 下载…...
智慧公厕管理软件
随着城市化的不断推进,城市公共设施逐渐完善,其中智慧公厕的建设也在不断提速。智慧公厕作为城市基础设施的重要组成部分,对城市卫生水平提升有着不可忽视的作用。而智慧公厕管理软件更是智慧公厕管理的基础,是公共厕所智慧化管理…...
【30秒看懂大数据】数据中台
知幽科技是一家专注企业数字/智化,围绕数据价值应用的一站式数智化解决方案的咨询公司,也包括了为企业提供定制化数据培训,力求做企业最好的数智化决策伙伴。 点击上方「蓝字」关注我们 30秒看懂大数据专栏 让您在有限的碎片化时间…...
【UI自动化测试技术】自动化测试研究:Python+Selenium+Pytest+Allure,详解UI自动化测试,了解元素交互的常用方法(精)(三)
导言 在之前的文章里,我们一起学习了定位方式、等待机制等内容。相信通过之前的学习,你已经掌握了WEB自动化的一些入门知识,具备了编写代码的一些基础知识和能力。这篇文章,让我们一起学习一下模拟键盘事件。 在实际的项目当中&a…...
GPT-4带来的思想火花
GPT-4能够以其强大的生成能力和广泛的知识储备激发出众多思想火花。它能够在不同的情境下生成新颖的观点、独特的见解和富有创意的解决方案,这不仅有助于用户突破思维定势,还能促进知识与信息在不同领域的交叉融合。 1.GPT-4出色的创新思考和知识整合能…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
