//should return a configuration? frontdir,upDir mapped in DPG std::pair<Base::Vector3d,Base::Vector3d> TaskProjGroup::get3DViewDir() { std::pair<Base::Vector3d,Base::Vector3d> result; Base::Vector3d viewDir(0.0,-1.0,0.0); //default to front Base::Vector3d viewUp(0.0,0.0,1.0); //default to top std::list<MDIView*> mdis = Gui::Application::Instance->activeDocument()->getMDIViews(); Gui::View3DInventor *view; Gui::View3DInventorViewer *viewer = nullptr; for (auto& m: mdis) { //find the 3D viewer view = dynamic_cast<Gui::View3DInventor*>(m); if (view) { viewer = view->getViewer(); break; } } if (!viewer) { Base::Console().Log("LOG - TaskProjGroup could not find a 3D viewer\n"); return std::make_pair( viewDir, viewUp); } SbVec3f dvec = viewer->getViewDirection(); SbVec3f upvec = viewer->getUpDirection(); viewDir = Base::Vector3d(dvec[0], dvec[1], dvec[2]); viewUp = Base::Vector3d(upvec[0],upvec[1],upvec[2]); viewDir *= -1.0; //Inventor dir is opposite TD dir, Inventor up is same as TD up viewDir = DrawUtil::closestBasis(viewDir); viewUp = DrawUtil::closestBasis(viewUp); result = std::make_pair(viewDir,viewUp); return result; }