// Пробуем получить словарь имен для состояний параметров отражения
Dictionary<string, FlipStateNames> flipNamesDict = new Dictionary<string, FlipStateNames>();
AcDb.BlockTableRecord dynBlkTableRec = tr.GetObject(blkReference.DynamicBlockTableRecord, AcDb.OpenMode.ForRead) as AcDb.BlockTableRecord;
if (dynBlkTableRec.ExtensionDictionary != null)
{
AcDb.DBDictionary refDict = tr.GetObject(dynBlkTableRec.ExtensionDictionary, AcDb.OpenMode.ForRead) as AcDb.DBDictionary;
if (refDict.Contains("ACAD_ENHANCEDBLOCK"))
{
AcDb.ObjectId graphId = refDict.GetAt("ACAD_ENHANCEDBLOCK");
List<object> parameterIds = InvokeMethods.acdbEntGetObjects(graphId, 360);
List<AcDb.ObjectId> flipParamsIds = parameterIds.Cast<AcDb.ObjectId>().Where
(item => item.ObjectClass.Name == "AcDbBlockFlipParameter").ToList();
foreach (AcDb.ObjectId id in flipParamsIds)
{
List<AcDb.TypedValue> flipParam = InvokeMethods.acdbEntGetTypedVals(id);
flipNamesDict.Add(
flipParam.Single(item => item.TypeCode == 305).Value.ToString(),
new FlipStateNames()
{
NotFlipped = flipParam.Single(item => item.TypeCode == 307)
.Value.ToString(),
Flipped = flipParam.Single(item => item.TypeCode == 308)
.Value.ToString()
});
}
}
}