I know this is a bad method but it works fine
I've just added few lines of code
and try ... catch code block
internal void GT_TitleBlocks_TagFix(string sBlockName)
{
Document acDWG = AcadApp.DocumentManager.MdiActiveDocument;
Database acDB = acDWG.Database;
Editor ed = acDWG.Editor;
Dictionary<string, string> dTags = new Dictionary<string, string>();
using (DocumentLock dcolock = acDWG.LockDocument())
{
using (Transaction acTrans = acDB.TransactionManager.StartTransaction())
{
try
{
BlockTable acBT = acTrans.GetObject(acDB.BlockTableId, OpenMode.ForRead) as BlockTable;
if (!acBT.Has(sBlockName))
return;
BlockTableRecord acBTR = acTrans.GetObject(acBT[sBlockName], OpenMode.ForWrite) as BlockTableRecord;
if (acBTR.Name == "A3-TITLE")
{
dTags.Add("PROJECT TITLE", "PROJECT");
dTags.Add("ADDRESS LINE", "ADDRESS");
dTags.Add("CLIENT NAME", "CLIENT");
dTags.Add("SHEET TITLE", "TITLE");
dTags.Add("PROJECT NUMBER", "JOB");
dTags.Add("SHEET NUMBER", "SHT");
dTags.Add("ISSUE SUFFIX", "ISSUE");
dTags.Add("CAD FILE NAME", "CADFILE");
}
else
{
dTags.Add("DRAWING NUMBER", "SHT");
dTags.Add("SHEET TITLE LINE 1", "TITLE1");
dTags.Add("SHEET TITLE LINE 2", "TITLE2");
dTags.Add("DRAWN BY", "DRAWN");
dTags.Add("DATED", "DATE");
dTags.Add("SCALES", "SCALE");
dTags.Add("JOB NUMBER", "JOB");
dTags.Add("PROJECT TITLE", "PROJECT");
dTags.Add("ADDRESS LINE 1", "ADDRESS1");
dTags.Add("ADDRESS LINE 2", "ADDRESS2");
dTags.Add("ADDRESS LINE 3", "ADDRESS3");
}
foreach (ObjectId acID in acBTR)
{
Entity acE = acTrans.GetObject(acID, OpenMode.ForRead, false) as Entity;
if (acE is AttributeDefinition)
{
AttributeDefinition acAD = acE as AttributeDefinition;
foreach (string sPrompt in dTags.Keys)
{
if (acAD.Prompt.ToUpper() == sPrompt.ToUpper())
{
acAD.UpgradeOpen();
acAD.Tag = dTags[sPrompt];
}
}
}
}
acTrans.Commit();
string command = "_ATTSYNC N " + sBlockName + Environment.NewLine + Environment.NewLine;
[color=red]acDWG.SendStringToExecute(command,true,false,false);[/color]
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
ed.WriteMessage("\n{0}", ex.StackTrace);
}
}
}
}