本帖最后由 zjh2785 于 2018-12-8 21:08 编辑
最近有一个问题一只没有搞定,我有一段删除块的代码,如果文件已经打开,代码没有任何问题,如果是用来删除外部文件的话,就没用,下面是代码:
- public static bool DeleteBlock(string path, string fileName, string blockName)
- {
- bool result;
- using (Database db = new Database(false, true))
- {
- db.ReadDwgFile(path + "\\" + fileName, System.IO.FileShare.Read, false, "");
- db.CloseInput(true);
- result = db.DeleteBlock(blockName);
- db.SaveAs(fileName, DwgVersion.AC1024);
- }
- return result;
- }
- public static bool DeleteBlock(this Database db, string blockName)
- {
- try
- {
- using (Transaction tr = db.TransactionManager.StartTransaction())
- {
- BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
- if (!bt.Has(blockName))
- {
- return false;
- }
- BlockTableRecord btr = tr.GetObject(bt[blockName], OpenMode.ForWrite) as BlockTableRecord;
- btr.Erase(false);
- tr.Commit();
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- return true;
- }
而且我还发现一个问题, 如果随便打开这个文件下的另外一个文件后, 再删除又成功了, 完全不知道问题出在哪里;下面是动图,有一点大(1.5M)要等一下才可以显示
图片中 我新建一个块到Drawing2这个文件里面, 然后直接删除,是删除失败的, 然后我又打开同级目录下面的另外一个文件,打开后不做任何操作, 再删除,就可以成功删除了,
望路过的高手不吝赐教, 非常感谢!!!
|