public static string GetEffectiveName(this Db.BlockReference br)
{
string result = "NAN";
Db.ObjectId id = br.BlockTableRecord;
if (br.IsDynamicBlock)
id = br.DynamicBlockTableRecord;
using (Db.BlockTableRecord btr = id.Open(Db.OpenMode.ForRead, true) as Db.BlockTableRecord)
result = btr.Name;
return result;
}