SMESH_Algo::SMESH_Algo (int hypId, int studyId, SMESH_Gen * gen)
: SMESH_Hypothesis(hypId, studyId, gen)
{
- gen->_mapAlgo[hypId] = this;
+ //gen->_mapAlgo[hypId] = this;
_onlyUnaryInput = _requireDiscreteBoundary = _requireShape = true;
_quadraticMesh = _supportSubmeshes = false;
{
_shapeType = (1 << TopAbs_VERTEX);
_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_Algo(hypId, studyId, gen)
{
_shapeType = (1 << TopAbs_EDGE);
_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_Algo(hypId, studyId, gen)
{
_shapeType = (1 << TopAbs_FACE);
_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_Algo(hypId, studyId, gen)
{
_shapeType = (1 << TopAbs_SOLID);
_type = ALGO_3D;
- gen->_map3D_Algo[hypId] = this;
+ //gen->_map3D_Algo[hypId] = this;
}
//=============================================================================
_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 initialize compute error
+ * \brief initialize compute error before call of Compute()
*/
//================================================================================
_badInputElements.clear();
_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 );
}
//================================================================================
*/
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
*/
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 before call of Compute()
*/
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:
// ==================================================================
std::list<const SMDS_MeshElement*> _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH
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
{
public: