X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_MesherHelper.hxx;h=91d7d10411ac35a193e61ac081b50fdd59fc7846;hp=f2b4d9ffc5d241c4499ae8f0136a2a9c52dbbd88;hb=440a39776f695f06775edb1ff51b893470d6c8b2;hpb=a77a5a1a512915273cc59fa5032abd5a91e0a48b diff --git a/src/SMESH/SMESH_MesherHelper.hxx b/src/SMESH/SMESH_MesherHelper.hxx index f2b4d9ffc..91d7d1041 100644 --- a/src/SMESH/SMESH_MesherHelper.hxx +++ b/src/SMESH/SMESH_MesherHelper.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 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 @@ -6,7 +6,7 @@ // 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. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -97,7 +97,7 @@ class SMESH_EXPORT SMESH_MesherHelper * The key of the map is a normalized parameter of each * base node on theBaseSide. Edges in theBaseSide must be sequenced. * This method works in supposition that nodes on the face - * forms a rectangular grid and elements can be quardrangles or triangles + * forms a structured grid and elements can be quardrangles or triangles */ static bool LoadNodeColumns(TParam2ColumnMap & theParam2ColumnMap, const TopoDS_Face& theFace, @@ -140,10 +140,8 @@ class SMESH_EXPORT SMESH_MesherHelper * \param nbNodes - total nb of nodes * \retval int - valid node index */ - static int WrapIndex(const int ind, const int nbNodes) { - if ( ind < 0 ) return nbNodes + ind % nbNodes; - if ( ind >= nbNodes ) return ind % nbNodes; - return ind; + static inline int WrapIndex(int ind, const int nbNodes) { + return (( ind %= nbNodes ) < 0 ) ? ind + nbNodes : ind; } /*! @@ -219,6 +217,9 @@ class SMESH_EXPORT SMESH_MesherHelper static double MaxTolerance( const TopoDS_Shape& shape ); + static double GetAngle( const TopoDS_Edge & E1, const TopoDS_Edge & E2, + const TopoDS_Face & F, gp_Vec* faceNormal=0); + static bool IsClosedEdge( const TopoDS_Edge& anEdge ); static TopoDS_Vertex IthVertex( const bool is2nd, TopoDS_Edge anEdge, const bool CumOri=true ); @@ -558,13 +559,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; } /*!