using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using System.Collections.Generic;
namespace BAC
{
public class CommandClass
{
/// <summary>
/// Таблица перекодировки текстов
/// </summary>
static Dictionary<string, string> tabTrans = new Dictionary<string, string>()
{
{ "Дата", "DATE" },
{ "Черт.", "DRN"},
{ "РуссТекст1", "EngText1"},
{ "РуссТекст2", "EngText2"},
{ "РуссТекст3", "EngText3"}
};
[CommandMethod("VJUH")]
public void RunCommand()
{
Document adoc = Application.DocumentManager.MdiActiveDocument;
if (adoc == null)
return;
Editor ed = adoc.Editor;
Database db = adoc.Database;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
if (!bt.Has("A3FRAME_1"))
{
tr.Commit();
return;
}
BlockTableRecord btr = tr.GetObject(bt["A3FRAME_1"], OpenMode.ForRead) as BlockTableRecord;
foreach (ObjectId Id in btr)
{
// DBText changing
if (Id.ObjectClass == RXObject.GetClass(typeof(DBText)))
{
DBText text = tr.GetObject(Id, OpenMode.ForRead) as DBText;
// Ищем соотвествие текста по таблице
string engText = null;
if (tabTrans.TryGetValue(text.TextString, out engText))
{
// Если соотвествующий текст нашли - заменяем
text = tr.GetObject(Id, OpenMode.ForWrite) as DBText;
text.TextString = engText;
}
}
}
tr.Commit();
}
ed.Regen();
}
}
}