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=d13e37de33c67184efbd7fb80a383308b32cf06a;hb=ea8a0289f14641c23d515de68aa4fdc24a6208ba;hpb=79b1ac2b6df9117f16f11d444b1f165d477a1813 diff --git a/src/SMESHGUI/SMESHGUI_VTKUtils.h b/src/SMESHGUI/SMESHGUI_VTKUtils.h index d13e37de3..7a6f4e6c5 100644 --- a/src/SMESHGUI/SMESHGUI_VTKUtils.h +++ b/src/SMESHGUI/SMESHGUI_VTKUtils.h @@ -1,50 +1,52 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE // -// 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. +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// 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. +// 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. // -// 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 +// 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 // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com - -using namespace std; -#ifndef SMESHGUI_VTKUtils_HeaderFile -#define SMESHGUI_VTKUtils_HeaderFile +// 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 "SALOMEDSClient_definitions.hxx" -#include "SALOME_InteractiveObject.hxx" -#include "VTKViewer_Filter.h" - -#include "SMESH_Object.h" #include "SMESHGUI_Utils.h" -#include +#include -#include "SALOMEconfig.h" -#include CORBA_CLIENT_HEADER(SALOMEDS) +// SALOME KERNEL includes +#include -#include - -class QString; +// SALOME GUI includes +#include +#include class TColStd_IndexedMapOfInteger; class SALOMEDSClient_Study; -class SUIT_Study; class SUIT_ViewWindow; class SUIT_ViewManager; @@ -58,25 +60,34 @@ 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; SMESHGUI_EXPORT - TVisualObjPtr GetVisualObj(int theStudyId, - const char* theEntry); + TVisualObjPtr GetVisualObj( int, const char*, bool nulData =false ); SMESHGUI_EXPORT void OnVisuException(); // PAL16631 //---------------------------------------------------------------------------- SMESHGUI_EXPORT - SVTK_ViewWindow* GetViewWindow(const SalomeApp_Module* theModule = NULL, - bool createIfNotFound = false); + SVTK_ViewWindow* GetViewWindow( const SalomeApp_Module* = 0, + bool = false ); SMESHGUI_EXPORT - SVTK_ViewWindow* FindVtkViewWindow(SUIT_ViewManager*, SUIT_ViewWindow*); + SVTK_ViewWindow* FindVtkViewWindow( SUIT_ViewManager*, SUIT_ViewWindow* ); SMESHGUI_EXPORT - SVTK_ViewWindow* GetVtkViewWindow(SUIT_ViewWindow*); + SVTK_ViewWindow* GetVtkViewWindow( SUIT_ViewWindow* ); SMESHGUI_EXPORT SVTK_ViewWindow* GetCurrentVtkView(); @@ -85,121 +96,181 @@ SMESHGUI_EXPORT SMESHGUI_EXPORT void RepaintCurrentView(); SMESHGUI_EXPORT - void RepaintViewWindow(SVTK_ViewWindow*); + void RepaintViewWindow( SVTK_ViewWindow* ); SMESHGUI_EXPORT - void RenderViewWindow(SVTK_ViewWindow*); + void RenderViewWindow( SVTK_ViewWindow* ); SMESHGUI_EXPORT void FitAll(); //---------------------------------------------------------------------------- SMESHGUI_EXPORT - SMESH_Actor* FindActorByEntry (SUIT_ViewWindow*, const char* theEntry); + SMESH_Actor* FindActorByEntry( SUIT_ViewWindow*, const char* ); SMESHGUI_EXPORT - SMESH_Actor* FindActorByEntry (const char* theEntry); + SMESH_Actor* FindActorByEntry( const char* ); SMESHGUI_EXPORT - SMESH_Actor* FindActorByObject (CORBA::Object_ptr theObject); + SMESH_Actor* FindActorByObject( CORBA::Object_ptr ); //---------------------------------------------------------------------------- SMESHGUI_EXPORT - SMESH_Actor* CreateActor (_PTR(Study), const char*, int = false); + SMESH_Actor* CreateActor( _PTR(Study), const char*, int = false ); SMESHGUI_EXPORT - void DisplayActor (SUIT_ViewWindow*, SMESH_Actor* theActor); + void DisplayActor( SUIT_ViewWindow*, SMESH_Actor* ); SMESHGUI_EXPORT - void RemoveActor (SUIT_ViewWindow*, SMESH_Actor* theActor); + void RemoveActor( SUIT_ViewWindow*, SMESH_Actor* ); SMESHGUI_EXPORT - void RemoveVisuData(int studyID); + void RemoveVisuData( int ); //---------------------------------------------------------------------------- - enum EDisplaing {eDisplayAll, eDisplay, eDisplayOnly, eErase, eEraseAll}; + enum EDisplaing { eDisplayAll, eDisplay, eDisplayOnly, eErase, eEraseAll }; + SMESHGUI_EXPORT - bool UpdateView (SUIT_ViewWindow*, - EDisplaing theAction, - const char* theEntry = "" ); -SMESHGUI_EXPORT - bool UpdateView (EDisplaing theAction, - const char* theEntry = ""); + bool UpdateView( SUIT_ViewWindow*, EDisplaing, const char* = "" ); +SMESHGUI_EXPORT + bool UpdateView( EDisplaing, const char* = "" ); SMESHGUI_EXPORT void UpdateView(); SMESHGUI_EXPORT - bool Update(const Handle(SALOME_InteractiveObject)& theIO, - bool theDisplay); + bool UpdateNulData( const Handle(SALOME_InteractiveObject)& theIO, bool theDisplay); +SMESHGUI_EXPORT + bool Update( const Handle(SALOME_InteractiveObject)& theIO, bool theDisplay); //---------------------------------------------------------------------------- SMESHGUI_EXPORT - void SetPointRepresentation(bool theIsVisible); + void SetPointRepresentation( bool ); SMESHGUI_EXPORT - void SetPickable(SMESH_Actor* theActor = NULL); + void SetPickable( SMESH_Actor* = 0 ); SMESHGUI_EXPORT void UpdateSelectionProp( SMESHGUI* ); +SMESHGUI_EXPORT + void UpdateFontProp( SMESHGUI* ); //---------------------------------------------------------------------------- SMESHGUI_EXPORT - SVTK_Selector* GetSelector (SUIT_ViewWindow* = GetActiveWindow()); + SVTK_Selector* GetSelector( SUIT_ViewWindow* = GetActiveWindow() ); SMESHGUI_EXPORT - void SetFilter (const Handle(VTKViewer_Filter)& theFilter, - SVTK_Selector* theSelector = GetSelector()); + void SetFilter( const Handle(VTKViewer_Filter)&, SVTK_Selector* = GetSelector() ); SMESHGUI_EXPORT - Handle(VTKViewer_Filter) GetFilter (int theId, SVTK_Selector* theSelector = GetSelector()); + Handle(VTKViewer_Filter) GetFilter( int, SVTK_Selector* = GetSelector() ); SMESHGUI_EXPORT - bool IsFilterPresent (int theId, SVTK_Selector* theSelector = GetSelector()); + bool IsFilterPresent( int, SVTK_Selector* = GetSelector() ); SMESHGUI_EXPORT - void RemoveFilter (int theId, SVTK_Selector* theSelector = GetSelector()); + void RemoveFilter( int, SVTK_Selector* = GetSelector() ); SMESHGUI_EXPORT - void RemoveFilters (SVTK_Selector* theSelector = GetSelector()); + void RemoveFilters( SVTK_Selector* = GetSelector()); SMESHGUI_EXPORT - bool IsValid (SALOME_Actor* theActor, int theCellId, - SVTK_Selector* theSelector = GetSelector()); + bool IsValid( SALOME_Actor*, int, SVTK_Selector* = GetSelector() ); //---------------------------------------------------------------------------- SMESHGUI_EXPORT - int GetNameOfSelectedNodes(SVTK_Selector* theSelector, - const Handle(SALOME_InteractiveObject)& theIO, - QString& theName); + 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* theSelector, - const Handle(SALOME_InteractiveObject)& theIO, - QString& theName); + int GetNameOfSelectedElements( SVTK_Selector*, + const Handle(SALOME_InteractiveObject)&, + QString& ); SMESHGUI_EXPORT - int GetEdgeNodes(SVTK_Selector* theSelector, - const TVisualObjPtr& theVisualObj, - int& theId1, - int& theId2); + int GetEdgeNodes( SVTK_Selector*, const TVisualObjPtr&, int&, int& ); //---------------------------------------------------------------------------- SMESHGUI_EXPORT - int GetNameOfSelectedNodes (LightApp_SelectionMgr*, - const Handle(SALOME_InteractiveObject)& theIO, - QString& theName); + int GetNameOfSelectedNodes( LightApp_SelectionMgr*, + const Handle(SALOME_InteractiveObject)&, + QString& ); SMESHGUI_EXPORT - int GetNameOfSelectedNodes (LightApp_SelectionMgr*, - QString& aName); + int GetNameOfSelectedNodes( LightApp_SelectionMgr*, QString& ); SMESHGUI_EXPORT - int GetNameOfSelectedElements (LightApp_SelectionMgr*, - const Handle(SALOME_InteractiveObject)& theIO, - QString& theName); + int GetNameOfSelectedElements( LightApp_SelectionMgr*, + const Handle(SALOME_InteractiveObject)&, + QString& ); SMESHGUI_EXPORT - int GetNameOfSelectedElements (LightApp_SelectionMgr*, - QString& aName); + int GetNameOfSelectedElements( LightApp_SelectionMgr*, QString& ); SMESHGUI_EXPORT - int GetSelected (LightApp_SelectionMgr*, - TColStd_IndexedMapOfInteger& theMap, - const bool theIsElement = true ); + int GetSelected( LightApp_SelectionMgr*, TColStd_IndexedMapOfInteger&, + const bool = true ); SMESHGUI_EXPORT - int GetEdgeNodes (LightApp_SelectionMgr*, int& theId1, int& theId2); + int GetEdgeNodes( LightApp_SelectionMgr*, int&, int& ); SMESHGUI_EXPORT - void SetControlsPrecision (const long theVal); -}; + 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