- 积分
- 990
- 明经币
- 个
- 注册时间
- 2011-8-27
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
用Database.ReadDwgFile(savefilename, FileShare.ReadWrite, false, "")后台打开一个dwg文件,遍历dwg文件中的对象,找出图层名为“layername”的对象,全部删除,然后删除该图层。最后用DataBase.saveas()进行保存。发现保存的dwg文件中,这个图层被删除了,但是图层里面的对象却还在,而这些对象的图层名为空。
代码如下:
Database myDB = new Database(false, true);
myDB.ReadDwgFile(savefilename, FileShare.ReadWrite, false, "");
using (Transaction myTrans = myDB.TransactionManager.StartTransaction())
{
LayerTable lt = (LayerTable)myTrans.GetObject(myDB.LayerTableId, OpenMode.ForWrite);
LayerTableRecord ltr = (LayerTableRecord)myTrans.GetObject(lt[layername], OpenMode.ForWrite);
DBObjectCollection myObjectCollection = trans.GetAllObjects();
DBObject[] myObjexts = new DBObject[myObjectCollection.Count];
myObjectCollection.CopyTo(myObjexts, 0);
myObjectCollection.Clear();
myObjectCollection.Dispose();
foreach (DBObject sSetEntId in myObjexts)
{
Entity myEntity = (Entity)trans.GetObject(sSetEntId.ObjectId, OpenMode.ForWrite);
if (myEntity.Layer == layername)
{
myEntity.ReleaseExtensionDictionary();
sSetEntId.Erase(true);
myEntity.Erase();
myEntity.Database.Dispose();
}
myEntity.Dispose();
}
ltr.Erase(true);
ltr.Dispose();
lt.Dispose();
trans.Commit();
trans.Dispose();
}
myDB.SaveAs("D:\\test.dwg", DwgVersion.Current);
myDB.CloseInput(true);
myDB.Dispose();
|
|