We use the following code to evaluate an edge:
const ON_BrepEdge * prnEdge = …;
ON_Interval rnCurveInterval = prnEdge->Domain();
const ON_Curve* prnCurve = ON_Curve::Cast(prnEdge)

// for a dT within rnCurveInterval

double rgdPosition[6];
prnCurve->Evaluate(dT, 1, 3, rgdPosition);

There is a bug with the code as the edge domain may not be the same as the curve domain. Could Rhino make some correction to the code?

You should just do this:

prnEdge->Evaluate(dT, 1, 3, rgdPosition);

– Dale