Тема: Как получить границы видимой части чертежа?
Здравствуйте.
Есть задача обновить чертеж во время выполнения команды.
Не помогает следующее:
1) acedGetAcadDwgView()->Invalidate();
acedGetAcadDwgView()->UpdateWindow();
acedGetAcadDwgView()->RedrawWindow();
2) acedGetAcadDwgView()->SendMessage(WM_MOUSEMOVE,0,0);
3) actrTransactionManager->queueForGraphicsFlush();
actrTransactionManager->flushGraphics();
acedUpdateDisplay();
4) назначение команде флагов ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, с которыми работает другая команда кодом из пункта 3
Однако работает acedSetCurrentView, но применяется она в функции с аргументами (ads_point pt, double magnf),
что приводит к изменению видимой части, а этого хотелось бы избежать.
Нашел на базе той же acedSetCurrentView такой код:
AcDbViewTableRecord view; AcGePoint3d max = acdbHostApplicationServices()->workingDatabase()->extmax(), min = acdbHostApplicationServices()->workingDatabase()->extmin(); AcGePoint2d max_2d (max, max); AcGePoint2d min_2d (min, min); // now set the view centre point view.setCenterPoint (min_2d + (max_2d - min_2d) / 2.0); // now height and width of view view.setHeight(max_2d - min_2d); view.setWidth (max_2d - min_2d); // set the view acedSetCurrentView (&view, NULL); // updates the extents acdbHostApplicationServices()->workingDatabase()->updateExt(TRUE);
Все бы хорошо, но для избежания сдвига видимой части вместо extmax() и extmin() надо бы применить текущие координаты видимой области.
Как их получить?
Спасибо.