乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 68|回复: 5

爆炸/删除. net-Code上的EXPRTTOAUTOCAD等民用“代理”

[复制链接]

14

主题

32

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2015-3-12 05:10:25 | 显示全部楼层 |阅读模式

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

14

主题

32

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2015-3-16 05:02:55 | 显示全部楼层
作为变体-您可以爆炸并删除所有代理对象和代理实体(不仅限于民事)。这是一个屏幕和附加的zip文件。
回复

使用道具 举报

14

主题

32

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2015-3-18 05:12:54 | 显示全部楼层
您好安德烈,
很抱歉这么晚才回复。
您Dll可以在普通的AutoCAD上工作,并在Civil上创建DWG。
命令“proxy”发现了超过2000个代理对象,而“rmproxy”删除了这些对象。
但是Civil-files的创建者只有Civil,并且在具有相同文件的Civil上
找到了“代理”-命令无代理。嗯...并不比我以前聪明...
问候马里奥
回复

使用道具 举报

14

主题

32

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2015-3-18 05:24:02 | 显示全部楼层
你好,安德烈...这就是问题所在。
我必须搜索“AEC”(Civil)对象,并在运行Civil时分解或删除它
,如EXPORTTOAUTOCAD -命令。但是,我如何检测DWG上的AEC/Civil对象呢?问候马里奥
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2015-3-20 11:25:18 | 显示全部楼层
您好,
我找到了一个解决方案,它可能不是最好的,但它的工作和普通AutoCAD读取dwg没有代理错误。
  1.         public static Boolean cleanCivilObjects()
  2.         {
  3.             Boolean result = false;
  4.             Database acDatabase = HostApplicationServices.WorkingDatabase;
  5.             using (Transaction acTransaction = acDatabase.TransactionManager.StartTransaction())
  6.             {                       
  7.                 // 1. clean Named Object Dictionary
  8.                 // Namepattern for search StartsWith
  9.                 List badNamedObjPattern = new List() { "{24de2741", "ade_", "aec_", "autodesk_map", "gwsundorecorder", "root" };
  10.                 List deleteDictEntry = new List();
  11.                 DBDictionary acNamedObjectDict = (DBDictionary)acTransaction.GetObject(acDatabase.NamedObjectsDictionaryId, OpenMode.ForWrite);
  12.                 foreach (DBDictionaryEntry acNamedItem in acNamedObjectDict)
  13.                 {
  14.                     foreach (String namePattern in badNamedObjPattern)
  15.                     {
  16.                         if (acNamedItem.Key.ToLower().StartsWith(namePattern))
  17.                         {
  18.                             deleteDictEntry.Add(acNamedItem.Key);
  19.                             break;
  20.                         }
  21.                     }
  22.                 }
  23.                 if (deleteDictEntry.Count > 0)
  24.                 {
  25.                     foreach (String delName in deleteDictEntry)
  26.                     {
  27.                         acNamedObjectDict.Remove(delName);
  28.                     }
  29.                 }
  30.                 // 2. clean RegAppTable
  31.                 // Namepattern for search StartsWith
  32.                 List badNamePattern = new List() { "acmap", "ade", "aecc", "acaec", "dco", "map" };
  33.                 RegAppTable acRegAppTable = (RegAppTable)transaction.GetObject(acDatabase.RegAppTableId, OpenMode.ForRead);
  34.                 ObjectIdCollection objectIdsToDelete = new ObjectIdCollection();
  35.                 foreach (ObjectId acRATRId in acRegAppTable)
  36.                 {
  37.                     RegAppTableRecord acRegAppTableRecord = (RegAppTableRecord)acTransaction.GetObject(acRATRId, OpenMode.ForRead);
  38.                     if (acRegAppTableRecord != null)
  39.                     {
  40.                         foreach (String namePattern in badNamePattern)
  41.                         {
  42.                             if (acRegAppTableRecord.Name.ToLower().StartsWith(namePattern))
  43.                             {
  44.                                 if (!objectIdsToDelete.Contains(acRegAppTableRecord.Id))
  45.                                     objectIdsToDelete.Add(acRegAppTableRecord.Id);
  46.                                 break;
  47.                             }
  48.                         }
  49.                     }
  50.                 }
  51.                 // delete all Objects
  52.                 if (objectIdsToDelete.Count > 0)
  53.                 {
  54.                     DBObject acDBObject;
  55.                     foreach (ObjectId acObjectId in objectIdsToDelete)
  56.                     {
  57.                         acDBObject = acTransaction.GetObject(acObjectId, OpenMode.ForWrite);
  58.                         acDBObject.Erase(true);
  59.                     }
  60.                 }
  61.                 acTransaction.Commit()
  62.                 result = true;
  63.             }
  64.             return result;
  65.         }

重要!
您没有保存包含文档的数据库。CloseAndSave(fileName)" 该函数再次包括“bad-civil-Objects”。
如果使用“数据库”保存数据库。SaveAs(filename)“工作正常。问候马里奥
回复

使用道具 举报

14

主题

32

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2015-3-24 06:04:48 | 显示全部楼层

这个最近的线程可能有用:
干杯
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 03:52 , Processed in 0.153483 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表