Тема: Активный viewport
В пространстве листа имею несколько viewport'ов, как определить какой из них активный (в который например входили по двойному клику)?
Фукнция acedGetCurViewportObjectId(), всегда возвращает один и тот-же Viewport с number==1
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Активный viewport
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
В пространстве листа имею несколько viewport'ов, как определить какой из них активный (в который например входили по двойному клику)?
Фукнция acedGetCurViewportObjectId(), всегда возвращает один и тот-же Viewport с number==1
> Евгений
Попробуй такой вариант:
static void GetHandleOfActiveViewport(void) { resbuf rbtl = {NULL,RTSHORT,0}; acedGetVar(_T("TILEMODE"),&rbtl); if (rbtl.resval.rint == 1) { acutPrintf(_T("\nМы в пространстве модели!")); return; } resbuf rbcv = {NULL,RTSHORT,0}; acedGetVar(_T("CVPORT"),&rbcv); if (rbcv.resval.rint == 1) { acutPrintf(_T("\nМы не в viewport\'е!")); return; } int cvport = rbcv.resval.rint - 1; AcApLayoutManager *lm = (AcApLayoutManager *) acdbHostApplicationServices()->layoutManager(); if (!lm) return; const ACHAR *ctab = lm->findActiveTab(); AcDbLayout *clay = lm->findLayoutNamed(ctab,TRUE); if (clay) { AcDbObjectIdArray ids = clay->getViewportArray(); clay->close(); acutPrintf(_T("\nВсего viewport\'ов = %d"),ids.length()-1); AcDbHandle h = ids[cvport].handle(); ACHAR buf[256]; h.getIntoAsciiBuffer(buf); acutPrintf(_T("\nМетка активного viewport\'а = %s"),buf); } }
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → Активный viewport
Форум работает на PunBB, при поддержке Informer Technologies, Inc