Тема: Как получить границы видимой части чертежа?

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

Есть задача обновить чертеж во время выполнения команды.
Не помогает следующее:

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() надо бы применить текущие координаты видимой области.

Как их получить?

Спасибо.

(изменено: Александр Ривилис, 27 октября 2011г. 18:34:04)

Re: Как получить границы видимой части чертежа?

ads_regen() пробовал?
Здесь расчет крайних видимых на экране точек. Там точки вычисляются в UCS, а тебе нужно в WCS.

Re: Как получить границы видимой части чертежа?

Спасибо, Александр.

ads_regen() помогла.

(Видел я ее, но когда компилятор сказал - undeclared identifier, отступился, на не ту версию подумал.
А сейчас порылся в поиске, в либах, и заработало.)

Спасибо еще раз.

И за код с координатами спасибо.