X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_MesherHelper.hxx;h=d4f54833ae574dacf157d599aa2f7d4ea926213c;hb=09607afb276900e0f0a7b95a01751fe628020a39;hp=7e60e6d250adf341f0c0c65791d8e23b6f156053;hpb=b3c311b4d9295b449274c44d73035b66e438b612;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_MesherHelper.hxx b/src/SMESH/SMESH_MesherHelper.hxx index 7e60e6d25..d4f54833a 100644 --- a/src/SMESH/SMESH_MesherHelper.hxx +++ b/src/SMESH/SMESH_MesherHelper.hxx @@ -52,7 +52,7 @@ typedef std::map::iterator ItTLinkNode; typedef SMDS_Iterator PShapeIterator; typedef boost::shared_ptr< PShapeIterator > PShapeIteratorPtr; - + typedef std::vector TNodeColumn; typedef std::map< double, TNodeColumn > TParam2ColumnMap; @@ -122,7 +122,9 @@ class SMESH_EXPORT SMESH_MesherHelper /*! * \brief Return true if 2D mesh on FACE is distored */ - static bool IsDistorted2D( SMESH_subMesh* faceSM, bool checkUV=false ); + static bool IsDistorted2D( SMESH_subMesh* faceSM, + bool checkUV = false, + SMESH_MesherHelper* faceHelper = NULL); /*! * \brief Returns true if given node is medium @@ -318,6 +320,12 @@ public: * \brief Return the shape set by IsQuadraticSubMesh() or SetSubShape() */ const TopoDS_Shape& GetSubShape() const { return myShape; } + /*! + * \brief Copy shape information from another helper to improve performance + * since SetSubShape() can be time consuming if there are many edges + */ + void CopySubShapeInfo(const SMESH_MesherHelper& other); + /*! * \brief Convert a shape to its index in the SMESHDS_Mesh @@ -553,9 +561,15 @@ public: /*! * \brief Check if the shape set through IsQuadraticSubMesh() or SetSubShape() * has a degenerated edges - * \retval bool - true if it has + * \retval bool - true if there are degenerated edges */ bool HasDegeneratedEdges() const { return !myDegenShapeIds.empty(); } + /*! + * \brief Return a number of degenerated edges in the shape set through + * IsQuadraticSubMesh() or SetSubShape() + * \retval size_t - nb edges + */ + size_t NbDegeneratedEdges() const { return myDegenShapeIds.size(); } /*! * \brief Check if shape is a seam edge or it's vertex @@ -602,6 +616,12 @@ public: * \retval bool - true if it has */ bool HasRealSeam() const { return HasSeam() && ( *mySeamShapeIds.begin() < 0 ); } + /*! + * \brief Return a number of real seam edges in the shape set through + * IsQuadraticSubMesh() or SetSubShape(). A real seam edge encounters twice in a wire + * \retval size_t - nb of real seams + */ + size_t NbRealSeam() const; /*! * \brief Return index of periodic parametric direction of a closed face * \retval int - 1 for U, 2 for V direction @@ -611,6 +631,10 @@ public: * \brief Return an alternative parameter for a node on seam */ double GetOtherParam(const double param) const; + /*! + * \brief Check if UV is on seam. Return 0 if not, 1 for U seam, 2 for V seam + */ + int IsOnSeam(const gp_XY& uv) const; /*! * \brief Return existing or create new medium nodes between given ones @@ -693,6 +717,7 @@ public: static void WriteShape(const TopoDS_Shape& s); + protected: /*! @@ -709,6 +734,7 @@ public: double getFaceMaxTol( const TopoDS_Shape& face ) const; + private: // forbidden copy constructor