zjh2785 发表于 2018-12-8 20:24:00

为何删除外部文件中的块无效?

最近有一个问题一只没有搞定,我有一段删除块的代码,如果文件已经打开,代码没有任何问题,如果是用来删除外部文件的话,就没用,下面是代码:
      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]
查看完整版本: 为何删除外部文件中的块无效?