Тема: Как пользоваться AcDb2dPolyline и AcDb2dVertex?
Здравствуйте все!
Пишу код, работающий с 2d-полилинией и столкнулся с несколькими проблемами:
1) AcDb2dPolyline создаётся в памяти самостоятельно, а редактировать геометрию можно только через AcDb2dVertex.
2) AcDb2dVertex::position() возращает AcGePoint3d() (3d у них получилось исторически), но якобы в OSC (то есть ECS), а не WCS. Для получения AcGePoint3d() в WCS рекомендуют использовать AcDb2dPolyline::vertexPosition(const AcDb2dVertex& vert). Те, кто видели пример итерирования полилинии могут оценить прелести этой рекомендации Autodesk. Собрал небольшой тест который даёт распечатку координат возращаемых точек и узрел, что разницы почему-то не наблюдается ... Может опытные коллеги подскажут в чём фишка ...
3) Замечательный метод transformBy() работает с оригиналом, из-за этого каждый раз накапливается незначительная ошибка. Попытки свести общую ошибку к минимуму натолкнули на мысль применять transformBy() к начальному состоянию полилинии, но как выяснилось скопировать в память её нельзя, потому как объект составной и поэтому нужно применять deep cloning (без горячительного не разобраться) после чего можно получить клон, но кажется опять в базе, а мне бы хотелось поместить его в память, чтобы не открывать и закрывать его каждый раз, когда понадобиться начальное состояние...
Прошу прощения за некраткость. Буду раз любым комментариям.