From 257308ab92a2ecccb38294bf15b690580d6cbebc Mon Sep 17 00:00:00 2001 From: mpa Date: Tue, 19 May 2015 16:22:24 +0300 Subject: [PATCH] 0023097: EDF GEOM: [HYDRO 513] Fit only on selected objects --- doc/salome/gui/images/vtkviewer_toolbar.png | Bin 18150 -> 18648 bytes doc/salome/gui/input/occ_3d_viewer.doc | 5 ++++ doc/salome/gui/input/vtk_3d_viewer.doc | 9 +++++-- src/OCCViewer/CMakeLists.txt | 1 + src/OCCViewer/OCCViewer_ViewWindow.cxx | 22 ++++++++++++++++ src/OCCViewer/OCCViewer_ViewWindow.h | 5 ++-- src/OCCViewer/resources/OCCViewer_images.ts | 4 +++ src/OCCViewer/resources/OCCViewer_msg_en.ts | 8 ++++++ src/OCCViewer/resources/OCCViewer_msg_fr.ts | 8 ++++++ src/OCCViewer/resources/OCCViewer_msg_ja.ts | 8 ++++++ .../resources/occ_view_fitselection.png | Bin 0 -> 913 bytes src/SVTK/SVTK_Renderer.cxx | 24 ++++++++++++++++++ src/SVTK/SVTK_Renderer.h | 6 ++++- src/SVTK/SVTK_ViewWindow.cxx | 19 ++++++++++++++ src/SVTK/SVTK_ViewWindow.h | 5 +++- src/SVTK/resources/SVTK_msg_en.ts | 8 ++++++ src/SVTK/resources/SVTK_msg_fr.ts | 8 ++++++ src/SVTK/resources/SVTK_msg_ja.ts | 8 ++++++ src/VTKViewer/CMakeLists.txt | 1 + src/VTKViewer/VTKViewer_InteractorStyle.cxx | 22 ++++++++++++++++ src/VTKViewer/VTKViewer_InteractorStyle.h | 3 ++- src/VTKViewer/VTKViewer_Utilities.cxx | 21 ++++++++++----- src/VTKViewer/VTKViewer_Utilities.h | 7 +++++ src/VTKViewer/VTKViewer_ViewWindow.cxx | 15 +++++++++++ src/VTKViewer/VTKViewer_ViewWindow.h | 3 ++- src/VTKViewer/resources/VTKViewer_images.ts | 4 +++ src/VTKViewer/resources/VTKViewer_msg_en.ts | 8 ++++++ src/VTKViewer/resources/VTKViewer_msg_fr.ts | 8 ++++++ src/VTKViewer/resources/VTKViewer_msg_ja.ts | 8 ++++++ .../resources/vtk_view_fitselection.png | Bin 0 -> 913 bytes 30 files changed, 233 insertions(+), 15 deletions(-) create mode 100644 src/OCCViewer/resources/occ_view_fitselection.png create mode 100644 src/VTKViewer/resources/vtk_view_fitselection.png diff --git a/doc/salome/gui/images/vtkviewer_toolbar.png b/doc/salome/gui/images/vtkviewer_toolbar.png index e97246d60d4cf7b3e076661fb78483fb337b94b9..6ceb9836fff47e50d6199825b3fcbe27ee6688a3 100644 GIT binary patch literal 18648 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 Di))nd literal 18150 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%0Dhj1S^PqaXo7J~* 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 +\image html occ_view_fitselection.png + +Fit selection - fits view contents to the current selection. +
+ \image html occ_view_zoom.png Zoom - allows to zoom in and out. diff --git a/doc/salome/gui/input/vtk_3d_viewer.doc b/doc/salome/gui/input/vtk_3d_viewer.doc index 3e5027880..8923176fa 100644 --- a/doc/salome/gui/input/vtk_3d_viewer.doc +++ b/doc/salome/gui/input/vtk_3d_viewer.doc @@ -63,6 +63,11 @@ the Viewer boundaries. the contents of a frame drawn with pressed left mouse button.
+\image html vtk_view_fitselection.png + +Fit selection - fits view contents to the current selection. +
+ \image html vtk_view_zoom.png Zoom - allows to zoom in and out. @@ -123,12 +128,12 @@ These buttons orientate the scene strictly about coordinate axes: \image html vtk_view_anticlockwise.png -Rotate counter-clockwise - rotates view 90° counter-clockwise. +Rotate counter-clockwise - rotates view 90� counter-clockwise.
\image html vtk_view_clockwise.png -Rotate clockwise - rotates view 90° clockwise. +Rotate clockwise - rotates view 90� clockwise.
\image html vtk_view_reset.png diff --git a/src/OCCViewer/CMakeLists.txt b/src/OCCViewer/CMakeLists.txt index eefdd3f50..4afead732 100755 --- a/src/OCCViewer/CMakeLists.txt +++ b/src/OCCViewer/CMakeLists.txt @@ -115,6 +115,7 @@ SET(_other_RESOURCES resources/occ_view_clone.png resources/occ_view_fitall.png resources/occ_view_fitarea.png + resources/occ_view_fitselection.png resources/occ_view_front.png resources/occ_view_glpan.png resources/occ_view_graduated_axes.png diff --git a/src/OCCViewer/OCCViewer_ViewWindow.cxx b/src/OCCViewer/OCCViewer_ViewWindow.cxx index 98ae2107b..57a571e47 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.cxx +++ b/src/OCCViewer/OCCViewer_ViewWindow.cxx @@ -1171,6 +1171,13 @@ void OCCViewer_ViewWindow::createActions() connect(aAction, SIGNAL(triggered()), this, SLOT(activateWindowFit())); toolMgr()->registerAction( aAction, FitRectId ); + // FitSelection + aAction = new QtxAction(tr("MNU_FITSELECTION"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_FITSELECTION" ) ), + tr( "MNU_FITSELECTION" ), 0, this); + aAction->setStatusTip(tr("DSC_FITSELECTION")); + connect(aAction, SIGNAL(triggered()), this, SLOT(onFitSelection())); + toolMgr()->registerAction( aAction, FitSelectionId ); + // Zoom aAction = new QtxAction(tr("MNU_ZOOM_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_ZOOM" ) ), tr( "MNU_ZOOM_VIEW" ), 0, this); @@ -1419,6 +1426,9 @@ void OCCViewer_ViewWindow::createToolBar() QtxMultiAction* aScaleAction = new QtxMultiAction( this ); aScaleAction->insertAction( toolMgr()->action( FitAllId ) ); aScaleAction->insertAction( toolMgr()->action( FitRectId ) ); +#if OCC_VERSION_LARGE > 0x06090000 + aScaleAction->insertAction( toolMgr()->action( FitSelectionId ) ); +#endif aScaleAction->insertAction( toolMgr()->action( ZoomId ) ); toolMgr()->append( aScaleAction, tid ); @@ -1590,6 +1600,18 @@ void OCCViewer_ViewWindow::onFitAll() emit vpTransformationFinished( FITALLVIEW ); } +/*! + \brief Perform "fit selection" transformation. +*/ +void OCCViewer_ViewWindow::onFitSelection() +{ + emit vpTransformationStarted( FITSELECTION ); +#if OCC_VERSION_LARGE > 0x06090000 + myModel->getAISContext()->FitSelected( getViewPort()->getView() ); +#endif + emit vpTransformationFinished( FITSELECTION ); +} + /*! \brief Called if 'change rotation point' operation is activated. \param on action state diff --git a/src/OCCViewer/OCCViewer_ViewWindow.h b/src/OCCViewer/OCCViewer_ViewWindow.h index 733385850..9e46e3a90 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.h +++ b/src/OCCViewer/OCCViewer_ViewWindow.h @@ -143,7 +143,7 @@ class OCCVIEWER_EXPORT OCCViewer_ViewWindow : public SUIT_ViewWindow Q_OBJECT public: - enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, + enum { DumpId, FitAllId, FitRectId, FitSelectionId, ZoomId, PanId, GlobalPanId, ChangeRotationPointId, RotationId, FrontId, BackId, TopId, BottomId, LeftId, RightId, ClockWiseId, AntiClockWiseId, ResetId, CloneId, ClippingId, MemId, RestoreId, @@ -154,7 +154,7 @@ public: UserId }; enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, ROTATE, - PANGLOBAL, WINDOWFIT, FITALLVIEW, RESETVIEW, + PANGLOBAL, WINDOWFIT, FITALLVIEW, FITSELECTION, RESETVIEW, FRONTVIEW, BACKVIEW, TOPVIEW, BOTTOMVIEW, LEFTVIEW, RIGHTVIEW, CLOCKWISEVIEW, ANTICLOCKWISEVIEW }; @@ -248,6 +248,7 @@ public slots: virtual void onAntiClockWiseView(); virtual void onResetView(); virtual void onFitAll(); + virtual void onFitSelection(); virtual void activateZoom(); virtual void activateWindowFit(); virtual void activateRotation(); diff --git a/src/OCCViewer/resources/OCCViewer_images.ts b/src/OCCViewer/resources/OCCViewer_images.ts index 94affa31e..7e9c06f22 100644 --- a/src/OCCViewer/resources/OCCViewer_images.ts +++ b/src/OCCViewer/resources/OCCViewer_images.ts @@ -15,6 +15,10 @@ ICON_OCCVIEWER_VIEW_FITAREA occ_view_fitarea.png + + ICON_OCCVIEWER_VIEW_FITSELECTION + occ_view_fitselection.png + ICON_OCCVIEWER_CLONE_VIEW occ_view_clone.png diff --git a/src/OCCViewer/resources/OCCViewer_msg_en.ts b/src/OCCViewer/resources/OCCViewer_msg_en.ts index 710c6907d..e15325b09 100644 --- a/src/OCCViewer/resources/OCCViewer_msg_en.ts +++ b/src/OCCViewer/resources/OCCViewer_msg_en.ts @@ -180,6 +180,14 @@ DSC_FITRECT Fit area within the view frame + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + MNU_PRESETS_VIEW Restore View diff --git a/src/OCCViewer/resources/OCCViewer_msg_fr.ts b/src/OCCViewer/resources/OCCViewer_msg_fr.ts index 547a90d8b..9e78d01f1 100755 --- a/src/OCCViewer/resources/OCCViewer_msg_fr.ts +++ b/src/OCCViewer/resources/OCCViewer_msg_fr.ts @@ -180,6 +180,14 @@ DSC_FITRECT Redimensionner la scène pour ne montrer que sa partie choisie par l'encadré + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + MNU_PRESETS_VIEW Restaurer la vue diff --git a/src/OCCViewer/resources/OCCViewer_msg_ja.ts b/src/OCCViewer/resources/OCCViewer_msg_ja.ts index ac86a82a7..406cb8774 100644 --- a/src/OCCViewer/resources/OCCViewer_msg_ja.ts +++ b/src/OCCViewer/resources/OCCViewer_msg_ja.ts @@ -180,6 +180,14 @@ DSC_FITRECT 彼の党をボックスで選択を表示するには、ステージのサイズを変更します。 + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + MNU_PRESETS_VIEW ビューの読み込み diff --git a/src/OCCViewer/resources/occ_view_fitselection.png b/src/OCCViewer/resources/occ_view_fitselection.png new file mode 100644 index 0000000000000000000000000000000000000000..748df08b7849bece17be6433256b6b80412a9008 GIT binary patch literal 913 zcmV;C18)3@P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2j2w` z200DOhZe~I00R+8L_t(I%bk=>Xk1kohMzO{CT%*TKXhcI)ly1Tn6022B?K2{62a6I z{M)Fd3m4LED$PRFY^p|yh$x6)UAQQP#!5sgbRmLZjkOeV)3Mc-CTTh*lbQRMxxeRg zk(o3MGcEeT2j?8_`<(M~&V3dCqgDmg7^*D_-SI;a$+uZP0GtMrjHL6-+-KKfs;e4KjT8*mjziL_5N#GG+&&0$;wz_HG zWOr^q^(Y}pg)mO}d-f7%KYR^fzqtW+tO;ARZK}RM+JFI+L}VNAW7}Wq<@M#q%m(a8 zmtlO+gjGCm)UvGiT6D$Z-;`KdDpLy#>QRCS{P1=k+57gc$AMWW6z=abjE^76=P5f5 z70-LqvaIoTC#l*FRolUfOj4~81b{RS@4UmYv9Wk-PY=tk%aZFJ?F0h|VoeyOYcQRn zlNf-=uiXKTjEp1|&wJ?~*FD@wkdC$FgjB0FoZHuMZvTa|SX#@+m3aZ`fMM2A&h!kY z8ey5<4d_-DNdkwsZX;>hv??>-jjsadfD$5-X$GW-WbP8a10r%oL~ge9yogMS$P@Pp n*jC_XV5m(XC}378H4X4DT~fT_#}{}}00000NkvXXu0mjfoOqkf literal 0 HcmV?d00001 diff --git a/src/SVTK/SVTK_Renderer.cxx b/src/SVTK/SVTK_Renderer.cxx index 30cee870b..1a251d9e4 100644 --- a/src/SVTK/SVTK_Renderer.cxx +++ b/src/SVTK/SVTK_Renderer.cxx @@ -697,6 +697,30 @@ SVTK_Renderer ::ResetCameraClippingRange(GetDevice()); } +/*! + Fit all selected presentation in the scene +*/ +void SVTK_Renderer::onFitSelection() +{ + vtkActorCollection* aSelectedCollection = vtkActorCollection::New(); + + VTK::ActorCollectionCopy aCopy( GetDevice()->GetActors() ); + vtkActorCollection* aCollection = aCopy.GetActors(); + aCollection->InitTraversal(); + while ( vtkActor* aProp = aCollection->GetNextActor() ) + if ( SALOME_Actor* anActor = SALOME_Actor::SafeDownCast( aProp ) ) + if ( mySelector->IsSelected( anActor ) ) + aSelectedCollection->AddItem( aProp ); + + double bounds[6]; + ::ComputeBounds( aSelectedCollection, bounds ); + + if ( aSelectedCollection->GetNumberOfItems() && ::isBoundValid( bounds ) ) { + GetDevice()->ResetCamera( bounds ); + GetDevice()->ResetCameraClippingRange( bounds ); + } +} + /*! Reset camera clipping range to adjust the range to the bounding box of the scene */ diff --git a/src/SVTK/SVTK_Renderer.h b/src/SVTK/SVTK_Renderer.h index ba0f4fad1..ed9b7a303 100644 --- a/src/SVTK/SVTK_Renderer.h +++ b/src/SVTK/SVTK_Renderer.h @@ -182,7 +182,11 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject //---------------------------------------------------------------------------- //! Fit all presentation in the scene into the window void OnFitAll(); - + + //---------------------------------------------------------------------------- + //! Fit all selected presentation in the scene + void onFitSelection(); + //! Set camera into predefined state void OnResetView(); diff --git a/src/SVTK/SVTK_ViewWindow.cxx b/src/SVTK/SVTK_ViewWindow.cxx index 8814f1c5c..26e548d38 100755 --- a/src/SVTK/SVTK_ViewWindow.cxx +++ b/src/SVTK/SVTK_ViewWindow.cxx @@ -443,6 +443,16 @@ void SVTK_ViewWindow::onFitAll() emit transformed( this ); } +/*! + Processes transformation "fit selection" +*/ +void SVTK_ViewWindow::onFitSelection() +{ + GetRenderer()->onFitSelection(); + Repaint(); + emit transformed( this ); +} + /*! SLOT: called if selection is changed */ @@ -1934,6 +1944,14 @@ void SVTK_ViewWindow::createActions(SUIT_ResourceMgr* theResourceMgr) connect(anAction, SIGNAL(activated()), this, SLOT(activateWindowFit())); mgr->registerAction( anAction, FitRectId ); + // FitSelection + anAction = new QtxAction(tr("MNU_FITSELECTION"), + theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_FITSELECTION" ) ), + tr( "MNU_FITSELECTION" ), 0, this); + anAction->setStatusTip(tr("DSC_FITSELECTION")); + connect(anAction, SIGNAL(activated()), this, SLOT(onFitSelection())); + mgr->registerAction( anAction, FitSelectionId ); + // Zoom anAction = new QtxAction(tr("MNU_ZOOM_VIEW"), theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_ZOOM" ) ), @@ -2245,6 +2263,7 @@ void SVTK_ViewWindow::createToolBar() QtxMultiAction* aScaleAction = new QtxMultiAction( this ); aScaleAction->insertAction( getAction( FitAllId ) ); aScaleAction->insertAction( getAction( FitRectId ) ); + aScaleAction->insertAction( getAction( FitSelectionId ) ); aScaleAction->insertAction( getAction( ZoomId ) ); mgr->append( aScaleAction, myToolBar ); diff --git a/src/SVTK/SVTK_ViewWindow.h b/src/SVTK/SVTK_ViewWindow.h index c7deb09e0..9d27ced4f 100755 --- a/src/SVTK/SVTK_ViewWindow.h +++ b/src/SVTK/SVTK_ViewWindow.h @@ -367,6 +367,9 @@ public slots: //! Redirect the request to #SVTK_Renderer::OnFitAll virtual void onFitAll(); + //! Redirect the request to #SVTK_Renderer::OnFitSelection + virtual void onFitSelection(); + //! Redirect the request to #SVTK_Renderer::OnViewTrihedron virtual void onViewTrihedron(bool); @@ -414,7 +417,7 @@ protected: void createToolBar(); void createActions(SUIT_ResourceMgr* theResourceMgr); - enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, + enum { DumpId, FitAllId, FitRectId, FitSelectionId, ZoomId, PanId, GlobalPanId, ChangeRotationPointId, RotationId, FrontId, BackId, TopId, BottomId, LeftId, RightId, ClockWiseId, AntiClockWiseId, ResetId, ViewTrihedronId, NonIsometric, GraduatedAxes, UpdateRate, diff --git a/src/SVTK/resources/SVTK_msg_en.ts b/src/SVTK/resources/SVTK_msg_en.ts index e7f237aae..614c16560 100644 --- a/src/SVTK/resources/SVTK_msg_en.ts +++ b/src/SVTK/resources/SVTK_msg_en.ts @@ -131,6 +131,14 @@ MNU_FITRECT Fit Area + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + DSC_BOTTOM_VIEW +OZ View diff --git a/src/SVTK/resources/SVTK_msg_fr.ts b/src/SVTK/resources/SVTK_msg_fr.ts index 01ae93dac..5ea0cdea0 100755 --- a/src/SVTK/resources/SVTK_msg_fr.ts +++ b/src/SVTK/resources/SVTK_msg_fr.ts @@ -131,6 +131,14 @@ MNU_FITRECT Afficher la zone + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + DSC_BOTTOM_VIEW Vue +OZ diff --git a/src/SVTK/resources/SVTK_msg_ja.ts b/src/SVTK/resources/SVTK_msg_ja.ts index 477f0987f..7472ff435 100644 --- a/src/SVTK/resources/SVTK_msg_ja.ts +++ b/src/SVTK/resources/SVTK_msg_ja.ts @@ -131,6 +131,14 @@ MNU_FITRECT 選択領域の表示 + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + DSC_BOTTOM_VIEW +OZ View diff --git a/src/VTKViewer/CMakeLists.txt b/src/VTKViewer/CMakeLists.txt index 89797f7aa..8833cb027 100755 --- a/src/VTKViewer/CMakeLists.txt +++ b/src/VTKViewer/CMakeLists.txt @@ -104,6 +104,7 @@ SET(_other_RESOURCES resources/vtk_view_camera_dump.png resources/vtk_view_fitall.png resources/vtk_view_fitarea.png + resources/vtk_view_fitselection.png resources/vtk_view_front.png resources/vtk_view_glpan.png resources/vtk_view_left.png diff --git a/src/VTKViewer/VTKViewer_InteractorStyle.cxx b/src/VTKViewer/VTKViewer_InteractorStyle.cxx index 1553a2e0f..93b1da183 100644 --- a/src/VTKViewer/VTKViewer_InteractorStyle.cxx +++ b/src/VTKViewer/VTKViewer_InteractorStyle.cxx @@ -628,6 +628,28 @@ void VTKViewer_InteractorStyle::ViewFitAll() { ::ResetCameraClippingRange(CurrentRenderer); } +/*!View fit selection.*/ +void VTKViewer_InteractorStyle::ViewFitSelection() { + + vtkActorCollection* aSelectedCollection = vtkActorCollection::New(); + + VTK::ActorCollectionCopy aCopy( CurrentRenderer->GetActors() ); + vtkActorCollection* aCollection = aCopy.GetActors(); + aCollection->InitTraversal(); + while ( vtkActor* aProp = aCollection->GetNextActor() ) + if ( VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast( aProp ) ) + if ( anActor->isPreselected() ) + aSelectedCollection->AddItem( aProp ); + + double bounds[6]; + ::ComputeBounds( aSelectedCollection, bounds ); + + if ( aSelectedCollection->GetNumberOfItems() && ::isBoundValid( bounds ) ) { + CurrentRenderer->ResetCamera( bounds ); + CurrentRenderer->ResetCameraClippingRange( bounds ); + } +} + /*! starts Global Panning operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startGlobalPan() diff --git a/src/VTKViewer/VTKViewer_InteractorStyle.h b/src/VTKViewer/VTKViewer_InteractorStyle.h index 3ac3f9d5a..2b06e5527 100644 --- a/src/VTKViewer/VTKViewer_InteractorStyle.h +++ b/src/VTKViewer/VTKViewer_InteractorStyle.h @@ -93,7 +93,8 @@ class VTKVIEWER_EXPORT VTKViewer_InteractorStyle : public QObject, public vtkInt void OnSelectionModeChanged(); - void ViewFitAll(); + void ViewFitAll(); + void ViewFitSelection(); void SetFilter( const Handle( VTKViewer_Filter)& ); Handle(VTKViewer_Filter) GetFilter( const int ); diff --git a/src/VTKViewer/VTKViewer_Utilities.cxx b/src/VTKViewer/VTKViewer_Utilities.cxx index 8b0d268d1..235f5f9a1 100755 --- a/src/VTKViewer/VTKViewer_Utilities.cxx +++ b/src/VTKViewer/VTKViewer_Utilities.cxx @@ -108,18 +108,25 @@ ResetCamera(vtkRenderer* theRenderer, int ComputeVisiblePropBounds(vtkRenderer* theRenderer, double theBounds[6]) +{ + VTK::ActorCollectionCopy aCopy(theRenderer->GetActors()); + vtkActorCollection* aCollection = aCopy.GetActors(); + return ComputeBounds( aCollection, theBounds ); +} + +/*! Compute the bounds of actors*/ +int +ComputeBounds(vtkActorCollection* theCollection, double theBounds[6]) { int aCount = 0; - + theBounds[0] = theBounds[2] = theBounds[4] = VTK_LARGE_FLOAT; theBounds[1] = theBounds[3] = theBounds[5] = -VTK_LARGE_FLOAT; - + // loop through all props - VTK::ActorCollectionCopy aCopy(theRenderer->GetActors()); - vtkActorCollection* aCollection = aCopy.GetActors(); - aCollection->InitTraversal(); - while (vtkActor* aProp = aCollection->GetNextActor()) { - // if it's invisible, or has no geometry, we can skip the rest + theCollection->InitTraversal(); + while (vtkActor* aProp = theCollection->GetNextActor()) { + // if it's invisible, or has no geometry, we can skip the rest if(aProp->GetVisibility() && aProp->GetMapper() && vtkMath::AreBoundsInitialized(aProp->GetBounds())){ if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(aProp)) if(anActor->IsInfinitive()) diff --git a/src/VTKViewer/VTKViewer_Utilities.h b/src/VTKViewer/VTKViewer_Utilities.h index 5646e7f24..a4f081fa3 100755 --- a/src/VTKViewer/VTKViewer_Utilities.h +++ b/src/VTKViewer/VTKViewer_Utilities.h @@ -26,6 +26,7 @@ #include "VTKViewer.h" class vtkRenderer; +class vtkActorCollection; VTKVIEWER_EXPORT extern @@ -39,6 +40,12 @@ int ComputeVisiblePropBounds(vtkRenderer* theRenderer, double theBounds[6]); +VTKVIEWER_EXPORT +extern +int +ComputeBounds(vtkActorCollection* theCollection, + double theBounds[6]); + VTKVIEWER_EXPORT extern void diff --git a/src/VTKViewer/VTKViewer_ViewWindow.cxx b/src/VTKViewer/VTKViewer_ViewWindow.cxx index fbe64ce4b..084d961af 100755 --- a/src/VTKViewer/VTKViewer_ViewWindow.cxx +++ b/src/VTKViewer/VTKViewer_ViewWindow.cxx @@ -208,6 +208,13 @@ void VTKViewer_ViewWindow::createActions() connect(aAction, SIGNAL(activated()), this, SLOT(activateWindowFit())); myActionsMap[ FitRectId ] = aAction; + //! \li FitSelection + aAction = new QtxAction(tr("MNU_FITSELECTION"), aResMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_FITSELECTION" ) ), + tr( "MNU_FITSELECTION" ), 0, this); + aAction->setStatusTip(tr("DSC_FITSELECTION")); + connect(aAction, SIGNAL(activated()), this, SLOT(onFitSelection())); + myActionsMap[ FitSelectionId ] = aAction; + //! \li Zoom aAction = new QtxAction(tr("MNU_ZOOM_VIEW"), aResMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_ZOOM" ) ), tr( "MNU_ZOOM_VIEW" ), 0, this); @@ -316,6 +323,7 @@ void VTKViewer_ViewWindow::createToolBar() QtxMultiAction* aScaleAction = new QtxMultiAction( this ); aScaleAction->insertAction( myActionsMap[FitAllId] ); aScaleAction->insertAction( myActionsMap[FitRectId] ); + aScaleAction->insertAction( myActionsMap[FitSelectionId] ); aScaleAction->insertAction( myActionsMap[ZoomId] ); myToolBar->addAction( aScaleAction ); @@ -447,6 +455,13 @@ void VTKViewer_ViewWindow::onFitAll() Repaint(); } +/*!On fit selection slot.*/ +void VTKViewer_ViewWindow::onFitSelection() +{ + myRWInteractor->GetInteractorStyle()->ViewFitSelection(); + Repaint(); +} + /*!Set background color of the viewport [obsolete]*/ void VTKViewer_ViewWindow::setBackgroundColor( const QColor& c ) { diff --git a/src/VTKViewer/VTKViewer_ViewWindow.h b/src/VTKViewer/VTKViewer_ViewWindow.h index 86cda9eda..89fabb7d0 100755 --- a/src/VTKViewer/VTKViewer_ViewWindow.h +++ b/src/VTKViewer/VTKViewer_ViewWindow.h @@ -90,6 +90,7 @@ public slots: void onAntiClockWiseView(); void onResetView(); void onFitAll(); + void onFitSelection(); void activateZoom(); void activateWindowFit(); void activateRotation(); @@ -114,7 +115,7 @@ private: void MoveActor( VTKViewer_Actor* theActor ); private: - enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId, + enum { DumpId, FitAllId, FitRectId, FitSelectionId, ZoomId, PanId, GlobalPanId, RotationId, FrontId, BackId, TopId, BottomId, LeftId, RightId, ClockWiseId, AntiClockWiseId, ResetId, TrihedronShowId }; typedef QMap ActionsMap; diff --git a/src/VTKViewer/resources/VTKViewer_images.ts b/src/VTKViewer/resources/VTKViewer_images.ts index d92d54b82..0fabcffa3 100644 --- a/src/VTKViewer/resources/VTKViewer_images.ts +++ b/src/VTKViewer/resources/VTKViewer_images.ts @@ -47,6 +47,10 @@ ICON_VTKVIEWER_VIEW_FITAREA vtk_view_fitarea.png + + ICON_VTKVIEWER_VIEW_FITSELECTION + vtk_view_fitselection.png + ICON_VTKVIEWER_VIEW_FRONT vtk_view_front.png diff --git a/src/VTKViewer/resources/VTKViewer_msg_en.ts b/src/VTKViewer/resources/VTKViewer_msg_en.ts index d06699e4d..32f5a956e 100644 --- a/src/VTKViewer/resources/VTKViewer_msg_en.ts +++ b/src/VTKViewer/resources/VTKViewer_msg_en.ts @@ -123,6 +123,14 @@ MNU_FITRECT Fit Area + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + DSC_BOTTOM_VIEW Bottom View diff --git a/src/VTKViewer/resources/VTKViewer_msg_fr.ts b/src/VTKViewer/resources/VTKViewer_msg_fr.ts index 2d2a9e45c..1c000abbb 100755 --- a/src/VTKViewer/resources/VTKViewer_msg_fr.ts +++ b/src/VTKViewer/resources/VTKViewer_msg_fr.ts @@ -123,6 +123,14 @@ MNU_FITRECT Ajuster à la zone + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + DSC_BOTTOM_VIEW Vue de dessous diff --git a/src/VTKViewer/resources/VTKViewer_msg_ja.ts b/src/VTKViewer/resources/VTKViewer_msg_ja.ts index 0e4193619..eb9361ce5 100644 --- a/src/VTKViewer/resources/VTKViewer_msg_ja.ts +++ b/src/VTKViewer/resources/VTKViewer_msg_ja.ts @@ -123,6 +123,14 @@ MNU_FITRECT 選択範囲表示 + + MNU_FITSELECTION + Fit Selection + + + DSC_FITSELECTION + Fit all selected objects inside the view frame + DSC_BOTTOM_VIEW 下から表示します。 diff --git a/src/VTKViewer/resources/vtk_view_fitselection.png b/src/VTKViewer/resources/vtk_view_fitselection.png new file mode 100644 index 0000000000000000000000000000000000000000..748df08b7849bece17be6433256b6b80412a9008 GIT binary patch literal 913 zcmV;C18)3@P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2j2w` z200DOhZe~I00R+8L_t(I%bk=>Xk1kohMzO{CT%*TKXhcI)ly1Tn6022B?K2{62a6I z{M)Fd3m4LED$PRFY^p|yh$x6)UAQQP#!5sgbRmLZjkOeV)3Mc-CTTh*lbQRMxxeRg zk(o3MGcEeT2j?8_`<(M~&V3dCqgDmg7^*D_-SI;a$+uZP0GtMrjHL6-+-KKfs;e4KjT8*mjziL_5N#GG+&&0$;wz_HG zWOr^q^(Y}pg)mO}d-f7%KYR^fzqtW+tO;ARZK}RM+JFI+L}VNAW7}Wq<@M#q%m(a8 zmtlO+gjGCm)UvGiT6D$Z-;`KdDpLy#>QRCS{P1=k+57gc$AMWW6z=abjE^76=P5f5 z70-LqvaIoTC#l*FRolUfOj4~81b{RS@4UmYv9Wk-PY=tk%aZFJ?F0h|VoeyOYcQRn zlNf-=uiXKTjEp1|&wJ?~*FD@wkdC$FgjB0FoZHuMZvTa|SX#@+m3aZ`fMM2A&h!kY z8ey5<4d_-DNdkwsZX;>hv??>-jjsadfD$5-X$GW-WbP8a10r%oL~ge9yogMS$P@Pp n*jC_XV5m(XC}378H4X4DT~fT_#}{}}00000NkvXXu0mjfoOqkf literal 0 HcmV?d00001 -- 2.39.2