Тема: Перемещение центра видимой области

Добрый день. Как можно задать положение центральной точки экрана относительно координат в Model?

Re: Перемещение центра видимой области

void setCenter(const AcGePoint3d &pt)
{
ads_point pnt;
pnt[0] = pt.x; pnt[1] = pt.y; pnt[2] = pt.z;
acedCommand(RTSTR, "._ZOOM", RTSTR, "_C", RT3DPOINT, pnt, RTSTR, "", 0);
}

Re: Перемещение центра видимой области

Если изнутри команды, то лучше так
(вроде бы этот вопрос на форуме уже был)

...
    AcDbSymbolTable* pSSymbTable;
    Acad::ErrorStatus es;
    
    es = acdbHostApplicationServices()->workingDatabase()->getViewportTable(pSSymbTable,AcDb::kForRead);
    if(es!=Acad::eOk)
        return;
    
    AcDbViewportTable* pvPortTable=(AcDbViewportTable*)pSSymbTable;
    AcDbViewportTableRecord* pViewport;    
    es = pvPortTable->getAt("*ACTIVE",pViewport,AcDb::kForWrite);
    pvPortTable->close();
    if(es!=Acad::eOk)
        return;
.............
//А также меняются другие атрибуты (см. документацию)
pViewport->setCenterPoint(AcGePoint2d(0.0,0.0));
.............
pViewport->close();
acedVportTableRecords2Vports();
...

Re: Перемещение центра видимой области

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

    pViewport->setViewDirection(vcDirection);    
    pViewport->setTarget(targetPoint);

Re: Перемещение центра видимой области

И еще в самом начале надо выполнить
acedVports2VportTableRecords();
тогда корректно будет работать.