Тема: Перемещение центра видимой области
Добрый день. Как можно задать положение центральной точки экрана относительно координат в Model?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Перемещение центра видимой области
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Добрый день. Как можно задать положение центральной точки экрана относительно координат в Model?
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); }
Если изнутри команды, то лучше так
(вроде бы этот вопрос на форуме уже был)
... 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(); ...
Немножко ошибся в предыдущем примере:
главное, надо вызвать
pViewport->setViewDirection(vcDirection); pViewport->setTarget(targetPoint);
И еще в самом начале надо выполнить
acedVports2VportTableRecords();
тогда корректно будет работать.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → Перемещение центра видимой области
Форум работает на PunBB, при поддержке Informer Technologies, Inc