问题

我需要在 dwg 文件中存储一些信息,以额外描述图形文件并使它能够和其它软件程序集成。
请问怎样才能在 dwg 文件中写入自定义数据并读取?

回答

你可以使用 Named Object Dictionary (NOD, 中文名: 命名对象字典) 来存储自定义数据。
以下示例程序展示了如何在当前 dwg 文件中写入自定义数据并读取。

[CommandMethod("CAXDEV_WNOD")]
public void WriteToNOD()
{Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;using (Transaction tr = db.TransactionManager.StartTransaction()){// 命名对象字典DBDictionary nod = tr.GetObject(db.NamedObjectsDictionaryId,OpenMode.ForWrite) as DBDictionary;// 自定义数据Xrecord myXrecord = new Xrecord();myXrecord.Data = new ResultBuffer(new TypedValue((int)DxfCode.Int32, 520),new TypedValue((int)DxfCode.Text, "Hello www.caxdev.com"));// 往命名对象字典中存储自定义数据nod.SetAt("MyData", myXrecord);tr.AddNewlyCreatedDBObject(myXrecord, true);tr.Commit();}
}[CommandMethod("CAXDEV_RNOD")]
public void ReadNOD()
{Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;using (Transaction tr = db.TransactionManager.StartTransaction()){// 命名对象字典DBDictionary nod = tr.GetObject(db.NamedObjectsDictionaryId,OpenMode.ForWrite) as DBDictionary;// 查找自定义数据if (nod.Contains("MyData")){ObjectId myDataId = nod.GetAt("MyData");Xrecord myXrecord = tr.GetObject(myDataId, OpenMode.ForRead) as Xrecord;foreach (TypedValue tv in myXrecord.Data){doc.Editor.WriteMessage("type: {0}, value: {1}\n", tv.TypeCode, tv.Value);}}}
}

你可以把 NOD 看成是存储文档级别自定义数据的地方。
如果你需要为一些特定的图元存储一些关联数据,可以考虑使用扩展字典。

本篇文章翻译+加工自:
How can I store my custom information in a dwg file?

AutoCAD .Net 在dwg文件中存储自定义数据相关推荐

  1. Inventor文件中保存自定义数据 - 1

    在一些工作流中,需要对文件本身附加一些数据,对最终用户不可见,便于下游的使用.Inventor API提供了三种方式: 1. iProperties  2. Attribute  3. IStorag ...

  2. Inventor文件中保存自定义数据 - 2

    第二种方式是Attribute.我们叫做属性,和iPRoperties以示区别.很多Inventor对象都提供了添加属性的功能,包括文档.属性的操作也有大量文章,本文推荐两个材料: 第一是帮助文档.专 ...

  3. 如何使用python提取dwg文件中的坐标信息

    如果要使用 Python 提取 DWG 文件中的坐标信息,你需要使用专业的 CAD 读取工具,例如 Autodesk AutoCAD.Teigha File Converter 等.这些工具可以将 D ...

  4. 读取DWG文件中的文本信息(CAD2004)

    还是那句话,工作需要,不然是不会研究这个的.也许有的人会遇到跟我一样的问题,有兴趣看看,可以节约点时间.运行时要引用CAD2004的COM,这种读取文本的方式并不好,需要机器上装有AUTOCAD200 ...

  5. js html保存json,如何在json文件中存储jQuery或javascript变量?

    我可以知道有没有机会将jquery变量保存在json文件中?提前致谢.如何在json文件中存储jQuery或javascript变量? 我: var image='/test/test.png'; 我 ...

  6. 集合中存储自定义对象源代码

    集合中存储自定义对象: package attention;import java.util.ArrayList; import java.util.Collection; import java.u ...

  7. 本实例演示往TreeSet集合中存储自定义对象

    1 package JiHe.Set; 2 3 import java.util.Iterator; 4 import java.util.TreeSet; 5 6 /* 7 * 本实例演示往Tree ...

  8. DWG文件中怎么插入jpg

    DWG文件中怎么插入JPG,我们在进行DWG文件阅读的时候有的时候会需要在DWG文件中插入JPG,这个问题可是难倒了很多人,其实在DWG文件中插入JPG不是一件难的事情,只要我们用对软件就可以在DWG ...

  9. python在dwg文件中输入文字

    你可以使用 Python 中的 ezdxf 库来在 dwg 文件中输入文字. 首先,安装 ezdxf 库: pipinstall ezdxf 然后,你可以使用以下代码在 dwg 文件中添加文字: im ...

最新文章

  1. Ubuntu 14.04 64位上安装Valgrind 3.13.0 操作步骤
  2. PowerDesigner与Rose详解教程
  3. python学习(1)
  4. 如何用产品思维找到意中人?
  5. Java集合框架总结(5)——Map接口的使用
  6. 968. Binary Tree Cameras 监控二叉树
  7. 深度学习笔记(49) 风格代价函数
  8. 数据:以太坊2.0合约24小时新增2.04万ETH
  9. android与ndk交互,NDK-JNI与Java的交互 hello-world
  10. Linux中DHCP主配置文件解析
  11. 不断网情况下,如何关闭红蜘蛛多媒体网络教室
  12. FLV无损转换MP4
  13. C++ 中如何区分std::endl、std::ends、std::flush的差异性
  14. jQuery 模态框
  15. maven.类包冲突解决案例
  16. matlab三个商人三个随从,商人们怎样安全过河 (附MATLAB程序完整)
  17. Android用命令行查看手机架构
  18. android aar 自动引入依赖
  19. adf被打开_HP Laserjet M1522nf 出现ADF门打开 是什么意思
  20. 去掉word页眉上横线的技巧

热门文章

  1. cd命令及逻辑图、文档的制作、IP-端口-协议基本概念学习
  2. 【人工智能】基于百度AI和Python编程的简单实现:通过QQ/Tim截图进行文本识别功能的分析实战详解——以获取百度文库付费内容为例
  3. Scala 函数式编程原理 第四课(Conditions and Value Definitions)
  4. layui上传文件时显示正在加载
  5. 蓝牙扫描 权限 BLUETOOTH,BLUETOOTH_ADMIN
  6. Android输入系统(三)——InputReader的加工类型和InputDispatcher的分发过程(基于Android 13)
  7. Java高性能高并发实战之页面优化技术(五)
  8. 局域网与广域网,以太网与点对点链路
  9. 决策树——三种基本算法
  10. flash和DDR的概念及解释