Описанный метод хорошо работает, когда надо определить количество точек пересечения. Но надо учитывать,что
1. в методе содержится очень длинный цикл
2. точки находит приблизительно, они не лежат на кривой. Соответственно Curve.GetParameterAtPoint выдаст eGeneralModelingError. А Curve.GetClosestPointTo тоже нерабочий у сплайнов (всегда выдает конечные точки сплайна).
Поэтому логично сначала использовать метод проецирования кривой, затем метод подмены проекции на линию и только если ничего не работает - тогда уже пробовать линейную аппроксимацию.