X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Algo.hxx;h=25d54fec5fa97d5027d713efa33c1a0e1da44dab;hp=c0075a88e310f18c9ddaeb4fddbf3d66ed21e60e;hb=b09372829929f8f561495d6c16527134971a1909;hpb=560f8b2d0c2a7fdb4047f981cfac56ed3629bc1a diff --git a/src/SMESH/SMESH_Algo.hxx b/src/SMESH/SMESH_Algo.hxx index c0075a88e..25d54fec5 100644 --- a/src/SMESH/SMESH_Algo.hxx +++ b/src/SMESH/SMESH_Algo.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 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 @@ -36,6 +36,7 @@ #include "SMESH_Hypothesis.hxx" #include +#include #include #include @@ -59,8 +60,8 @@ class TopoDS_Vertex; class TopoDS_Wire; class gp_XYZ; -typedef std::map< SMESH_subMesh*, std::vector > MapShapeNbElems; -typedef std::map< SMESH_subMesh*, std::vector >::iterator MapShapeNbElemsItr; +typedef std::map< SMESH_subMesh*, std::vector > MapShapeNbElems; +typedef std::map< SMESH_subMesh*, std::vector >::iterator MapShapeNbElemsItr; // ================================================================================== /*! @@ -89,10 +90,11 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis std::set _outElemTypes; // produced types of mesh elements std::string _label; // GUI type name + Features(): _dim( -1 ) {} bool IsCompatible( const Features& algo2 ) const; }; /*! - * \brief Returns a structure describing algorithm features + * \brief Return a structure describing algorithm features */ static const Features& GetFeatures( const std::string& algoType ); const Features& GetFeatures() const { return GetFeatures( _name ); } @@ -126,7 +128,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis virtual std::istream & LoadFrom(std::istream & load); /*! - * \brief Returns all types of compatible hypotheses + * \brief Return all types of compatible hypotheses */ const std::vector < std::string > & GetCompatibleHypothesis(); @@ -195,7 +197,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis MapShapeNbElems& aResMap) = 0; /*! - * \brief Returns a list of compatible hypotheses used to mesh a shape + * \brief Return a list of compatible hypotheses used to mesh a shape * \param aMesh - the mesh * \param aShape - the shape * \param ignoreAuxiliary - do not include auxiliary hypotheses in the list @@ -212,22 +214,11 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis const TopoDS_Shape & aShape, const bool ignoreAuxiliary=true) const; /*! - * \brief Returns a list of compatible hypotheses assigned to a shape in a mesh - * \param aMesh - the mesh - * \param aShape - the shape - * \param ignoreAuxiliary - do not include auxiliary hypotheses in the list - * \retval const std::list - hypotheses list - * - * List the relevant hypothesis associated to the shape. Relevant hypothesis - * have a name (type) listed in the algorithm. Hypothesis associated to - * father shape -are not- taken into account (see GetUsedHypothesis) + * \brief Return sub-shape to which hypotheses returned by GetUsedHypothesis() are assigned */ - const std::list & - GetAppliedHypothesis(SMESH_Mesh & aMesh, - const TopoDS_Shape & aShape, - const bool ignoreAuxiliary=true) const; + virtual const std::list < TopoDS_Shape > & GetAssignedShapes() const; /*! - * \brief Returns the filter recognizing only compatible hypotheses + * \brief Return the filter recognizing only compatible hypotheses * \param ignoreAuxiliary - make filter ignore compatible auxiliary hypotheses * \retval SMESH_HypoFilter* - the filter that can be NULL */ @@ -348,7 +339,7 @@ public: */ static double EdgeLength(const TopoDS_Edge & E); - int NumberOfPoints(SMESH_Mesh& aMesh,const TopoDS_Wire& W); + smIdType NumberOfPoints(SMESH_Mesh& aMesh,const TopoDS_Wire& W); /*! * \brief Return continuity of two edges @@ -441,8 +432,8 @@ protected: const SMESH_HypoFilter * _compatibleAllHypFilter; const SMESH_HypoFilter * _compatibleNoAuxHypFilter; std::vector _compatibleHypothesis; - std::list _appliedHypList; std::list _usedHypList; + std::list _assigedShapeList; // _usedHypList assigned to // Algo features influencing which Compute() and how is called: @@ -482,12 +473,28 @@ class SMESH_EXPORT SMESH_1D_Algo: public SMESH_Algo { public: SMESH_1D_Algo(int hypId, SMESH_Gen* gen); + /*! + * \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; }; class SMESH_EXPORT SMESH_2D_Algo: public SMESH_Algo { public: SMESH_2D_Algo(int hypId, SMESH_Gen* gen); + /*! + * \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 Method in which an algorithm generating a structured mesh * fixes positions of in-face nodes after there movement @@ -501,6 +508,14 @@ class SMESH_EXPORT SMESH_3D_Algo: public SMESH_Algo { public: SMESH_3D_Algo(int hypId, SMESH_Gen* gen); + /*! + * \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; }; #endif