App.Document doc = App.Application.DocumentManager.MdiActiveDocument;
Db.Database db = doc.Database;
Ed.Editor ed = doc.Editor;
Db.ObjectId modelSpaceId = Db.SymbolUtilityServices.GetBlockModelSpaceId(db);
using (Db.Transaction tr = db.TransactionManager.StartTransaction())
{
//Открываем пространство модели
using (var ms = tr.GetObject(modelSpaceId, Db.OpenMode.ForRead) as Db.BlockTableRecord)
{
//Перебираем все объекты в модели
foreach (Db.ObjectId entId in ms)
{
//если не блок, то пропускаем
if (entId.ObjectClass != Rtm.RXObject.GetClass(typeof(Db.BlockReference))) continue;
Db.ObjectId btrId = Db.ObjectId.Null;
//Открываем блок и получаем ссылку на его описание
using (var br = tr.GetObject(entId, Db.OpenMode.ForRead) as Db.BlockReference)
{
btrId = br.BlockTableRecord;
}
//Открывает описание блока
using (var btr = tr.GetObject(btrId, Db.OpenMode.ForRead) as Db.BlockTableRecord)
{
//Перебираем содержимое описания блока
foreach (Db.ObjectId id in btr)
{
//Если это не текст, то пропускаем
if (id.ObjectClass != Rtm.RXObject.GetClass(typeof(Db.MText))) continue;
//Открываем текст и получаем его содержимое
using (var mtext = tr.GetObject(id, Db.OpenMode.ForRead) as Db.MText)
{
//Содержимое текста
string text = mtext.Contents.ToString();
}
}
}
}
}
tr.Commit();
}