private void Metavue_Click(object sender, EventArgs e)
{
Document doc = AcadApp.DocumentManager.MdiActiveDocument;
bool Ok2Continue = true;
for (int i = 0; i < dwgLst_purger.Count; i++)
{
Database db
= new Database
(false,
true); using (db)
{
db.RetainOriginalThumbnailBitmap = true;
string fileName = dwgLst_purger.GetKey(i).ToString();
try { db.ReadDwgFile(fileName, FileShare.ReadWrite, false, ""); }
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
Ok2Continue = false;
}
HostApplicationServices.WorkingDatabase = db;
if (Ok2Continue)
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
// IF I REMOVE FROM HERE (GO DOWN COUPLE LINE)
DBDictionary layoutDict = (DBDictionary)tr.GetObject(db.LayoutDictionaryId, OpenMode.ForWrite);
foreach (DictionaryEntry layoutEntry in layoutDict)
{
Layout layoutObj = (Layout)tr.GetObject((ObjectId)(layoutEntry.Value), OpenMode.ForWrite);
if (layoutObj.LayoutName == "Model") continue;
LayoutManager.Current.CurrentLayout = layoutObj.LayoutName;
ObjectIdCollection objs = layoutObj.GetViewports();
int nCnt = 0;
foreach (ObjectId obj in objs)
{
if (nCnt++ == 0) continue;
Viewport vp = (Viewport)tr.GetObject(obj, OpenMode.ForWrite);
vp.Locked = true;
}
}
layoutDict.Dispose();
// TO HERE, IT'S WORKING FINE, SO THE PROBLEM IS SOMEWHERE THERE BUT I DON'T SEE WHAT I'M DOING WRONG
tr.Commit();
}
}
try
{
db.SaveAs(fileName, true, db.OriginalFileVersion, db.SecurityParameters);
}
catch
{
MessageBox.Show("Le dessin " + fileName + " est ouvert. Aucune modification faite sur ce dessin.", "Erreur");
}
} // ----------------- IT GET STUCK HERE
db.Dispose();
}
HostApplicationServices.WorkingDatabase = doc.Database;
MessageBox.Show("Traitement terminé");
}