Because the midpoint of Domain is not equal to the midpoint of the length，If you want to find the midpoint of the curve, you can use the CurveMidPoint () function.

It’s recommended to stay away from rs.EvaluateCurve, unless you unitise/reparameterise first. If you don’t, I believe that you get a parameter t from something similar to a closest point.
I prefer to use your_curve.PointAtNormalizedLength(0.5), and for your example it gets you the exact point that the MidPt component proposes.

I believe to remember from a while ago, that if you use 0.5 to get a mid point with rs.EvaluateCurve, it will not necessarily be the curve middle, but the middle of the knot vector, whereas 0.5 on normalised length is going to be the actual curve mid point.

I don’t need evaluate curve but i need : rs.CurveFrame(C,t)
It give different result than horizontal frames components.
rs.EvaluateCurve and rs.CurveFrame give the same results, that’s why i want understand where is the problem?

The problem is Cause the midpoint of Domain is not equal to the midpoint of the length，You should look at the meaning of the parameter t.For example you can use rs.DivideCurve () function，or curve.NormalizedLengthParameters ().