This like the path.Project I'm suggesting below. But in this case the result and be < 0 or > 1.  I think that is good.  But it should be call line.Project for consistency.