long handle = -4066801656873546453;
Handle hn = new Handle(handle);
ObjectId blockId = sideDb.GetObjectId(false, hn, 0); // Crashes here!
using (var transaction = db.TransactionManager.StartTransaction())
{
var layoutEntries = transaction.GetObject(db.LayoutDictionaryId, OpenMode.ForRead) as DBDictionary;
foreach (DBDictionaryEntry layoutEntry in layoutEntries)
{
var layout = transaction.GetObject(layoutEntry.Value, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Layout;
var fileRecords = transaction.GetObject(layout.BlockTableRecordId, OpenMode.ForRead) as BlockTableRecord;
foreach (ObjectId id in fileRecords)
{
var blockRef = transaction.GetObject(id, OpenMode.ForRead) as BlockReference;
var handle = blockRef.Handle.Value,
var name = blockRef.Name,
...
}
}
transaction.Abort();
}
long ln = Convert.ToInt64(pr.StringResult, 16);
db.TryGetObjectId(new Handle(longHandle), out var id);
where TryGetObjectId fails even on valid and existing object handles in specific situations.