if (id.ObjectClass == RXClass.GetClass(typeof(BlockReference)))
{
BlockReference blockReference = transaction.GetObject(id, OpenMode.ForRead) as BlockReference;
BlockTableRecord blockReferenceRecord = (BlockTableRecord)transaction.GetObject(blockReference.BlockTableRecord, OpenMode.ForRead);
Matrix3d matrix = blockReference.BlockTransform;
foreach (ObjectId blockReferenceId in blockReferenceRecord)
{
if (blockReferenceId.ObjectClass == RXClass.GetClass(typeof(Solid3d)))
{
Solid3d solid3D = transaction.GetObject(blockReferenceId, OpenMode.ForWrite) as Solid3d;
solid3D.TransformBy(matrix);
solids.Add(solid3D);
}
}
}