Salome HOME
unused variables
[modules/smesh.git] / src / SMESH / SMESH_MeshEditor.hxx
index ccab3fbb69402cb648d1b77d700f6a476ad11c4c..a0dec46dc3d39e2c8f08e42a312c008a5dba7a7b 100644 (file)
 
 #include "SMESH_SMESH.hxx"
 
-#include "SMESH_Mesh.hxx"
+#include "SMDS_MeshElement.hxx"
 #include "SMESH_Controls.hxx"
-#include "SMESH_SequenceOfNode.hxx"
+#include "SMESH_Mesh.hxx"
 #include "SMESH_SequenceOfElemPtr.hxx"
-#include "TColStd_HSequenceOfReal.hxx"
-#include "SMESH_MesherHelper.hxx"
-#include "SMDS_MeshElement.hxx"
+#include "SMESH_SequenceOfNode.hxx"
 
+#include <TColStd_HSequenceOfReal.hxx>
 #include <gp_Dir.hxx>
 
 #include <list>
 #include <map>
+#include <set>
+
+class SMDS_MeshFace;
+class SMDS_MeshNode;
+class gp_Ax1;
+class gp_Vec;
+class gp_Pnt;
+class SMESH_MesherHelper;
+
 
 typedef std::map<const SMDS_MeshElement*,
                  std::list<const SMDS_MeshElement*> >        TElemOfElemListMap;
 typedef std::map<const SMDS_MeshNode*, const SMDS_MeshNode*> TNodeNodeMap;
 
+ //!< Set of elements sorted by ID, to be used to assure predictability of edition
+typedef std::set< const SMDS_MeshElement*, TIDCompare >      TIDSortedElemSet;
+
+typedef pair< const SMDS_MeshNode*, const SMDS_MeshNode* >   NLink;
 
-typedef pair< const SMDS_MeshNode*, const SMDS_MeshNode* > NLink;
 
 //=======================================================================
 /*!
@@ -62,29 +73,10 @@ struct SMESH_TLink: public NLink
   { if ( n1->GetID() < n2->GetID() ) std::swap( first, second ); }
   SMESH_TLink(const NLink& link ):NLink( link )
   { if ( first->GetID() < second->GetID() ) std::swap( first, second ); }
+  const SMDS_MeshNode* node1() const { return first; }
+  const SMDS_MeshNode* node2() const { return second; }
 };
 
-
-class SMDS_MeshFace;
-class SMDS_MeshNode;
-class gp_Ax1;
-class gp_Vec;
-class gp_Pnt;
-
-// ============================================================
-/*!
- * \brief Set of elements sorted by ID, to be used to assure
- *  predictability of edition
- */
-// ============================================================
-
-template < class TMeshElem = SMDS_MeshElement>
-struct TIDCompare {
-  bool operator () (const TMeshElem* e1, const TMeshElem* e2) const
-  { return e1->GetID() < e2->GetID(); }
-};
-typedef std::set< const SMDS_MeshElement*, TIDCompare< SMDS_MeshElement> > TIDSortedElemSet;
-
 // ============================================================
 /*!
  * \brief Searcher for the node closest to point
@@ -96,6 +88,53 @@ struct SMESH_NodeSearcher
   virtual const SMDS_MeshNode* FindClosestTo( const gp_Pnt& pnt ) = 0;
 };
 
+
+//=======================================================================
+/*!
+ * auxiliary class
+ */
+//=======================================================================
+class SMESH_MeshEditor_PathPoint {
+public:
+  SMESH_MeshEditor_PathPoint() {
+    myPnt.SetCoord(99., 99., 99.);
+    myTgt.SetCoord(1.,0.,0.);
+    myAngle=0.;
+    myPrm=0.;
+  }
+  void SetPnt(const gp_Pnt& aP3D){
+    myPnt=aP3D;
+  }
+  void SetTangent(const gp_Dir& aTgt){
+    myTgt=aTgt;
+  }
+  void SetAngle(const double& aBeta){
+    myAngle=aBeta;
+  }
+  void SetParameter(const double& aPrm){
+    myPrm=aPrm;
+  }
+  const gp_Pnt& Pnt()const{
+    return myPnt;
+  }
+  const gp_Dir& Tangent()const{
+    return myTgt;
+  }
+  double Angle()const{
+    return myAngle;
+  }
+  double Parameter()const{
+    return myPrm;
+  }
+
+protected:
+  gp_Pnt myPnt;
+  gp_Dir myTgt;
+  double myAngle;
+  double myPrm;
+};
+
+
 // ============================================================
 /*!
  * \brief Editor of a mesh
@@ -303,6 +342,16 @@ public:
                                        const SMDS_MeshNode* theNodeStart,
                                        const bool           theHasAngles,
                                        std::list<double>&   theAngles,
+                                       const bool           theLinearVariation,
+                                       const bool           theHasRefPoint,
+                                       const gp_Pnt&        theRefPoint,
+                                       const bool           theMakeGroups);
+  Extrusion_Error ExtrusionAlongTrack (TIDSortedElemSet &   theElements,
+                                       SMESH_Mesh*          theTrackPattern,
+                                       const SMDS_MeshNode* theNodeStart,
+                                       const bool           theHasAngles,
+                                       std::list<double>&   theAngles,
+                                       const bool           theLinearVariation,
                                        const bool           theHasRefPoint,
                                        const gp_Pnt&        theRefPoint,
                                        const bool           theMakeGroups);
@@ -528,8 +577,13 @@ public:
 
   const SMESH_SequenceOfElemPtr& GetLastCreatedElems() const { return myLastCreatedElems; }
   
-  bool DoubleNodes( const std::list< int >& theListOfNodes, 
-                    const std::list< int >& theListOfModifiedElems );
+  bool DoubleNodes( const TIDSortedElemSet& theElems, 
+                    const TIDSortedElemSet& theNodesNot,
+                    const TIDSortedElemSet& theAffectedElems );
+
+  bool DoubleNodesInRegion( const TIDSortedElemSet& theElems, 
+                            const TIDSortedElemSet& theNodesNot,
+                            const TopoDS_Shape&     theShape );
 
 private:
 
@@ -594,6 +648,32 @@ private:
                   TIDSortedElemSet&        elemSet,
                   const int                nbSteps,
                   SMESH_SequenceOfElemPtr& srcElements);
+
+  /*!
+   * auxilary for ExtrusionAlongTrack
+   */
+  Extrusion_Error MakeEdgePathPoints(std::list<double>& aPrms,
+                                    const TopoDS_Edge& aTrackEdge,
+                                    bool FirstIsStart,
+                                    list<SMESH_MeshEditor_PathPoint>& LPP);
+  Extrusion_Error MakeExtrElements(TIDSortedElemSet& theElements,
+                                  list<SMESH_MeshEditor_PathPoint>& fullList,
+                                  const bool theHasAngles,
+                                  list<double>& theAngles,
+                                  const bool theLinearVariation,
+                                  const bool theHasRefPoint,
+                                  const gp_Pnt& theRefPoint,
+                                  const bool theMakeGroups);
+  void LinearAngleVariation(const int NbSteps,
+                           list<double>& theAngles);
+
+  bool doubleNodes( SMESHDS_Mesh*     theMeshDS,
+                    const TIDSortedElemSet& theElems,
+                    const TIDSortedElemSet& theNodesNot,
+                    std::map< const SMDS_MeshNode*,
+                              const SMDS_MeshNode* >& theNodeNodeMap,
+                    const bool theIsDoubleElem );
+
 private:
 
   SMESH_Mesh * myMesh;