Как стать автором
Обновить

Комментарии 4

По поводу преобразования экранных координат в координаты чертежа: в какой версии nanoCAD API появилось это преобразование? В ObjectARX он появился как минимум в 2009 версии. Или проблема всплыла только сейчас?
Оффтоп
В ObjectARX это следующие команды

public unsafe Point3d PointToWorld( Point pt );

и обратно

public unsafe Point PointToScreen( Point3d pt, int viewportNumber );

А за статью спасибо! Ждем еще статей.
Особенно на тему совмещения Multicad и ObjectARX :)
Преобразование появилось в nanoCAD 4.5.

Аналогичное преобразование в ObjectARX доступно только из модуля, загруженного в AutoCAD, будь то .NET или C++. Нам же нужно было добраться до этого преобразования снаружи, из внешней системы автоматизированного тестирования. Поэтому мы и расширили COM модель.
Не совсем понимаю почему не замокать PromptAngleOptions если хотите отвязаться от UI.
Мы не пытаемся отвязаться от UI, нам как раз интересно проверить полную цепочку от двух WM_LBUTTONDOWN до возврата угла из GetPoint().

Применительно к данной задаче, действие в UI присходит в GetAngle(), который мы тестируем. PromptAngleOptions лишь содержит входные параметры.

Если бы мы тестировали какую-либо команду, использующую GetAngle(), скажем, команду поворота выбранных объектов, то GetAngle() можно было бы замокать. Но, тогда и процесс запуска команды стоило бы отключить от UI, и предпросмотр результата поворота, и далее до тех пор, пока мок не станет похож на спецсборку nanoCAD-а. Поэтому мы и пытаемся, по возможности, использовать существующие механизмы. UI тестировать через UI, работу с базой данных чертежа — без UI.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий