X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_MesherHelper.hxx;h=7c8f5f70487278d2d03d7b3a7c69ec2ebfda9308;hb=14dd470a5db504fa5956b906a806cd47e505dc12;hp=41544a3f48304abe137fba028bdcb420a3cd7abd;hpb=79b1ac2b6df9117f16f11d444b1f165d477a1813;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_MesherHelper.hxx b/src/SMESH/SMESH_MesherHelper.hxx index 41544a3f4..7c8f5f704 100644 --- a/src/SMESH/SMESH_MesherHelper.hxx +++ b/src/SMESH/SMESH_MesherHelper.hxx @@ -1,33 +1,34 @@ -// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE // -// 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. +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// 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. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: SMESH_MesherHelper.hxx // Created: 15.02.06 14:48:09 // Author: Sergey KUUL - - +// #ifndef SMESH_MesherHelper_HeaderFile #define SMESH_MesherHelper_HeaderFile #include "SMESH_SMESH.hxx" -#include +#include "SMESH_Mesh.hxx" #include #include #include @@ -36,9 +37,9 @@ #include -typedef pair NLink; -typedef map NLinkNodeMap; -typedef map::iterator ItNLinkNode; +typedef std::pair NLink; +typedef std::map NLinkNodeMap; +typedef std::map::iterator ItNLinkNode; /*! * \brief It helps meshers to add elements @@ -105,6 +106,13 @@ public: return ind; } + /*! + * \brief Return number of unique ancestors of the shape + */ + static int NbAncestors(const TopoDS_Shape& shape, + const SMESH_Mesh& mesh, + TopAbs_ShapeEnum ancestorType=TopAbs_SHAPE); + public: // ---------- PUBLIC INSTANCE METHODS ---------- @@ -258,7 +266,8 @@ public: * \param subShape - edge or vertex index in SMESHDS * \retval bool - true if subShape is a seam shape * - * It works only if IsQuadraticSubMesh() or SetSubShape() has been called + * It works only if IsQuadraticSubMesh() or SetSubShape() has been called. + * Seam shape has two 2D alternative represenations on the face */ bool IsSeamShape(const int subShape) const { return mySeamShapeIds.find( subShape ) != mySeamShapeIds.end(); } @@ -267,10 +276,23 @@ public: * \param subShape - edge or vertex * \retval bool - true if subShape is a seam shape * - * It works only if IsQuadraticSubMesh() or SetSubShape() has been called + * It works only if IsQuadraticSubMesh() or SetSubShape() has been called. + * Seam shape has two 2D alternative represenations on the face */ bool IsSeamShape(const TopoDS_Shape& subShape) const { return IsSeamShape( GetMeshDS()->ShapeToIndex( subShape )); } + /*! + * \brief Return true if an edge or a vertex encounters twice in face wire + * \param subShape - Id of edge or vertex + */ + bool IsRealSeam(const int subShape) const + { return mySeamShapeIds.find( -subShape ) != mySeamShapeIds.end(); } + /*! + * \brief Return true if an edge or a vertex encounters twice in face wire + * \param subShape - edge or vertex + */ + bool IsRealSeam(const TopoDS_Shape& subShape) const + { return IsRealSeam( GetMeshDS()->ShapeToIndex( subShape)); } /*! * \brief Check if the shape set through IsQuadraticSubMesh() or SetSubShape() * has a seam edge @@ -282,6 +304,10 @@ public: * \retval int - 1 for U, 2 for V direction */ int GetPeriodicIndex() const { return myParIndex; } + /*! + * \brief Return an alternative parameter for a node on seam + */ + double GetOtherParam(const double param) const; /** * Special function for search or creation medium node