X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Algo.hxx;h=cceb370ef09e4d21a407ca9b1b00da7fc0a4d92c;hp=6363dc469d4949411d6f380e7d869e937475893b;hb=4c16067d4281f56bd07d3f92fb63fff9c0c1d169;hpb=193c49c87753b6ccabb2b5e6dc935aa480d2d43e diff --git a/src/SMESH/SMESH_Algo.hxx b/src/SMESH/SMESH_Algo.hxx index 6363dc469..cceb370ef 100644 --- a/src/SMESH/SMESH_Algo.hxx +++ b/src/SMESH/SMESH_Algo.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 @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Algo.hxx // Author : Paul RASCLE, EDF // Module : SMESH @@ -35,8 +35,6 @@ #include "SMESH_ComputeError.hxx" #include "SMESH_Hypothesis.hxx" -#include -#include #include #include @@ -54,6 +52,7 @@ class SMESH_Mesh; class SMESH_MesherHelper; class SMESH_ProxyMesh; class SMESH_subMesh; +class TopoDS_Edge; class TopoDS_Face; class TopoDS_Shape; class TopoDS_Vertex; @@ -70,7 +69,7 @@ typedef std::map< SMESH_subMesh*, std::vector >::iterator MapShapeNbElemsIt * Methods of the class are grouped into several parts: * - main lifecycle methods, like Compute() * - methods describing features of the algorithm, like NeedShape() - * - methods related to dependencies between sub-meshes imposed by the algorith + * - methods related to dependencies between sub-meshes imposed by the algorithm * - static utilities, like EdgeLength() */ // ================================================================================== @@ -166,6 +165,15 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis */ virtual bool Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper); + /*! + * \brief Return true if the algorithm can mesh a given shape + * \param [in] aShape - shape to check + * \param [in] toCheckAll - if true, this check returns OK if all shapes are OK, + * else, returns OK if at least one shape is OK + * \retval bool - \c true by default + */ + virtual bool IsApplicableToShape(const TopoDS_Shape & shape, bool toCheckAll) const; + /*! * \brief Sets _computeCanceled to true. It's usage depends on * implementation of a particular mesher. @@ -215,7 +223,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis * have a name (type) listed in the algorithm. Hypothesis associated to * father shape -are not- taken into account (see GetUsedHypothesis) */ - const list & + const std::list & GetAppliedHypothesis(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, const bool ignoreAuxiliary=true) const; @@ -256,7 +264,7 @@ public: // ================================================================== // SMESH_Hypothesis::GetDim(); - // 1 - dimention of target mesh + // 1 - dimension of target mesh bool OnlyUnaryInput() const { return _onlyUnaryInput; } // 2 - is collection of tesselatable shapes inacceptable as input; @@ -270,7 +278,7 @@ public: // 3 - is a Dim-1 mesh prerequisite bool NeedShape() const { return _requireShape; } - // 4 - is shape existance required + // 4 - is shape existence required bool SupportSubmeshes() const { return _supportSubmeshes; } // 5 - whether supports submeshes if !NeedDiscreteBoundary() @@ -349,7 +357,7 @@ public: * \param E2 - the 2nd edge * \retval GeomAbs_Shape - regularity at the junction between E1 and E2 */ - static GeomAbs_Shape Continuity(TopoDS_Edge E1, TopoDS_Edge E2); + static GeomAbs_Shape Continuity(const TopoDS_Edge& E1, const TopoDS_Edge& E2); /*! * \brief Return true if an edge can be considered as a continuation of another @@ -364,7 +372,7 @@ public: /*! * \brief Return true if an edge has no 3D curve */ - static bool isDegenerated( const TopoDS_Edge & E ); + static bool isDegenerated( const TopoDS_Edge & E, const bool checkLength=false ); /*! * \brief Return the node built on a vertex @@ -454,6 +462,7 @@ protected: int _error; //!< SMESH_ComputeErrorName or anything algo specific std::string _comment; //!< any text explaining what is wrong in Compute() std::list _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH + const SMDS_Mesh* _mesh; //!< mesh being computed, needed to create SMESH_BadInputElements volatile bool _computeCanceled; //!< is set to True while computing to stop it