//function : BoundingBoxOfSelection
//purpose :
//=======================================================================
-Bnd_Box AIS_InteractiveContext::BoundingBoxOfSelection() const
+Bnd_Box AIS_InteractiveContext::BoundingBoxOfSelection (const Handle(V3d_View)& theView) const
{
Bnd_Box aBndSelected;
AIS_MapOfObjectOwners anObjectOwnerMap;
+ const Standard_Integer aViewId = !theView.IsNull() ? theView->View()->Identification() : -1;
for (AIS_NListOfEntityOwner::Iterator aSelIter (mySelection->Objects()); aSelIter.More(); aSelIter.Next())
{
const Handle(SelectMgr_EntityOwner)& anOwner = aSelIter.Value();
continue;
}
+ Handle(Graphic3d_ViewAffinity) anAffinity = myMainVwr->StructureManager()->ObjectAffinity (anObj);
+ const Standard_Boolean isVisible = aViewId == -1 || anAffinity->IsVisible (aViewId);
+ if (!isVisible)
+ {
+ continue;
+ }
+
if (anOwner == anObj->GlobalSelOwner())
{
Bnd_Box aTmpBnd;
const Standard_Real theMargin,
const Standard_Boolean theToUpdate)
{
- Bnd_Box aBndSelected = BoundingBoxOfSelection();
+ Bnd_Box aBndSelected = BoundingBoxOfSelection (theView);
if (!aBndSelected.IsVoid())
{
theView->FitAll (aBndSelected, theMargin, theToUpdate);
Standard_EXPORT AIS_StatusOfPick SelectDetected (const AIS_SelectionScheme theSelScheme = AIS_SelectionScheme_Replace);
//! Returns bounding box of selected objects.
- Standard_EXPORT Bnd_Box BoundingBoxOfSelection() const;
+ Standard_EXPORT Bnd_Box BoundingBoxOfSelection (const Handle(V3d_View)& theView) const;
+
+ Standard_DEPRECATED ("BoundingBoxOfSelection() should be called with View argument")
+ Bnd_Box BoundingBoxOfSelection() const { return BoundingBoxOfSelection (Handle(V3d_View)()); }
//! Sets list of owner selected/deselected using specified selection scheme.
//! @param theOwners owners to change selection state
void AIS_ViewController::FitAllAuto (const Handle(AIS_InteractiveContext)& theCtx,
const Handle(V3d_View)& theView)
{
- const Bnd_Box aBoxSel = theCtx->BoundingBoxOfSelection();
+ const Bnd_Box aBoxSel = theCtx->BoundingBoxOfSelection (theView);
const double aFitMargin = 0.01;
if (aBoxSel.IsVoid())
{
void AIS_ViewCube::viewFitAll (const Handle(V3d_View)& theView,
const Handle(Graphic3d_Camera)& theCamera)
{
- Bnd_Box aBndBox = myToFitSelected ? GetContext()->BoundingBoxOfSelection() : theView->View()->MinMaxValues();
+ Bnd_Box aBndBox = myToFitSelected ? GetContext()->BoundingBoxOfSelection (theView) : theView->View()->MinMaxValues();
if (aBndBox.IsVoid()
&& myToFitSelected)
{