Incorrect coordinates
Incorrect coordinates
При импорте DWG в некоторых файлах неверно импортируются координаты точек. Причем вывод на экран осуществляется корректно.
Если к примеру открыть прилагаемый файл в вашей демо программе Simple Import то он открывается правильно, но если сохранить как его текст в этой же программе, то координата левого нижнего круга по Х = -5, а должна быть +5. Все остальные координаты правильные. Пока это было замечено на Circle и Arc.
Возможно это связано с тем, что файлы были созданы в новой версии DWG, которые при попытке импортировать в старой версии CAD VCL выдают ошибку "Unsupported new DWG version ID: AC1032".
Как это можно исправить?
Если к примеру открыть прилагаемый файл в вашей демо программе Simple Import то он открывается правильно, но если сохранить как его текст в этой же программе, то координата левого нижнего круга по Х = -5, а должна быть +5. Все остальные координаты правильные. Пока это было замечено на Circle и Arc.
Возможно это связано с тем, что файлы были созданы в новой версии DWG, которые при попытке импортировать в старой версии CAD VCL выдают ошибку "Unsupported new DWG version ID: AC1032".
Как это можно исправить?
- Attachments
-
- КМЗ таблица.rar
- (112 KiB) Downloaded 629 times
Re: Incorrect coordinates
Здравствуйте.
В прилагаемом файле описанное Вами поведение наблюдается только на объектах Arc, которые находятся в блоках, а проблема в том, что координаты точек объекта, находящегося в блоке, в данном случае рассчитываются относительно пространства блока, а не пространства модели, в котором данный блок вставлен.
Чтобы получить координаты точки в пространстве модели для объекта в блоке, необходим пересчет координат точки с учетом матрицы вставки данного блока (TsgDXFInsert.GetMatrix). Для этих целей можно использовать функцию FPointXMat, реализованную в модуле sgFunction:
Пример использования функции FPointXMat приведен здесь.
Михаил
В прилагаемом файле описанное Вами поведение наблюдается только на объектах Arc, которые находятся в блоках, а проблема в том, что координаты точек объекта, находящегося в блоке, в данном случае рассчитываются относительно пространства блока, а не пространства модели, в котором данный блок вставлен.
Чтобы получить координаты точки в пространстве модели для объекта в блоке, необходим пересчет координат точки с учетом матрицы вставки данного блока (TsgDXFInsert.GetMatrix). Для этих целей можно использовать функцию FPointXMat, реализованную в модуле sgFunction:
Code: Select all
function FPointXMat(const APoint: TFPoint; const AMatrix: TFMatrix): TFPoint;
Михаил
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support
Chat support on Skype: cadsofttools.support