Salome HOME
Update of CheckDone
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MeshOp.h
index 8ca98864e66f2aec446b911d5fef3e9552ec5f33..de6803a4064b17fbd311d1837cde2fbe5b904544 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include "SMESHGUI_SelectionOp.h"
 
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SMESH_Gen)
+#include CORBA_CLIENT_HEADER(GEOM_Gen)
+
 class HypothesesSet;
 class SMESHGUI_MeshDlg;
 class SMESHGUI_ShapeByMeshOp;
@@ -82,20 +87,24 @@ protected slots:
   void                           onPublishShapeByMeshDlg( SUIT_Operation* );
   void                           onCloseShapeByMeshDlg( SUIT_Operation* );
   void                           onAlgoSelected( const int, const int = -1 );
-  void                           processSet();
   void                           onHypoCreated( int );
   void                           onHypoEdited( int );
   void                           onAlgoSetByMeshType( const int, const int );
 
 private:
   typedef QList<HypothesisData*> THypDataList; // typedef: list of hypothesis data
+  typedef QMap<QString, bool>    THypLabelIsAppMap; // typedef: map of hypothesis is applicable
 
   bool                           isValid( QString& ) const;
+  bool                           isCompatibleToGeometry( HypothesisData* , const int);
+  bool                           isCompatibleToMeshType( HypothesisData* , const int);
   void                           availableHyps( const int, 
                                                 const int,
                                                 QStringList&,
                                                 THypDataList&,
-                                                HypothesisData* = 0 ) const;
+                                                HypothesisData* = 0,
+                                                HypothesisData* = 0,
+                                                const QString& = "");
   void                           existingHyps( const int, 
                                                const int, 
                                                _PTR(SObject),
@@ -111,7 +120,9 @@ private:
 
   bool                           createMesh( QString&, QStringList& );
   bool                           createSubMesh( QString&, QStringList& );
-  bool                           editMeshOrSubMesh( QString& );
+  bool                           editMeshOrSubMesh( QString&, QStringList& );
+  void                           createSubMeshOnInternalEdges( SMESH::SMESH_Mesh_ptr mesh,
+                                                               GEOM::GEOM_Object_ptr mainShape );
   bool                           checkSubMeshConcurrency( SMESH::SMESH_Mesh_ptr    mesh,
                                                           SMESH::SMESH_subMesh_ptr submesh,
                                                           bool                     askUser=false);
@@ -120,7 +131,7 @@ private:
   bool                           isSelectedHyp( int, int, int ) const;
   int                            nbDlgHypTypes( const int ) const;
   bool                           isAccessibleDim( const int ) const;
-  void                           setCurrentHyp( const int, const int, const int );
+  void                           setCurrentHyp( const int, const int, const int, const bool=false);
   void                           setDefaultName( const QString& prefix="" ) const;
   SMESH::SMESH_Hypothesis_var    getAlgo( const int );
   void                           readMesh();
@@ -128,15 +139,19 @@ private:
   int                            find( const SMESH::SMESH_Hypothesis_var&,
                                        const THypList& ) const;
   SMESH::SMESH_Hypothesis_var    getInitParamsHypothesis( const QString&,
-                                                          const QString& ) const;
+                                                          const QString&,
+                                                          const SMESH::HypInitParams* prm=0) const;
   void                           initHypCreator( SMESHGUI_GenericHypothesisCreator* aCreator );
+  bool                           getAverageSize( double & averageSize );
   bool                           isSubshapeOk() const;
   char*                          isSubmeshIgnored() const;
   _PTR(SObject)                  getSubmeshByGeom() const;
   void                           selectObject( _PTR(SObject) ) const;
-  void                           createMeshTypeList( QStringList& );
-  void                           setAvailableMeshType( const QStringList& );
-  void                           setFilteredAlgoData( const int, const int );
+  void                           updateMeshTypeList();
+  void                           updateHypoSets();
+  void                           setFilteredAlgoData();
+  QStringList                    getHypoNames();
+  void                           logSmeshParams();
 
 private:
 
@@ -144,18 +159,27 @@ private:
   SMESHGUI_ShapeByMeshOp*        myShapeByMeshOp;
   bool                           myToCreate;
   bool                           myIsMesh;
-  bool                           myIsOnGeometry; //!< TRUE if edited mesh accotiated with geometrical object
+  bool                           myIsOnGeometry; //!< TRUE if edited mesh is based on geometry
   bool                           myHasConcurrentSubBefore;
+  bool                           myIsInvalidSubMesh; //!< "invalid sub-mesh" is edited
+  // The geometry of "invalid sub-mesh" is not a sub-shape of the main shape;
+  // it is created for the case where a valid sub-shape not found by CopyMeshWithGeom()
+
+  QString                        myGeomEntry;
+  GEOM::GEOM_Object_var          myGeom;
 
   TDim2Type2HypList              myExistingHyps; //!< all hypothesis of SMESH module
-  TDim2Type2HypList              myObjHyps;      //!< hypothesis assigned to the current 
+  TDim2Type2HypList              myObjHyps;      //!< hypothesis assigned to the current
                                                  //   edited mesh/sub-mesh
   // hypdata corresponding to hypotheses present in myDlg
   THypDataList                   myAvailableHypData[4][NbHypTypes];
-  THypDataList                   myFilteredAlgoData[4];
+  QString                        myLastGeomEntry;
+  THypLabelIsAppMap              myHypMapIsApplicable;
   bool                           myIgnoreAlgoSelection;
-  HypothesesSet* myHypoSet;
-  int myDim, myType, myMaxShapeDim;
+  int                            myDim, myType, myMaxShapeDim;
+
+  HypothesesSet*                 myHypoSet; // applied hypo-set
+  double                         myAverageSize; // entered at hypo-set processing
 
   QString                        myObjectToSelect;
 };