X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_VTKUtils.h;h=7a6f4e6c529c02257315a85cce0f96eaa60ded56;hp=6e6fd84ed0ca5c8711245b70881a4e3b1357fe35;hb=ea8a0289f14641c23d515de68aa4fdc24a6208ba;hpb=cf821820616e8898e3abcd46608c4ba2e054c188 diff --git a/src/SMESHGUI/SMESHGUI_VTKUtils.h b/src/SMESHGUI/SMESHGUI_VTKUtils.h index 6e6fd84ed..7a6f4e6c5 100644 --- a/src/SMESHGUI/SMESHGUI_VTKUtils.h +++ b/src/SMESHGUI/SMESHGUI_VTKUtils.h @@ -1,194 +1,276 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org - -#ifndef SMESHGUI_VTKUtils_HeaderFile -#define SMESHGUI_VTKUtils_HeaderFile - -class QString; -class vtkRenderer; -class TColStd_IndexedMapOfInteger; +// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SMESH SMESHGUI : GUI for SMESH component +// File : SMESHGUI_VTKUtils.h +// Author : Open CASCADE S.A.S. +// +#ifndef SMESHGUI_VTKUTILS_H +#define SMESHGUI_VTKUTILS_H + +// SMESH includes +#include "SMESH_SMESHGUI.hxx" +#include "SMESH_TypeDefs.hxx" +#include "SMDS_MeshNode.hxx" + +#include "SMESHGUI_Utils.h" + +#include + +// SALOME KERNEL includes +#include + +// SALOME GUI includes +#include +#include -#include "SALOME_InteractiveObject.hxx" -#include "VTKViewer_Filter.h" +class TColStd_IndexedMapOfInteger; -class QAD_Study; -class QAD_StudyFrame; -class SALOME_Selection; -class VTKViewer_ViewFrame; -class VTKViewer_InteractorStyleSALOME; +class SALOMEDSClient_Study; -#include +class SUIT_ViewWindow; +class SUIT_ViewManager; -#include "SALOMEconfig.h" -#include CORBA_CLIENT_HEADER(SALOMEDS) +class SVTK_ViewWindow; +class SVTK_Selector; -#include -#include "SMESH_Object.h" +class LightApp_SelectionMgr; +class SalomeApp_Module; -class SALOME_Actor; +class SMESHGUI; class SMESH_Actor; +class SALOME_Actor; -namespace SMESH{ - +class vtkActor; +class SMDS_Mesh; +class SMDS_MeshNode; +class gp_Pln; +class gp_Lin; +class gp_Dir; +class gp_Pnt2d; +class gp_Vec2d; +class Handle(Geom_Line); +class Handle(Geom_Plane); +namespace SMESH +{ //---------------------------------------------------------------------------- - typedef pair TKeyOfVisualObj; + typedef std::pair TKeyOfVisualObj; - TVisualObjPtr GetVisualObj(int theStudyId, - const char* theEntry); - +SMESHGUI_EXPORT + TVisualObjPtr GetVisualObj( int, const char*, bool nulData =false ); +SMESHGUI_EXPORT + void OnVisuException(); // PAL16631 //---------------------------------------------------------------------------- - QAD_StudyFrame* GetActiveStudyFrame(); - - VTKViewer_ViewFrame* FindVtkViewFrame(QAD_Study* theStudy, - QAD_StudyFrame* theStudyFrame); - - VTKViewer_ViewFrame* GetVtkViewFrame(QAD_StudyFrame* theStudyFrame); +SMESHGUI_EXPORT + SVTK_ViewWindow* GetViewWindow( const SalomeApp_Module* = 0, + bool = false ); +SMESHGUI_EXPORT + SVTK_ViewWindow* FindVtkViewWindow( SUIT_ViewManager*, SUIT_ViewWindow* ); +SMESHGUI_EXPORT + SVTK_ViewWindow* GetVtkViewWindow( SUIT_ViewWindow* ); - VTKViewer_ViewFrame* GetCurrentVtkView(); - - void RepaintViewFrame(VTKViewer_ViewFrame* theFrame); - - void RenderViewFrame(VTKViewer_ViewFrame* theFrame); +SMESHGUI_EXPORT + SVTK_ViewWindow* GetCurrentVtkView(); //---------------------------------------------------------------------------- - SMESH_Actor* FindActorByEntry(QAD_StudyFrame *theStudyFrame, - const char* theEntry); - SMESH_Actor* FindActorByEntry(const char* theEntry); - - SMESH_Actor* FindActorByObject(CORBA::Object_ptr theObject); - +SMESHGUI_EXPORT + void RepaintCurrentView(); +SMESHGUI_EXPORT + void RepaintViewWindow( SVTK_ViewWindow* ); +SMESHGUI_EXPORT + void RenderViewWindow( SVTK_ViewWindow* ); +SMESHGUI_EXPORT + void FitAll(); //---------------------------------------------------------------------------- - SMESH_Actor* CreateActor(SALOMEDS::Study_ptr theStudy, - const char* theEntry, - int theIsClear = false); +SMESHGUI_EXPORT + SMESH_Actor* FindActorByEntry( SUIT_ViewWindow*, const char* ); +SMESHGUI_EXPORT + SMESH_Actor* FindActorByEntry( const char* ); - void DisplayActor(QAD_StudyFrame *theStudyFrame, - SMESH_Actor* theActor); - void RemoveActor(QAD_StudyFrame *theStudyFrame, - SMESH_Actor* theActor); +SMESHGUI_EXPORT + SMESH_Actor* FindActorByObject( CORBA::Object_ptr ); + //---------------------------------------------------------------------------- +SMESHGUI_EXPORT + SMESH_Actor* CreateActor( _PTR(Study), const char*, int = false ); +SMESHGUI_EXPORT + void DisplayActor( SUIT_ViewWindow*, SMESH_Actor* ); +SMESHGUI_EXPORT + void RemoveActor( SUIT_ViewWindow*, SMESH_Actor* ); +SMESHGUI_EXPORT + void RemoveVisuData( int ); //---------------------------------------------------------------------------- - enum EDisplaing {eDisplayAll, eDisplay, eDisplayOnly, eErase, eEraseAll}; - void UpdateView(QAD_StudyFrame *theStudyFrame, - EDisplaing theAction, - const char* theEntry = ""); - void UpdateView(EDisplaing theAction, - const char* theEntry = ""); + enum EDisplaing { eDisplayAll, eDisplay, eDisplayOnly, eErase, eEraseAll }; + +SMESHGUI_EXPORT + bool UpdateView( SUIT_ViewWindow*, EDisplaing, const char* = "" ); +SMESHGUI_EXPORT + bool UpdateView( EDisplaing, const char* = "" ); +SMESHGUI_EXPORT void UpdateView(); - void Update(const Handle(SALOME_InteractiveObject)& theIO, - bool theDisplay); +SMESHGUI_EXPORT + bool UpdateNulData( const Handle(SALOME_InteractiveObject)& theIO, bool theDisplay); +SMESHGUI_EXPORT + bool Update( const Handle(SALOME_InteractiveObject)& theIO, bool theDisplay); //---------------------------------------------------------------------------- - void FitAll(); +SMESHGUI_EXPORT + void SetPointRepresentation( bool ); - void RepaintCurrentView(); +SMESHGUI_EXPORT + void SetPickable( SMESH_Actor* = 0 ); - vtkRenderer* GetCurrentRenderer(); +SMESHGUI_EXPORT + void UpdateSelectionProp( SMESHGUI* ); +SMESHGUI_EXPORT + void UpdateFontProp( SMESHGUI* ); //---------------------------------------------------------------------------- - void SetPointRepresentation(bool theIsVisible); +SMESHGUI_EXPORT + SVTK_Selector* GetSelector( SUIT_ViewWindow* = GetActiveWindow() ); - void SetPickable(SMESH_Actor* theActor = NULL); +SMESHGUI_EXPORT + void SetFilter( const Handle(VTKViewer_Filter)&, SVTK_Selector* = GetSelector() ); +SMESHGUI_EXPORT + Handle(VTKViewer_Filter) GetFilter( int, SVTK_Selector* = GetSelector() ); +SMESHGUI_EXPORT + bool IsFilterPresent( int, SVTK_Selector* = GetSelector() ); +SMESHGUI_EXPORT + void RemoveFilter( int, SVTK_Selector* = GetSelector() ); - void UpdateSelectionProp(); +SMESHGUI_EXPORT + void RemoveFilters( SVTK_Selector* = GetSelector()); +SMESHGUI_EXPORT + bool IsValid( SALOME_Actor*, int, SVTK_Selector* = GetSelector() ); //---------------------------------------------------------------------------- - VTKViewer_InteractorStyleSALOME* - GetInteractorStyle(QAD_StudyFrame *theStudyFrame = GetActiveStudyFrame()); - - void SetFilter(const Handle(VTKViewer_Filter)& theFilter, - VTKViewer_InteractorStyleSALOME* theStyle = GetInteractorStyle()); - - Handle(VTKViewer_Filter) - GetFilter(int theId, VTKViewer_InteractorStyleSALOME* theStyle = GetInteractorStyle()); - - bool IsFilterPresent(int theId, - VTKViewer_InteractorStyleSALOME* theStyle = GetInteractorStyle()); - - void RemoveFilter(int theId, - VTKViewer_InteractorStyleSALOME* theStyle = GetInteractorStyle()); - - void RemoveFilters(VTKViewer_InteractorStyleSALOME* theStyle = GetInteractorStyle()); - - bool IsValid(SALOME_Actor* theActor, int theCellId, - VTKViewer_InteractorStyleSALOME* theStyle = GetInteractorStyle()); +SMESHGUI_EXPORT + int GetNameOfSelectedSortedNodes( SMDSAbs_EntityType, + SVTK_Selector*, + SMESH_Actor*, + int, + QString& ); +SMESHGUI_EXPORT + int GetNameOfSelectedNodes( SVTK_Selector*, + const Handle(SALOME_InteractiveObject)&, + QString& ); +SMESHGUI_EXPORT + int GetNameOfSelectedElements( SVTK_Selector*, + const Handle(SALOME_InteractiveObject)&, + QString& ); +SMESHGUI_EXPORT + int GetEdgeNodes( SVTK_Selector*, const TVisualObjPtr&, int&, int& ); //---------------------------------------------------------------------------- - int GetNameOfSelectedNodes(SALOME_Selection *theSel, - const Handle(SALOME_InteractiveObject)& theIO, - QString& theName); - - int GetNameOfSelectedNodes(SALOME_Selection *theSel, - QString& aName); - - int GetNameOfSelectedElements(SALOME_Selection *theSel, - const Handle(SALOME_InteractiveObject)& theIO, - QString& theName); - - int GetNameOfSelectedElements(SALOME_Selection *theSel, - QString& aName); - - int GetSelected(SALOME_Selection* theSel, - TColStd_IndexedMapOfInteger& theMap, - const bool theIsElement = true ); - - int GetEdgeNodes(SALOME_Selection* theSel, int& theId1, int& theId2); - - void SetControlsPrecision( const long theVal ); - -}; - - +SMESHGUI_EXPORT + int GetNameOfSelectedNodes( LightApp_SelectionMgr*, + const Handle(SALOME_InteractiveObject)&, + QString& ); +SMESHGUI_EXPORT + int GetNameOfSelectedNodes( LightApp_SelectionMgr*, QString& ); +SMESHGUI_EXPORT + int GetNameOfSelectedElements( LightApp_SelectionMgr*, + const Handle(SALOME_InteractiveObject)&, + QString& ); +SMESHGUI_EXPORT + int GetNameOfSelectedElements( LightApp_SelectionMgr*, QString& ); +SMESHGUI_EXPORT + int GetSelected( LightApp_SelectionMgr*, TColStd_IndexedMapOfInteger&, + const bool = true ); + +SMESHGUI_EXPORT + int GetEdgeNodes( LightApp_SelectionMgr*, int&, int& ); + +SMESHGUI_EXPORT + void SetControlsPrecision( const long ); + +#ifndef DISABLE_PLOT2DVIEWER +SMESHGUI_EXPORT + void ClearPlot2Viewers( SUIT_ViewWindow* theWindow ); #endif + //---------------------------------------------------------------------------- +SMESHGUI_EXPORT + bool ComputeClippingPlaneParameters( std::list theActorList, + double theNormal[3], + double theDist, + double theBounds[6], + double theOrigin[3] ); + + bool ComputeBounds( std::list theActorList, + double theBounds[6]); + + void PositionToDistance( double theBounds[6], + double theDirection[3], + double thePos[3], + double& theDist ); + typedef std::pair TNodeOfDist; + typedef std::pair > TNodeOfAngleAndDist, TNodeOfDistToPlaneAndDist; + typedef std::pair > TIdOfDistToPlaneAndDist; + bool CreatePlaneOnThreePoints( const gp_Pnt& thePoint1, + const gp_Pnt& thePoint2, + const gp_Pnt& thePoint3, + gp_Pln& thePlane ); + + void FindNbLowestPoint( std::list theList, gp_Pnt2d& theNode ); + bool IsNotPlaneIntersection( std::vector& theVector, + const gp_Pln& thePlane ); + bool GetCorrectSequenceOfId( std::vector& theVector ); + void GetCorrectSequenceTwoPlaneOfId( std::vector& thePlane1, + std::vector& thePlane2, + std::list& theResultListId ); + void GetSortedNodesOnPolygon( std::vector& theVectorOfNode, + std::list& theResultListId ); + void GetSortedNodesOnPyramid( std::vector& theVectorOfNode, + std::list& theResultListId ); + void GetSortedNodesOnPrism( std::vector& theVectorOfNode, + std::list& theResultListId ); + bool Get2BasePlane( std::vector& theVector, + std::vector& thePlane1, + std::vector& thePlane2); + bool GetNextCombination ( std::vector & theVector1, + std::vector & theVector2, + int theNbPoint ); + static bool CompareNodeOfAngleAndDist ( const TNodeOfAngleAndDist& first, + const TNodeOfAngleAndDist& second ); + static bool CompareNodeOfDist ( const TNodeOfAngleAndDist& first, + const TNodeOfAngleAndDist& second ); + static bool CompareDistOfPlane ( const TNodeOfDistToPlaneAndDist& first, + const TNodeOfDistToPlaneAndDist& second ); + static bool CompareDistOfPlaneById ( const TIdOfDistToPlaneAndDist& first, + const TIdOfDistToPlaneAndDist& second ); + static bool CompareDistForCorrectPlane ( const TNodeOfDist& first, + const TNodeOfDist& second ); + + SMESHGUI_EXPORT + void RemoveVisualObjectWithActors( const char* theEntry, bool fromAllViews = false ); +}; - - - - - - - - - - - - - - - - - - - - - - - - - - +#endif // SMESHGUI_VTKUTILS_H