为何删除外部文件中的块无效?
最近有一个问题一只没有搞定,我有一段删除块的代码,如果文件已经打开,代码没有任何问题,如果是用来删除外部文件的话,就没用,下面是代码: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, OpenMode.ForWrite) as BlockTableRecord;
btr.Erase(false);
tr.Commit();
}
}
catch (Exception ex)
{
throw ex;
}
return true;
}
而且我还发现一个问题, 如果随便打开这个文件下的另外一个文件后, 再删除又成功了,完全不知道问题出在哪里;下面是动图,有一点大(1.5M)要等一下才可以显示
图片中 我新建一个块到Drawing2这个文件里面, 然后直接删除,是删除失败的,然后我又打开同级目录下面的另外一个文件,打开后不做任何操作,再删除,就可以成功删除了,
望路过的高手不吝赐教, 非常感谢!!!
页:
[1]