SMESH_Algo* GetAlgo() const;
const std::map < int, SMESH_subMesh * >& DependsOn();
+ bool DependsOn( const SMESH_subMesh* other ) const;
/*!
- * \brief Return iterator on the submeshes this one depends on
+ * \brief Return iterator on the sub-meshes this one depends on. By default
+ * most simple sub-meshes go first.
*/
SMESH_subMeshIteratorPtr getDependsOnIterator(const bool includeSelf,
- const bool complexShapeFirst) const;
+ const bool complexShapeFirst=false) const;
const TopoDS_Shape & GetSubShape() const;
bool IsEmpty() const;
bool IsMeshComputed() const;
- // check if _subMeshDS contains mesh elements
+ // check if _subMeshDS contains mesh elements unless _alwaysComputed==true
/*!
* \brief Allow algo->Compute() if a subshape of lower dim is meshed but
bool SubMeshesComputed(bool * isFailedToCompute=0) const;
+ int GetComputeCost() const;
+ // how costly is to compute this sub-mesh
/*!
* \brief Find common submeshes (based on shared subshapes with other
TopoDS_Shape getCollection(SMESH_Gen * theGen,
SMESH_Algo* theAlgo,
bool & theSubComputed,
- bool & theSubFailed);
+ bool & theSubFailed,
+ std::vector<SMESH_subMesh*>& theSubs);
/*!
* \brief Update compute_state by _computeError
* \retval bool - false if there are errors
const SMESH_Hypothesis * theHyp,
const int theHypType = 0);
//
+ int computeCost() const;
protected:
algo_state _algoState;
compute_state _computeState;
SMESH_ComputeErrorPtr _computeError;
+ int _computeCost; // how costly is to compute this sub-mesh
+ int _realComputeCost; // _computeCost depending on presence of needed hypotheses
// allow algo->Compute() if a sub-shape of lower dim is meshed but
// none mesh entity is bound to it. Eg StdMeshers_CompositeSegment_1D can