X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_Algo.hxx;h=f2c166605d16832265d219106bd37b96c2a90793;hp=3f8f2c839c1b1021f62c552de9e52a7b64e353e2;hb=d5b3009987da618d852714915ce248e648a35438;hpb=bd8f1aee7c78f7d2eb82bd4fec5e08c9e3d280ce diff --git a/src/SMESH/SMESH_Algo.hxx b/src/SMESH/SMESH_Algo.hxx index 3f8f2c839..f2c166605 100644 --- a/src/SMESH/SMESH_Algo.hxx +++ b/src/SMESH/SMESH_Algo.hxx @@ -52,6 +52,7 @@ class SMESH_Gen; class SMESH_HypoFilter; class SMESH_Mesh; class SMESH_MesherHelper; +class SMESH_ProxyMesh; class SMESH_subMesh; class TopoDS_Face; class TopoDS_Shape; @@ -169,6 +170,11 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis */ virtual void CancelCompute(); + /*! + * \brief If possible, returns progress of computation [0.,1.] + */ + virtual double GetProgress() const; + /*! * \brief evaluates size of prospective mesh on a shape * \param aMesh - the mesh @@ -195,7 +201,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis virtual const std::list & GetUsedHypothesis(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, - const bool ignoreAuxiliary=true); + const bool ignoreAuxiliary=true) const; /*! * \brief Returns a list of compatible hypotheses assigned to a shape in a mesh * \param aMesh - the mesh @@ -210,7 +216,7 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis const list & GetAppliedHypothesis(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape, - const bool ignoreAuxiliary=true); + const bool ignoreAuxiliary=true) const; /*! * \brief Make the filter recognize only compatible hypotheses * \param theFilter - the filter to initialize @@ -224,14 +230,23 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis */ virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape); virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0); + /*! * \brief return compute error */ SMESH_ComputeErrorPtr GetComputeError() const; /*! - * \brief initialize compute error + * \brief initialize compute error etc. before call of Compute() */ void InitComputeError(); + /*! + * \brief Return compute progress by nb of calls of this method + */ + double GetProgressByTic() const; + /*! + * Return a vector of sub-meshes to Compute() + */ + std::vector& SubMeshesToCompute() { return _smToCompute; } public: // ================================================================== @@ -325,11 +340,6 @@ public: */ static double EdgeLength(const TopoDS_Edge & E); - /*! - * \brief Calculate normal of a mesh face - */ - static bool FaceNormal(const SMDS_MeshElement* F, gp_XYZ& normal, bool normalized=true); - //static int NumberOfWires(const TopoDS_Shape& S); int NumberOfPoints(SMESH_Mesh& aMesh,const TopoDS_Wire& W); @@ -347,6 +357,14 @@ public: static bool IsContinuous(const TopoDS_Edge & E1, const TopoDS_Edge & E2) { return ( Continuity( E1, E2 ) >= GeomAbs_G1 ); } + /*! + * \brief Return true if an edge can be considered straight + */ + static bool IsStraight( const TopoDS_Edge & E, const bool degenResult=false ); + /*! + * \brief Return true if an edge has no 3D curve + */ + static bool isDegenerated( const TopoDS_Edge & E ); /*! * \brief Return the node built on a vertex @@ -356,12 +374,6 @@ public: */ static const SMDS_MeshNode* VertexNode(const TopoDS_Vertex& V, const SMESHDS_Mesh* meshDS); - /*! - * \brief Return nodes common to two elements - */ - static std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1, - const SMDS_MeshElement* e2); - enum EMeshError { MEr_OK = 0, MEr_HOLES, MEr_BAD_ORI, MEr_EMPTY }; /*! @@ -418,8 +430,14 @@ protected: std::list _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH volatile bool _computeCanceled; //!< is set to True while computing to stop it + + double _progress; /* progress of Compute() [0.,1.], + to be set by an algo really tracking the progress */ + int _progressTic; // counter of calls from SMESH_Mesh::GetComputeProgress() + std::vector _smToCompute; // sub-meshes to Compute() }; + class SMESH_EXPORT SMESH_0D_Algo: public SMESH_Algo { public: @@ -436,6 +454,13 @@ class SMESH_EXPORT SMESH_2D_Algo: public SMESH_Algo { public: SMESH_2D_Algo(int hypId, int studyId, SMESH_Gen* gen); + /*! + * \brief Method in which an algorithm generating a structured mesh + * fixes positions of in-face nodes after there movement + * due to insertion of viscous layers. + */ + virtual bool FixInternalNodes(const SMESH_ProxyMesh& mesh, + const TopoDS_Face& face); }; class SMESH_EXPORT SMESH_3D_Algo: public SMESH_Algo