Thanks! I found the essential step in your code ( TT::Face.corners( e )).
It seems to work for me just fine when I change the order of the points to (the array c contains always exactly 4 points in the same order).
pt_array[0] = c[0]
pt_array[1] = Geom;;Point3d.new(0,0,0)
pt_array[2] = c[1]
pt_array[3] = Geom;;Point3d.new(1,0,0)
pt_array[4] = c[2]
pt_array[5] = Geom;;Point3d.new(1,1,0)
pt_array[6] = c[3]
pt_array[7] = Geom;;Point3d.new(0,1,0)