Спасибо за подсказку. Но мне нужно было вернуть значение имени из списка вставленных блоков - "INSERT" из которых нет динамических (IsDynamicBlock = false). Я в итоге нашел метод блока .DynamicBlockTableRecord, который возвращает id его динамической копии из таблицы блоков модели. И присвоил ему имя этой копии.
using(Transaction tr=doc.TransactionManager.StartTransaction())
{
List<BlockReference> br=new List<BlockReference>();
string str=null;
PromptSelectionResult psr = ed.GetSelection();
if(psr.Status== PromptStatus.OK)
{
foreach(ObjectId obj in psr.Value.GetObjectIds())
{
if(obj.ObjectClass.DxfName=="INSERT")
{
BlockReference blref = (BlockReference)tr.GetObject(obj,OpenMode.ForRead);
br.Add(blref);
}
}
BlockTable bt = (BlockTable)tr.GetObject(doc.Database.BlockTableId,OpenMode.ForRead);
foreach(ObjectId obj in bt)
{
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(obj,OpenMode.ForRead);
if(br.Exists(delegate(BlockReference b){return b.DynamicBlockTableRecord==btr.ObjectId;}))
{
str+="\n" + btr.Name + ": " +
br.Count(delegate(BlockReference b){return b.DynamicBlockTableRecord==btr.ObjectId;});
}
}
MessageBox.Show(str);
}
tr.Commit();
}