Salome HOME
INT PAL: 0052225: Failed mesh - number of isolines does not correspond to settings
[modules/smesh.git] / src / StdMeshers / StdMeshers_FaceSide.hxx
index 1d4521dfe99bae2b145976e7f69dbab96b4fa67d..4f714d4bf0c111960747d3f004d4a895d507f2ec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2013  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
@@ -86,9 +86,18 @@ public:
   /*!
    * \brief Simulate a side from a vertex using data from other FaceSide
    */
-  StdMeshers_FaceSide(const SMDS_MeshNode*       theNode,
-                      const gp_Pnt2d             thePnt2d,
-                      const StdMeshers_FaceSide* theSide);
+  StdMeshers_FaceSide(const StdMeshers_FaceSide*  theSide,
+                      const SMDS_MeshNode*        theNode,
+                      const gp_Pnt2d*             thePnt2d1,
+                      const gp_Pnt2d*             thePnt2d2=NULL,
+                      const Handle(Geom2d_Curve)& theC2d=NULL,
+                      const double                theUFirst=0.,
+                      const double                theULast=1.);
+  /*!
+   * \brief Create a side from an UVPtStructVec
+   */
+  StdMeshers_FaceSide(UVPtStructVec& theSideNodes);
+
   /*!
    * \brief Return wires of a face as StdMeshers_FaceSide's
    */
@@ -102,13 +111,22 @@ public:
    */
   void Reverse();
   /*!
-   * \brief Return nb nodes on edges and vertices (+1 to be == GetUVPtStruct().size() )
+   * \brief Make ignore medium nodes
+   */
+  void SetIgnoreMediumNodes(bool toIgnore);
+
+  /*!
+   * \brief Return nb nodes on edges and vertices (+1 to be == GetUVPtStruct().size() ).
+   *        Call it with update == true if mesh of this side can be recomputed
+   *        since creation of this side
    */
-  int NbPoints() const { return myNbPonits; }
+  int NbPoints(const bool update = false) const;
   /*!
    * \brief Return nb edges
+   *        Call it with update == true if mesh of this side can be recomputed
+   *        since creation of this side
    */
-  int NbSegments() const { return myNbSegments; }
+  int NbSegments(const bool update = false) const;
   /*!
    * \brief Return mesh
    */
@@ -117,6 +135,7 @@ public:
    * \brief Return true if there are vertices without nodes
    */
   bool MissVertexNode() const { return myMissingVertexNodes; }
+
   /*!
    * \brief Return detailed data on nodes
     * \param isXConst - true if normalized parameter X is constant
@@ -139,6 +158,7 @@ public:
     * For a closed side, the 1st point repeats at end
    */
   std::vector<const SMDS_MeshNode*> GetOrderedNodes() const;
+
   /*!
    * \brief Return edge and parameter on edge by normalized parameter
    */
@@ -147,6 +167,10 @@ public:
    * \brief Return UV by normalized parameter
    */
   gp_Pnt2d Value2d(double U) const;
+  /*!
+   * \brief Return XYZ by normalized parameter
+   */
+  gp_Pnt   Value3d(double U) const;
   /*!
    * \brief Creates a Adaptor2d_Curve2d to be used in SMESH_Block
    */
@@ -236,7 +260,7 @@ protected:
   std::vector<double>               myFirst, myLast;
   std::vector<double>               myNormPar;
   std::vector<double>               myEdgeLength;
-  std::vector<double>               myIsUniform;
+  std::vector<int>                  myIsUniform;
   double                            myLength;
   int                               myNbPonits, myNbSegments;
   SMESH_ProxyMesh::Ptr              myProxyMesh;