Кстати, самое смешное, что простейший способ получить все дуги и отрезки из полилинии - использовать метод Explode для неё. Ну а взять i-ый элемент из коллекции отрезков и дуг, на которые разваливается полилиния, совсем не проблема. Не забудь только для остальных примитивов, полученных в результате расчленения вызвать метод Dispose(). Думаю что этот метод будет не слишком быстрый и использовать его при массовых вычислениях не стоит.