GetDrawingCoords

Обсуждение вопросов импорта поддерживаемых форматов
Post Reply
y.kuklin
Posts: 9
Joined: 11 May 2019, 22:50

GetDrawingCoords

Post by y.kuklin » 11 May 2019, 23:17

Как получить X, Y массив координат Z поверхности объекта импортированного из STL файла?
У меня функция GetDrawingCoords работает корректно только при перемещении мыши. Программное задание координат X, Y приводит к ошибочному результату. К примеру это происходит в демо программе 3D если в NavigatorMouseMove зафиксировать значения X и Y.

support
Posts: 3271
Joined: 30 Mar 2005, 11:36
Contact:

Re: GetDrawingCoords

Post by support » 13 May 2019, 18:37

Здравствуйте,

Не могли бы Вы привести пример кода, показывающий, какие значения X и Y Вы задаете внутри процедуры Tfm3DGLS.NavigatorMouseMove и передаете в функцию GetDrawingCoords?

Михаил
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

y.kuklin
Posts: 9
Joined: 11 May 2019, 22:50

Re: GetDrawingCoords

Post by y.kuklin » 15 May 2019, 14:25

Пример кода и STL файл в архиве.
Значения X, Y в NavigatorMouseMove отличаются от положения курсора на 1. Ошибка в GetDrawingCoords.
В NavigatorBitmapData (OnClick event) значения X, Y соответствуют положению курсора. Функция GetDrawingCoords возвращает правильные значения.
Задача программы состоит в том, чтобы при нажатии кнопки "Map" создавалась цветная карта поверхности.
Attachments
CADtest.rar
(20.37 KiB) Downloaded 808 times

support
Posts: 3271
Joined: 30 Mar 2005, 11:36
Contact:

Re: GetDrawingCoords

Post by support » 20 May 2019, 23:35

Здравствуйте,

Спасибо за файлы.

Не могли бы Вы также прислать файлы проекта (.cbproj, .cpp) и уточнить, в какой версии RAD Studio работаете?

Update: файлы проекта присылать необязательно, мы смогли собрать и запустить Ваше приложение в RAD Studio XE3.

Михаил
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

support
Posts: 3271
Joined: 30 Mar 2005, 11:36
Contact:

Re: GetDrawingCoords

Post by support » 21 May 2019, 20:10

y.kuklin wrote:
15 May 2019, 14:25
Значения X, Y в NavigatorMouseMove отличаются от положения курсора на 1. Ошибка в GetDrawingCoords.
В NavigatorBitmapData (OnClick event) значения X, Y соответствуют положению курсора. Функция GetDrawingCoords возвращает правильные значения.
Это объясняется тем, что в функции Tsg3DDrawingNavigator.CoordinateConvertion, которая используется для расчета координат при вызове Tsg3DDrawingNavigator.GetDrawingCoords (GetDrawingCoords -> GetDrawingInternalCoords -> CoordinateConvertion), есть проверка на соответствие положения курсора мыши значениям, переданным через аргументы ACoordX, ACoordY:

Code: Select all

function Tsg3DDrawingNavigator.CoordinateConvertion(ACoordX, ACoordY: Integer;
  var APointInUCS: TFPoint): TFPoint;
begin
  if (ACoordX = FMove.Pos.X) and (ACoordY = FMove.Pos.Y) and Assigned(FIntersectCache) then
  begin
    Result := SubFPoint(FIntersectCache^, FBoxOffs);
    APointInUCS := Result;
  end
  else
    Result := GetRealPoint(ACoordX, ACoordY, APointInUCS);
end;
Если получится найти альтернативное решение поставленной задачи, мы напишем об этом.

Михаил
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

Post Reply