X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_MesherHelper.hxx;h=a8d7a8e64ecc17e4701a8ab50ae9d05bce8c906d;hp=9e8d82958744f6c1d7be562d407f50c0c6ef2eb7;hb=7211ec8d0ebb65251f41eeb32b74b1e6e322a875;hpb=1dd2f82c6d43d470c088288248edea674d583eec diff --git a/src/SMESH/SMESH_MesherHelper.hxx b/src/SMESH/SMESH_MesherHelper.hxx index 9e8d82958..a8d7a8e64 100644 --- a/src/SMESH/SMESH_MesherHelper.hxx +++ b/src/SMESH/SMESH_MesherHelper.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -30,8 +30,6 @@ #include "SMESH_SMESH.hxx" #include "SMESH_MeshEditor.hxx" // needed for many meshers -#include -#include #include #include @@ -42,8 +40,11 @@ #include #include -class GeomAPI_ProjectPointOnSurf; class GeomAPI_ProjectPointOnCurve; +class GeomAPI_ProjectPointOnSurf; +class SMDS_MeshNode; +class SMESHDS_Hypothesis; +class SMESH_Gen; class SMESH_ProxyMesh; typedef std::map TLinkNodeMap; @@ -200,11 +201,12 @@ class SMESH_EXPORT SMESH_MesherHelper const SMESH_Mesh& mesh, TopAbs_ShapeEnum ancestorType=TopAbs_SHAPE); /*! - * \brief Return iterator on ancestors of the given type + * \brief Return iterator on ancestors of the given type, included into a container shape */ static PShapeIteratorPtr GetAncestors(const TopoDS_Shape& shape, const SMESH_Mesh& mesh, - TopAbs_ShapeEnum ancestorType); + TopAbs_ShapeEnum ancestorType, + const TopoDS_Shape* container = 0); /*! * \brief Find a common ancestor, of the given type, of two shapes */ @@ -248,12 +250,12 @@ public: // constructor SMESH_MesherHelper(SMESH_Mesh& theMesh); - SMESH_Gen* GetGen() const { return GetMesh()->GetGen(); } + SMESH_Gen* GetGen() const; SMESH_Mesh* GetMesh() const { return myMesh; } - SMESHDS_Mesh* GetMeshDS() const { return GetMesh()->GetMeshDS(); } - + SMESHDS_Mesh* GetMeshDS() const; + /*! * Check submesh for given shape: if all elements on this shape are quadratic, * quadratic elements will be created. Also fill myTLinkNodeMap @@ -317,6 +319,11 @@ public: */ const TopoDS_Shape& GetSubShape() const { return myShape; } + /*! + * \brief Convert a shape to its index in the SMESHDS_Mesh + */ + int ShapeToIndex( const TopoDS_Shape& S ) const; + /*! * Creates a node (!Note ID before u=0.,v0.) */ @@ -532,14 +539,14 @@ public: /*! * \brief Return a cached ShapeAnalysis_Surface of a FACE */ - Handle(ShapeAnalysis_Surface) GetSurface(const TopoDS_Face& F ); + Handle(ShapeAnalysis_Surface) GetSurface(const TopoDS_Face& F ) const; /*! * \brief Check if shape is a degenerated edge or it's vertex - * \param subShape - edge or vertex index in SMESHDS - * \retval bool - true if subShape is a degenerated shape - * - * It works only if IsQuadraticSubMesh() or SetSubShape() has been called + * \param subShape - edge or vertex index in SMESHDS + * \retval bool - true if subShape is a degenerated shape + * + * It works only if IsQuadraticSubMesh() or SetSubShape() has been called */ bool IsDegenShape(const int subShape) const { return myDegenShapeIds.find( subShape ) != myDegenShapeIds.end(); } @@ -569,7 +576,7 @@ public: * Seam shape has two 2D alternative represenations on the face */ bool IsSeamShape(const TopoDS_Shape& subShape) const - { return IsSeamShape( GetMeshDS()->ShapeToIndex( subShape )); } + { return IsSeamShape( ShapeToIndex( subShape )); } /*! * \brief Return true if an edge or a vertex encounters twice in face wire * \param subShape - Id of edge or vertex @@ -581,7 +588,7 @@ public: * \param subShape - edge or vertex */ bool IsRealSeam(const TopoDS_Shape& subShape) const - { return IsRealSeam( GetMeshDS()->ShapeToIndex( subShape)); } + { return IsRealSeam( ShapeToIndex( subShape )); } /*! * \brief Check if the shape set through IsQuadraticSubMesh() or SetSubShape() * has a seam edge, i.e. an edge that has two parametric representations @@ -684,6 +691,8 @@ public: virtual ~SMESH_MesherHelper(); + static void WriteShape(const TopoDS_Shape& s); + protected: /*! @@ -739,7 +748,7 @@ public: typedef std::map< int, Handle(ShapeAnalysis_Surface)> TID2Surface; typedef std::map< int, GeomAPI_ProjectPointOnSurf* > TID2ProjectorOnSurf; typedef std::map< int, GeomAPI_ProjectPointOnCurve* > TID2ProjectorOnCurve; - TID2Surface myFace2Surface; + mutable TID2Surface myFace2Surface; TID2ProjectorOnSurf myFace2Projector; TID2ProjectorOnCurve myEdge2Projector;