Project point on Curve

The point and the projection vector define a line. Use the Intersections.CurveCurve function as follows:

Curve crv; // defined elsewhere
Point3d point; // defined elsewhere
Vector3d direction; // projection direction, defined elsewhere
Line l = new Line(point, direction);
l.ExtendThroughBox(c.GetBoundingBox(true));
CurveIntersections x = Intersection.CurveCurve(c, l.ToNurbsCurve(), tolerance, tolerance);