diff --git a/src/Gui/ViewProviderOriginGroup.cpp b/src/Gui/ViewProviderOriginGroup.cpp index 431d2d1a7..cd24b299c 100644 --- a/src/Gui/ViewProviderOriginGroup.cpp +++ b/src/Gui/ViewProviderOriginGroup.cpp @@ -148,7 +148,16 @@ void ViewProviderOriginGroup::updateOriginSize () { return; } - View3DInventorViewer* viewer = static_cast(this->getActiveView())->getViewer(); + + Gui::Document* gdoc = Gui::Application::Instance->getDocument(getObject()->getDocument()); + if(!gdoc) + return; + + Gui::MDIView* view = gdoc->getViewOfViewProvider(this); + if(!view) + return; + + Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); SoGetBoundingBoxAction bboxAction(viewer->getSoRenderManager()->getViewportRegion()); // calculate the bounding box for out content diff --git a/src/Mod/PartDesign/Gui/ViewProviderBody.cpp b/src/Mod/PartDesign/Gui/ViewProviderBody.cpp index aab5fec62..4399e8663 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderBody.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderBody.cpp @@ -307,8 +307,17 @@ void ViewProviderBody::slotChangedObjectGui ( void ViewProviderBody::updateOriginDatumSize () { PartDesign::Body *body = static_cast ( getObject() ); + // Use different bounding boxes for datums and for origins: - Gui::View3DInventorViewer* viewer = static_cast(this->getActiveView())->getViewer(); + Gui::Document* gdoc = Gui::Application::Instance->getDocument(getObject()->getDocument()); + if(!gdoc) + return; + + Gui::MDIView* view = gdoc->getViewOfViewProvider(this); + if(!view) + return; + + Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); SoGetBoundingBoxAction bboxAction(viewer->getSoRenderManager()->getViewportRegion()); const auto & model = body->getFullModel ();