Тема: Объединение линий в одну полилинию
Здравствуйте, коллеги.
Есть вопрос по Autocad .Net API C#.
Задача.
Имеется полилиния (Polyline), содержащая прямолинейные участки и дуги.
Имеется вторая полилиния, скорее всего прямолинейная, но в общем случае необязательно.
Требуется второй линией разбить первую, т.е. добавить дополнительные узлы в точках пересечения линий.
Решаю следующим образом.
1. Методом Curve.IntersectWith() получаю точки пересечения, для проверки рисую в этих точках окружности красным цветом - да, точки пересечения найдены верно.
2. Методу Curve.GetSplitCurves() подсовываю полученные точки и получаю разбитую поллинию, для проверки рисую эти линии желтым - отлично, похоже на правду, пол задачи решено.
3. Пытаюсь объединить кусочки полилинии обратно в целую полилинию, вызываю метод Polyline.JoinEntities(), получаю исключение.
Не спрашивайте какое исключение, оно не информативное, ничего полезного не сообщает. Пробовал из исходной кривой исключать дуги, пробовал в качестве обеих полилиний использовать два простых отрезка - ничего не помогает.
4. Стал искать информацию по JoinEntities() на форуме автодеск, действительно проблема существует, но решения нет.
5. Решил последовательно пробежаться по кусочкам полилинии, полученным после GetSplitCurves() и создать из них новую полилинию, оказалось что после разбиения эти кусочки лежат в каком-то хаотичном порядке, вершины в произвольном направлении.
6. Сейчас сижу пишу алгоритм, который будет в этом хаосе отыскивать соседние кусочки, выправлять их направление и складывать вместе.
Но может быть есть способ элегантнее?
Спасибо.
P.S. перед публикацией топика увидел пример на лиспе по схожей проблеме
https://www.caduser.ru/forum/topic49414.html
но вопрос остается - хотелось бы реализовать на .Net