Всем доброго дня!
Меняю на чертеже текст однострочного элемента с помощью такого метода:
public void ReplaceText(FCheckRefDialog.CDocumentsInfo docInf, string text)
{
ZoomDynamic.ZoomObject(docInf.ObjId, 60);
Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.
MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
Entity en = acTrans.GetObject(docInf.ObjId, OpenMode.ForWrite) as Entity;
if (docInf.dt == DataType.DBText)
{
DBText dbText = (DBText)en;
dbText.TextString = text;
}
acTrans.Commit();
}
}
Новое значение текста отображается только, если первый оператор метода - ZoomDynamic.ZoomObject(docInf.ObjId, 60);
Если закомментировать этот оператор, текст элемента на чертеже не меняется.
После этого я выделяю часть теста с помощью подчеркивания.
public void SelectItem(FCheckRefDialog.CDocumentsInfo docInf)
{
ZoomDynamic.ZoomObject(docInf.ObjId, 60);
Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.
MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
Entity en = acTrans.GetObject(docInf.ObjId, OpenMode.ForWrite) as Entity;
if (docInf.dt == DataType.DBText)
{
DBText dbText = (DBText)en;
dbText.TextString = dbText.TextString.Replace(docInf.designation,
"%%u" + docInf.designation + "%%u");
}
acTrans.Commit();
}
}
При этом показывается старое значение текста, до замены.
Где я не прав?
Спасибо.