Update drawing from external inputs

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi,
I have written below code to update the specific value in Drawing, I am able to update successfully but the issue is when I open the drawing I am getting "Annotations in your drawing are out of date and need to be updated."
Changes in the project or another drawing have caused changes to annotations on your drawing." , Please let me know what I was missed in the below code
string strDwgPath;
// Get the current document and database
Database db = new Database(false, true);
Project currentProject = (PnIdProject)PlantApplication.CurrentProject.ProjectParts["PnId"];
DataLinksManager dlm = currentProject.DataLinksManager;
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
HostApplicationServices hs = HostApplicationServices.Current;
string path = hs.FindFile(doc.Name,doc.Database,FindFileHint.Default);
// get project drawing
PnPProjectDrawing pnp_dwg = currentProject.GetDwgFileByName(path);
// use resolved path
strDwgPath = pnp_dwg.ResolvedFilePath;
db.ReadDwgFile(strDwgPath, FileShare.ReadWrite, false, null);
dlm.EnlistDrawing(db);
// Start a transaction
using (Transaction acTrans = db.TransactionManager.StartTransaction())
{
// use resolved path
strDwgPath = pnp_dwg.ResolvedFilePath;
System.Data.DataTable dt = new System.Data.DataTable();
PnPDatabase dbl = dlm.GetPnPDatabase();
dbl.StartTransaction();
PnPTable tbl = dbl.Tables["Tool"];
PnPRow[] rows = tbl.Select();
PnPColumns cols = tbl.AllColumns;
DataRow dataRow;
foreach (PnPRow p in rows)
{
dataRow = dt.NewRow();
foreach (PnPColumn col in cols)
{
DataColumnCollection columns = dt.Columns;
if (!columns.Contains(col.Name))
{
dt.Columns.Add(col.Name);
}
if (col.Name == "Toolname_l1")
{
p.BeginEdit();
p["ex_LPOC_Assignment"] = "st";
p.EndEdit();
}
dataRow[col.Name] = p[col.Name].ToString();
}
dt.Rows.Add(dataRow);
}
if (currentProject.IsDrawingOutOfSync(strDwgPath, db))
{
PnPSyncConflicts conflicts = null;
currentProject.UpdatePnPDrawing
(db, strDwgPath, ref conflicts);
DataLinksManager.DatabaseToForceSaveComplete = db;
try
{
db.SaveAs(strDwgPath, DwgVersion.Current);
}
catch (System.Exception ex)
{
}
finally
{
DataLinksManager.DatabaseToForceSaveComplete
= null;
}
}
dlm.Upgrade();
dlm.AcceptChanges();
dbl.Upgrade();
acTrans.Commit();