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

Пробовал:

    AcDbSymbolTable* pSSymbTable;
    Acad::ErrorStatus es1;
    es1 = AcdbHostApplicationServices()->workingDatabase()->getViewportTable(pSSymbTable,AcDb::kForRead);
    if(es1!=Acad::eOk) {return;}
      AcDbViewportTable* pvPortTable=(AcDbViewportTable*)pSSymbTable;
    AcDbViewportTableRecord* pViewport;
    es1 = pvPortTable->getAt("*ACTIVE",pViewport,AcDb::kForWrite);
    pvPortTable->close();
    if(es1!=Acad::eOk) {return;}
    AcGeVector3d vnorm = pViewport->viewDirection();
    pViewport->close();

При любом виде vnorm - вектор (0,0,1).
Заранее спасибо!

Re: Как найти вектор, ортогональный плоскости текущего вида?

Ну естественно, так оно и будет. Т.к. в динамике это дело не отслеживается.
Есть один трудоёмкий, однако работающий способ.
Если определение вектора требуется в объекте, то можно пере

void myObject::viewportDraw(AcGiViewportDraw* mode)
{
...
    mode->viewport().getCameraLocation(p1);
    mode->viewport().getCameraTarget(p2);
    norm=p1-p2;
...
}

Что характерно вариант

mode->viewport().viewDir();

не работает на 100%
На 100% работает только первый вариант.
Если же отлавливать значение вектора нужно в какой-то другой момент, можно повесить монитор, который бы пересчитывал вектор по тому же принципу (т.е. по тому же входящему параметру - AcGiViewportDraw* mode). Естественно вектор norm должен быть глобальной переменной.
Кстати, метод положителен тем, что производит вычисление значения вектора даже тогда, когда используется команда orbit3d (или как её там).

Re: Как найти вектор, ортогональный плоскости текущего вида?

Этот вектор нужен для решения проблемы, описанной в https://www.caduser.ru/forum/topic14099.html .
Кратко:

Необходимо выбрать ось в пространстве с точкой выбора. Использую:

 acedEntSel("\n Выберите ось: ", ename, asDblArray(from)); 

Координаты возвращаются странные (ucs to wcs делаю). Странность координат в том, что координата Z=0, такое впечатление, что возвращаемые координаты - координаты проекции указанной точки на текущую плоскость XY в текущем виде.

Появилась мысль, что с помощью этого вектора можно пересчитать координаты на то, что мне нужно. Я не совсем понял, как использовать Вашу методику?
Заранее благодарю.