Пока непонятное поведение SetField(). при первом вызове обновляет, дальше - нет. DowngradeOpen() не влияет.
возможно тебе поможет, после изменения в блоке, пометить принудительно, что графика выбранного блока была изменена.
...
blRef.RecordGraphicsModified(true);
t.Commit();
Блок будет помечен как измененный, но не обязательно перерисуется сам.
тогда попробуй вызвать регенерацию после закрытия транзакции
using (var t = db.TransactionManager.StartTransaction())
{
...
}
ed.Regen();
..если это не поможет попробуй пометить еще и атрибуты внутри блока как измененные(как написал Александр)
var atrRef = idAtr.GetObject(OpenMode.ForRead) as DBText;
if (atrRef.HasFields)
{
}
atrRef.RecordGraphicsModified(true);