明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 843|回复: 0

【转载】AutoCAD二次开发(.Net)之DBDictionary信息的添加与获取

[复制链接]
发表于 2024-9-6 09:53:50 | 显示全部楼层 |阅读模式
本帖最后由 qq1254582201 于 2024-9-6 09:55 编辑
  1. [CommantMethod("ADDINI")]
  2.         public static void AddIni()
  3.         {
  4.             try
  5.             {
  6.                 Document doc = Application.DocumentManager.MdiActiveDocument;
  7.                 Database db = doc.Database;
  8.                 using (Transaction tr = db.TransactionManager.StartTransaction())
  9.                 {
  10.                     DBDictionary NOD =(DBDictionary)tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead);
  11.                     DBDictionary dict;//作为主字典中INI键的值
  12.                     if (NOD.Contains("INI"))
  13.                     {
  14.                         dict = (DBDictionary)tr.GetObject(NOD.GetAt("BLSZ"), OpenMode.ForWrite);
  15.                     }
  16.                     else
  17.                     {
  18.                         dict = new DBDictionary();
  19.                         NOD.UpgradeOpen();
  20.                         NOD.SetAt("INI", dict);
  21.                         tr.AddNewlyCreatedDBObject(dict, true);
  22.                     }
  23.                     ResultBuffer resBuf = new ResultBuffer();
  24.                     resBuf.Add(new TypedValue((int)DxfCode.Text, "A"));
  25.                     resBuf.Add(new TypedValue((int)DxfCode.Text, "B"));
  26.                     Xrecord xRec = new Xrecord();
  27.                     xRec.Data = resBuf;
  28.                     dict.SetAt("INIS", xRec);
  29.                     tr.AddNewlyCreatedDBObject(xRec, true);
  30.                     tr.Commit();
  31.                 }
  32.             }
  33.             catch {
  34.             }
  35.         }
  36.         [CommandMethod("GETINI")]
  37.         public static void  GetINI()
  38.         {
  39.             try
  40.             {
  41.                 Document doc = Application.DocumentManager.MdiActiveDocument;
  42.                 Database db = doc.Database;
  43.                 Edotor ed=doc.Editor;
  44.                 using (Transaction tr = db.TransactionManager.StartTransaction())
  45.                 {
  46.                     DBDictionary NOD = (DBDictionary)tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead);
  47.                     if (NOD.Contains("INI"))
  48.                     {
  49.                         DBDictionary dict = tr.GetObject(NOD.GetAt("INI"), OpenMode.ForRead) as DBDictionary;
  50.                         Xrecord xRec = tr.GetObject(dict.GetAt("INIS"), OpenMode.ForRead) as Xrecord;//获取值
  51.                         foreach (var xdata in xRec.Data)
  52.                         {
  53.                             ed.WriteMessage(xdata.Value.ToString()+"\n");
  54.                         }
  55.                     }

  56.                 }
  57.             }
  58.             catch{
  59.             }
  60.         }           
  61. 原文链接:https://blog.csdn.net/qq_21489689/article/details/79061759

原文链接:https://blog.csdn.net/qq_21489689/article/details/79061759
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 20:21 , Processed in 0.166893 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表