Completely untested, but this may be worth trying out. Sure looks like a good way to crash Rhino
static unsafe double[][] FastVerts(Mesh mesh)
{
using (var meshAccess = mesh.GetUnsafeLock(false))
{
int arrayLength;
Point3f* points = meshAccess.VertexPoint3fArray(out arrayLength);
var double2DArray = new double[3][];
double2DArray[0] = new double[arrayLength];
double2DArray[1] = new double[arrayLength];
double2DArray[2] = new double[arrayLength];
for( int i=0; i<arrayLength; i++ )
{
double2DArray[0][i] = points->X;
double2DArray[1][i] = points->Y;
double2DArray[2][i] = points->Z;
points++;
}
return double2DArray;
}
}