00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _SMESH_AutomaticLength_HXX_
00028 #define _SMESH_AutomaticLength_HXX_
00029
00030 #include "SMESH_StdMeshers.hxx"
00031
00032 #include "SMESH_Hypothesis.hxx"
00033 #include "Utils_SALOME_Exception.hxx"
00034
00035 #include <map>
00036
00037 class SMESH_Mesh;
00038 class TopoDS_Shape;
00039 class TopoDS_TShape;
00040
00048 class STDMESHERS_EXPORT StdMeshers_AutomaticLength:public SMESH_Hypothesis
00049 {
00050 public:
00051 StdMeshers_AutomaticLength(int hypId, int studyId, SMESH_Gen * gen);
00052 virtual ~ StdMeshers_AutomaticLength();
00053
00057 double GetLength(const SMESH_Mesh* aMesh, const TopoDS_Shape& anEdge)
00058 throw(SALOME_Exception);
00059
00063 double GetLength(const SMESH_Mesh* aMesh, const double edgeLength)
00064 throw(SALOME_Exception);
00065
00076 void SetFineness(double theFineness)
00077 throw(SALOME_Exception);
00078
00083 double GetFineness() const { return _fineness; }
00084
00085 virtual std::ostream & SaveTo(std::ostream & save);
00086 virtual std::istream & LoadFrom(std::istream & load);
00087 friend std::ostream & operator <<(std::ostream & save, StdMeshers_AutomaticLength & hyp);
00088 friend std::istream & operator >>(std::istream & load, StdMeshers_AutomaticLength & hyp);
00089
00096 virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
00097
00102 virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0);
00103
00104 protected:
00105 std::map<const TopoDS_TShape*, double> _TShapeToLength;
00106 const SMESH_Mesh* _mesh;
00107 double _fineness, _S0, _minLen;
00108 };
00109
00110 #endif