X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_MesherHelper.hxx;h=164861c3213fc54b76b6a1fc35c93489720944df;hb=7c6e727b2495af2006d4ae62ab159d9045764179;hp=d67e335b59ede60c1d8fc021f23671476645945d;hpb=b0a908c0d20341651771d0249fb10882f54b2aad;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_MesherHelper.hxx b/src/SMESH/SMESH_MesherHelper.hxx index d67e335b5..164861c32 100644 --- a/src/SMESH/SMESH_MesherHelper.hxx +++ b/src/SMESH/SMESH_MesherHelper.hxx @@ -117,6 +117,11 @@ class SMESH_EXPORT SMESH_MesherHelper */ static bool IsStructured( SMESH_subMesh* faceSM ); + /*! + * \brief Return true if 2D mesh on FACE is distored + */ + static bool IsDistorted2D( SMESH_subMesh* faceSM, bool checkUV=false ); + /*! * \brief Returns true if given node is medium * \param n - node to check @@ -130,6 +135,7 @@ class SMESH_EXPORT SMESH_MesherHelper * \param node - the node * \param meshDS - mesh DS * \retval TopoDS_Shape - found support shape + * \sa SMESH_Algo::VertexNode( const TopoDS_Vertex&, SMESHDS_Mesh* ) */ static TopoDS_Shape GetSubShapeByNode(const SMDS_MeshNode* node, const SMESHDS_Mesh* meshDS); @@ -166,15 +172,15 @@ class SMESH_EXPORT SMESH_MesherHelper * a0 p0 a1 */ inline static gp_XY calcTFI(double x, double y, - const gp_XY a0,const gp_XY a1,const gp_XY a2,const gp_XY a3, - const gp_XY p0,const gp_XY p1,const gp_XY p2,const gp_XY p3); + const gp_XY& a0,const gp_XY& a1,const gp_XY& a2,const gp_XY& a3, + const gp_XY& p0,const gp_XY& p1,const gp_XY& p2,const gp_XY& p3); /*! * \brief Same as "gp_XY calcTFI(...)" but in 3D */ inline static gp_XYZ calcTFI(double x, double y, - const gp_XYZ a0,const gp_XYZ a1,const gp_XYZ a2,const gp_XYZ a3, - const gp_XYZ p0,const gp_XYZ p1,const gp_XYZ p2,const gp_XYZ p3); + const gp_XYZ& a0,const gp_XYZ& a1,const gp_XYZ& a2,const gp_XYZ& a3, + const gp_XYZ& p0,const gp_XYZ& p1,const gp_XYZ& p2,const gp_XYZ& p3); /*! * \brief Count nb of sub-shapes * \param shape - the shape @@ -215,9 +221,13 @@ class SMESH_EXPORT SMESH_MesherHelper static bool IsSubShape( const TopoDS_Shape& shape, SMESH_Mesh* aMesh ); + static bool IsBlock( const TopoDS_Shape& shape ); + static double MaxTolerance( const TopoDS_Shape& shape ); - static double GetAngle( const TopoDS_Edge & E1, const TopoDS_Edge & E2, const TopoDS_Face & F); + static double GetAngle( const TopoDS_Edge & E1, const TopoDS_Edge & E2, + const TopoDS_Face & F, const TopoDS_Vertex & V, + gp_Vec* faceNormal=0); static bool IsClosedEdge( const TopoDS_Edge& anEdge ); @@ -558,13 +568,20 @@ public: { return IsRealSeam( GetMeshDS()->ShapeToIndex( subShape)); } /*! * \brief Check if the shape set through IsQuadraticSubMesh() or SetSubShape() - * has a seam edge - * \retval bool - true if it has + * has a seam edge, i.e. an edge that has two parametric representations + * on a surface + * \retval bool - true if it has */ bool HasSeam() const { return !mySeamShapeIds.empty(); } + /*! + * \brief Check if the shape set through IsQuadraticSubMesh() or SetSubShape() + * has a seam edge that encounters twice in a wire + * \retval bool - true if it has + */ + bool HasRealSeam() const { return HasSeam() && ( *mySeamShapeIds.begin() < 0 ); } /*! * \brief Return index of periodic parametric direction of a closed face - * \retval int - 1 for U, 2 for V direction + * \retval int - 1 for U, 2 for V direction */ int GetPeriodicIndex() const { return myParIndex; } /*! @@ -627,9 +644,9 @@ public: void AddTLinkNodeMap(const TLinkNodeMap& aMap) { myTLinkNodeMap.insert(aMap.begin(), aMap.end()); } - void AddTLinks(const SMDS_MeshEdge* edge); - void AddTLinks(const SMDS_MeshFace* face); - void AddTLinks(const SMDS_MeshVolume* vol); + bool AddTLinks(const SMDS_MeshEdge* edge); + bool AddTLinks(const SMDS_MeshFace* face); + bool AddTLinks(const SMDS_MeshVolume* vol); /** * Returns myTLinkNodeMap @@ -715,8 +732,8 @@ public: //======================================================================= inline gp_XY SMESH_MesherHelper::calcTFI(double x, double y, - const gp_XY a0,const gp_XY a1,const gp_XY a2,const gp_XY a3, - const gp_XY p0,const gp_XY p1,const gp_XY p2,const gp_XY p3) + const gp_XY& a0,const gp_XY& a1,const gp_XY& a2,const gp_XY& a3, + const gp_XY& p0,const gp_XY& p1,const gp_XY& p2,const gp_XY& p3) { return ((1 - y) * p0 + x * p1 + y * p2 + (1 - x) * p3 ) - @@ -725,8 +742,8 @@ SMESH_MesherHelper::calcTFI(double x, double y, //======================================================================= inline gp_XYZ SMESH_MesherHelper::calcTFI(double x, double y, - const gp_XYZ a0,const gp_XYZ a1,const gp_XYZ a2,const gp_XYZ a3, - const gp_XYZ p0,const gp_XYZ p1,const gp_XYZ p2,const gp_XYZ p3) + const gp_XYZ& a0,const gp_XYZ& a1,const gp_XYZ& a2,const gp_XYZ& a3, + const gp_XYZ& p0,const gp_XYZ& p1,const gp_XYZ& p2,const gp_XYZ& p3) { return ((1 - y) * p0 + x * p1 + y * p2 + (1 - x) * p3 ) -