From 087f3fbafcee27a101ab395a880be7a59a930e17 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Tue, 19 May 2020 16:33:27 +0800 Subject: [PATCH] Gui: include non view provider coin for scene bbox calculation --- src/Gui/View3DInventorViewer.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Gui/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index 6ad0e3145da9..41b4ca1a31d1 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -3536,10 +3536,21 @@ bool View3DInventorViewer::getSceneBoundBox(Base::BoundBox3d &box) const { } if(guiDocument && ViewParams::instance()->getUseTightBoundingBox()) { + SoGetBoundingBoxAction action(this->getSoRenderManager()->getViewportRegion()); for(int i=0;igetNumChildren();++i) { auto node = pcViewProviderRoot->getChild(i); auto vp = guiDocument->getViewProvider(node); - if(!vp || !vp->isVisible()) + if(!vp) { + action.apply(node); + auto bbox = action.getBoundingBox(); + if(!bbox.isEmpty()) { + float minx,miny,minz,maxx,maxy,maxz; + bbox.getBounds(minx,miny,minz,maxx,maxy,maxz); + box.Add(Base::BoundBox3d(minx,miny,minz,maxx,maxy,maxz)); + } + continue; + } + if(!vp->isVisible()) continue; auto sbox = vp->getBoundingBox(0,0,true,this); if(sbox.IsValid())