明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1793|回复: 6

已解决如何获取当前数据库中的所有表格样式,并删除其中除了指定的样式ID或样式名外

[复制链接]
发表于 2009-12-17 17:13 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-12-18 12:55:03 编辑

已解决如何获取当前数据库中的所有表格样式,并删除其中除了指定的样式ID或样式名外的所有表格样式?[br]RT
发表于 2009-12-17 17:40 | 显示全部楼层

Database.TableStyleDictionaryId Property

Accesses the object ID of the table style dictionary in named object dictionary.

 楼主| 发表于 2009-12-17 18:55 | 显示全部楼层

DBDictionary dbd = (DBDictionary)trans.GetObject(db.TableStyleDictionaryId, OpenMode.ForWrite);用这个吗?

这个的话该如何遍历呢?比如我要删除数据库中除了Id为 000 的TableStyle之外的所有TableStyle改怎么写C#代码

发表于 2009-12-17 19:07 | 显示全部楼层
组字典用过么,用法应该是类似的
 楼主| 发表于 2009-12-17 19:24 | 显示全部楼层
汗,提问的时候着急了,结果问题问错了,我要问的是怎么获取所有表格样式,获取之后如何遍历,查询出其中与所给样式相同的ID,并把其余的删掉;用GetAt()方法只是获取ID,改如何遍历呢
发表于 2009-12-17 19:48 | 显示全部楼层
组的遍历,参考下吧
  1.             foreach (DBDictionaryEntry obj in _gd)
  2.             {
  3.                 Group g =
  4.                     (Group)_tr.GetObject(
  5.                     obj.Value,
  6.                     OpenMode.ForRead,
  7.                     false);
  8.             }
复制代码
 楼主| 发表于 2009-12-18 12:53 | 显示全部楼层
3Q  已经解决了 附上代码
  1. #region 删除图纸上多余的表格样式
  2.         /// <summary>
  3.         /// 删除图纸上多余的表格样式
  4.         /// </summary>
  5.         private void DelOtioseTableStyle()
  6.         {
  7.             List<string> idList = new List<string>();
  8.             Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  9.             Database db = doc.Database;
  10.             Editor ed = doc.Editor;
  11.             TypedValue[] tableFilter = new TypedValue[] {
  12.                 new TypedValue((int)DxfCode.Start,"ACAD_TABLE")
  13.             };
  14.             SelectionFilter filter = new SelectionFilter(tableFilter);
  15.             PromptSelectionResult res = ed.SelectAll(filter);
  16.             SelectionSet sSet = res.Value;
  17.             using (Transaction trans = db.TransactionManager.StartTransaction())
  18.             {
  19.                 try
  20.                 {
  21.                     ObjectId[] ids = sSet.GetObjectIds();
  22.                     foreach (ObjectId id in ids)
  23.                     {
  24.                         Table table = (Table)trans.GetObject(id, OpenMode.ForWrite);
  25.                         TableStyle ts = (TableStyle)trans.GetObject(table.TableStyle,OpenMode.ForWrite);
  26.                         idList.Add(ts.Name);
  27.                     }
  28.                     DBDictionary dbd = (DBDictionary)trans.GetObject(db.TableStyleDictionaryId, OpenMode.ForWrite);
  29.                     foreach (DBDictionaryEntry obj in dbd)
  30.                     {
  31.                         TableStyle ts = (TableStyle)trans.GetObject(obj.Value,OpenMode.ForWrite);
  32.                         string s = ts.Name;
  33.                         bool flag = true;
  34.                         foreach (string name in idList)
  35.                         {
  36.                             if (s == name)
  37.                             {
  38.                                 flag = false;
  39.                                 break;
  40.                             }
  41.                         }
  42.                         if (flag)
  43.                         {
  44.                             if (s.Length > 21 && s.Substring(0, 21) == "GYCAD_Bom_TableStyle_")
  45.                             {
  46.                                 dbd.Remove(s);
  47.                             }
  48.                         }
  49.                     }
  50.                 }
  51.                 catch
  52.                 { }
  53.                 trans.Commit();
  54.                 trans.Dispose();
  55.             }
  56.         }
  57.         #endregion
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 03:04 , Processed in 0.183863 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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