Может положиться на AutoCAD и не задавать количество вершин?
Вы про метод ToPolyline без параметра numOfVertices? Я его пробовал, но мне не понравилось, что он по умолчанию очень много вершин создаёт даже для довольно простых кривых. На примере во вложении для этой кривой создалось 222 вершины!
В AutoCAD'е есть два вида сплайнов. В одних есть FitData, в других нет.
Да, и если я всё правильно понимаю, один в другой можно переключать ручкой на сплайне.
1. Возможно полилиния с 888 вершинами пострится быстрее, чем сплайн с 111.
2. Изыскатели как правило все рисуют полилиниями без дуг с большим количеством вершин(заборы, границы, горизонтали и т.д.). Т.к. заказчики могут перекидывать в другие САПРы и простые полилинии перекидываются без проблем. 1000 вершин на полилинию не так уж и много.
Лишние вершины полилиний очень сильно увеличивают размер чертежа и уменьшают быстродействие. Я помню чистил такие чертежи с диким количеством вершин с помощью "прополки" из PLTools и за счёт этого уменьшал вес файла чертежа на десятки мегабайт.
3. А может вершин сплайна изначально много, можно оптимизировать, а потом аппроксимировать.
4. Попробовать аппроксимировать другим способом. Александр вроде приводил на форуме пример аппроксимации Curve на примере Polyline.
Я затем извлекаю вершины из полилинии и выполняю оптимизацию. Поэтому, очень хочется, чтобы изначально в эту оптимизацию приходило как можно меньше вершин. Особенно, на микроскопических сплайнах.
Я пока остановился на таком варианте:
var splinePointsCount = (uint)Math.Max(spline.NumFitPoints, spline.NumControlPoints);
Использую его для сплайнов, длина которых меньше значимой величины.