From a715d416f413a5c9f26154ec42f5af64121867ee Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 13 Jul 2012 13:37:01 +0200 Subject: [PATCH] Apply camera settings from 3d view to split views for alignment --- src/Gui/CommandDoc.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Gui/CommandDoc.cpp b/src/Gui/CommandDoc.cpp index 9520b80b3..6d3b01a34 100644 --- a/src/Gui/CommandDoc.cpp +++ b/src/Gui/CommandDoc.cpp @@ -33,6 +33,7 @@ # include # include # include +# include #endif #include @@ -1176,16 +1177,27 @@ void StdCmdAlignment::activated(int iMsg) model.addGroups(groupMap); align->setModel(model); Base::Type style = Base::Type::fromName("Gui::CADNavigationStyle"); + Base::Vector3d upDir(0,1,0), viewDir(0,0,-1); Gui::Document* doc = Application::Instance->activeDocument(); if (doc) { View3DInventor* mdi = qobject_cast(doc->getActiveView()); if (mdi) { - style = mdi->getViewer()->navigationStyle()->getTypeId(); + View3DInventorViewer* viewer = mdi->getViewer(); + SoCamera* camera = viewer->getCamera(); + if (camera) { + SbVec3f up(0,1,0), dir(0,0,-1); + camera->orientation.getValue().multVec(dir, dir); + viewDir.Set(dir[0],dir[1],dir[2]); + camera->orientation.getValue().multVec(up, up); + upDir.Set(up[0],up[1],up[2]); + } + style = viewer->navigationStyle()->getTypeId(); } } align->setMinPoints(1); align->startAlignment(style); + align->setViewingDirections(viewDir,upDir, viewDir,upDir); Gui::Selection().clearSelection(); }