mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-28 06:40:32 +05:00
Compute Progress bar
+ virtual double GetProgress() const; + double GetProgressByTic() const; + int& GetComputeCost() { return _computeCost; } + int _computeCost; //!< "compute cost" of shapes being Compute()d + int _progressTic; //!< counter of calls from SMESH_Mesh::GetComputeProgress() + double _progress; //!< progress of Compute() [0.,1.]
This commit is contained in:
parent
fc8ad974ab
commit
fad96c2870
@ -175,7 +175,7 @@ const SMESH_Algo::Features& SMESH_Algo::GetFeatures( const std::string& algoType
|
|||||||
SMESH_Algo::SMESH_Algo (int hypId, int studyId, SMESH_Gen * gen)
|
SMESH_Algo::SMESH_Algo (int hypId, int studyId, SMESH_Gen * gen)
|
||||||
: SMESH_Hypothesis(hypId, studyId, gen)
|
: SMESH_Hypothesis(hypId, studyId, gen)
|
||||||
{
|
{
|
||||||
gen->_mapAlgo[hypId] = this;
|
//gen->_mapAlgo[hypId] = this;
|
||||||
|
|
||||||
_onlyUnaryInput = _requireDiscreteBoundary = _requireShape = true;
|
_onlyUnaryInput = _requireDiscreteBoundary = _requireShape = true;
|
||||||
_quadraticMesh = _supportSubmeshes = false;
|
_quadraticMesh = _supportSubmeshes = false;
|
||||||
@ -205,28 +205,28 @@ SMESH_0D_Algo::SMESH_0D_Algo(int hypId, int studyId, SMESH_Gen* gen)
|
|||||||
{
|
{
|
||||||
_shapeType = (1 << TopAbs_VERTEX);
|
_shapeType = (1 << TopAbs_VERTEX);
|
||||||
_type = ALGO_0D;
|
_type = ALGO_0D;
|
||||||
gen->_map0D_Algo[hypId] = this;
|
//gen->_map0D_Algo[hypId] = this;
|
||||||
}
|
}
|
||||||
SMESH_1D_Algo::SMESH_1D_Algo(int hypId, int studyId, SMESH_Gen* gen)
|
SMESH_1D_Algo::SMESH_1D_Algo(int hypId, int studyId, SMESH_Gen* gen)
|
||||||
: SMESH_Algo(hypId, studyId, gen)
|
: SMESH_Algo(hypId, studyId, gen)
|
||||||
{
|
{
|
||||||
_shapeType = (1 << TopAbs_EDGE);
|
_shapeType = (1 << TopAbs_EDGE);
|
||||||
_type = ALGO_1D;
|
_type = ALGO_1D;
|
||||||
gen->_map1D_Algo[hypId] = this;
|
//gen->_map1D_Algo[hypId] = this;
|
||||||
}
|
}
|
||||||
SMESH_2D_Algo::SMESH_2D_Algo(int hypId, int studyId, SMESH_Gen* gen)
|
SMESH_2D_Algo::SMESH_2D_Algo(int hypId, int studyId, SMESH_Gen* gen)
|
||||||
: SMESH_Algo(hypId, studyId, gen)
|
: SMESH_Algo(hypId, studyId, gen)
|
||||||
{
|
{
|
||||||
_shapeType = (1 << TopAbs_FACE);
|
_shapeType = (1 << TopAbs_FACE);
|
||||||
_type = ALGO_2D;
|
_type = ALGO_2D;
|
||||||
gen->_map2D_Algo[hypId] = this;
|
//gen->_map2D_Algo[hypId] = this;
|
||||||
}
|
}
|
||||||
SMESH_3D_Algo::SMESH_3D_Algo(int hypId, int studyId, SMESH_Gen* gen)
|
SMESH_3D_Algo::SMESH_3D_Algo(int hypId, int studyId, SMESH_Gen* gen)
|
||||||
: SMESH_Algo(hypId, studyId, gen)
|
: SMESH_Algo(hypId, studyId, gen)
|
||||||
{
|
{
|
||||||
_shapeType = (1 << TopAbs_SOLID);
|
_shapeType = (1 << TopAbs_SOLID);
|
||||||
_type = ALGO_3D;
|
_type = ALGO_3D;
|
||||||
gen->_map3D_Algo[hypId] = this;
|
//gen->_map3D_Algo[hypId] = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
@ -681,6 +681,17 @@ void SMESH_Algo::CancelCompute()
|
|||||||
_error = COMPERR_CANCELED;
|
_error = COMPERR_CANCELED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*
|
||||||
|
* If possible, returns progress of computation [0.,1.]
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
double SMESH_Algo::GetProgress() const
|
||||||
|
{
|
||||||
|
return _progress;
|
||||||
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief store error and comment and then return ( error == COMPERR_OK )
|
* \brief store error and comment and then return ( error == COMPERR_OK )
|
||||||
@ -728,7 +739,7 @@ SMESH_ComputeErrorPtr SMESH_Algo::GetComputeError() const
|
|||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief initialize compute error
|
* \brief initialize compute error before call of Compute()
|
||||||
*/
|
*/
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
@ -743,6 +754,23 @@ void SMESH_Algo::InitComputeError()
|
|||||||
_badInputElements.clear();
|
_badInputElements.clear();
|
||||||
|
|
||||||
_computeCanceled = false;
|
_computeCanceled = false;
|
||||||
|
_computeCost = 1;
|
||||||
|
_progressTic = 0;
|
||||||
|
_progress = 0.;
|
||||||
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Return compute progress by nb of calls of this method
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
double SMESH_Algo::GetProgressByTic() const
|
||||||
|
{
|
||||||
|
const_cast<SMESH_Algo*>( this )->_progressTic++;
|
||||||
|
double x = 5 * _progressTic;
|
||||||
|
x = ( x < _computeCost ) ? ( x / _computeCost ) : 1.;
|
||||||
|
return 0.9 * sin( x * M_PI / 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
@ -169,6 +169,11 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
|
|||||||
*/
|
*/
|
||||||
virtual void CancelCompute();
|
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
|
* \brief evaluates size of prospective mesh on a shape
|
||||||
* \param aMesh - the mesh
|
* \param aMesh - the mesh
|
||||||
@ -224,14 +229,23 @@ class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis
|
|||||||
*/
|
*/
|
||||||
virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
|
virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
|
||||||
virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0);
|
virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief return compute error
|
* \brief return compute error
|
||||||
*/
|
*/
|
||||||
SMESH_ComputeErrorPtr GetComputeError() const;
|
SMESH_ComputeErrorPtr GetComputeError() const;
|
||||||
/*!
|
/*!
|
||||||
* \brief initialize compute error
|
* \brief initialize compute error before call of Compute()
|
||||||
*/
|
*/
|
||||||
void InitComputeError();
|
void InitComputeError();
|
||||||
|
/*!
|
||||||
|
* \brief Return compute progress by nb of calls of this method
|
||||||
|
*/
|
||||||
|
double GetProgressByTic() const;
|
||||||
|
/*!
|
||||||
|
* Return a storage of "compute cost" of shapes being Compute()d.
|
||||||
|
*/
|
||||||
|
int& GetComputeCost() { return _computeCost; }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// ==================================================================
|
// ==================================================================
|
||||||
@ -407,8 +421,12 @@ protected:
|
|||||||
std::list<const SMDS_MeshElement*> _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH
|
std::list<const SMDS_MeshElement*> _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH
|
||||||
|
|
||||||
volatile bool _computeCanceled; //!< is set to True while computing to stop it
|
volatile bool _computeCanceled; //!< is set to True while computing to stop it
|
||||||
|
int _computeCost; //!< "compute cost" of shapes being Compute()d
|
||||||
|
int _progressTic; //!< counter of calls from SMESH_Mesh::GetComputeProgress()
|
||||||
|
double _progress; //!< progress of Compute() [0.,1.]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class SMESH_EXPORT SMESH_0D_Algo: public SMESH_Algo
|
class SMESH_EXPORT SMESH_0D_Algo: public SMESH_Algo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Loading…
Reference in New Issue
Block a user