X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH%2FSMESH_subMesh.hxx;h=fdfe1525728b66544cbe78422230952f07c907c9;hp=05890e8cef1ac776e7bab1caee33890127abb1ef;hb=d9f4b53e489dd5857db264ede6acded7b076c9f1;hpb=386c76ea033aef391a39dfc3b015ed081ed49fd5 diff --git a/src/SMESH/SMESH_subMesh.hxx b/src/SMESH/SMESH_subMesh.hxx index 05890e8ce..fdfe15257 100644 --- a/src/SMESH/SMESH_subMesh.hxx +++ b/src/SMESH/SMESH_subMesh.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -36,6 +36,7 @@ #include "Utils_SALOME_Exception.hxx" #include +#include #include #include @@ -48,7 +49,7 @@ class SMESH_Hypothesis; class SMESH_Mesh; class SMESH_subMesh; class SMESH_subMeshEventListener; -class SMESH_subMeshEventListenerData; +struct SMESH_subMeshEventListenerData; typedef SMESH_subMeshEventListener EventListener; typedef SMESH_subMeshEventListenerData EventListenerData; @@ -112,7 +113,7 @@ class SMESH_EXPORT SMESH_subMesh }; enum compute_event { - MODIF_ALGO_STATE, COMPUTE, COMPUTE_SUBMESH, COMPUTE_CANCELED, + MODIF_ALGO_STATE, COMPUTE, COMPUTE_SUBMESH, COMPUTE_NOGEOM, COMPUTE_CANCELED, CLEAN, SUBMESH_COMPUTED, SUBMESH_RESTORED, SUBMESH_LOADED, MESH_ENTITY_REMOVED, CHECK_COMPUTE_STATE }; @@ -126,7 +127,7 @@ class SMESH_EXPORT SMESH_subMesh // ================================================================== /*! - * \brief Sets an event listener and its data to a submesh + * \brief Set an event listener and its data to a submesh * \param listener - the listener to store * \param data - the listener data to store * \param where - the submesh to store the listener and it's data @@ -190,7 +191,7 @@ protected: void setEventListener(EventListener* listener, EventListenerData* data); /*! - * \brief Notify stored event listeners on the occured event + * \brief Notify stored event listeners on the occurred event * \param event - algo_event or compute_event itself * \param eventType - algo_event or compute_event * \param hyp - hypothesis, if eventType is algo_event @@ -236,17 +237,16 @@ public: bool CanAddHypothesis(const SMESH_Hypothesis* theHypothesis) const; // return true if theHypothesis can be attached to me: - // its dimention is checked + // its dimension is checked - static bool IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis, + static bool IsApplicableHypothesis(const SMESH_Hypothesis* theHypothesis, const TopAbs_ShapeEnum theShapeType); - bool IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis) const - { return IsApplicableHypotesis( theHypothesis, _subShape.ShapeType() ); } + bool IsApplicableHypothesis(const SMESH_Hypothesis* theHypothesis) const; // return true if theHypothesis can be used to mesh me: // its shape type is checked - SMESH_Hypothesis::Hypothesis_Status CheckConcurentHypothesis (const int theHypType); + SMESH_Hypothesis::Hypothesis_Status CheckConcurrentHypothesis (const int theHypType); // check if there are several applicable hypothesis on fathers /*! @@ -257,12 +257,21 @@ public: bool IsMeshComputed() const; // check if _subMeshDS contains mesh elements unless _alwaysComputed==true + bool IsComputedPartially() const; + // check if any upper level sub-shape is not computed + + /*! + * \brief Set sub-shapes that are allowed to compute at once by a multidimensional algo + */ + void SetAllowedSubShapes( const TopTools_IndexedMapOfShape* subShapes ) + { _allowedSubShapes = subShapes; } + /*! * \brief Allow algo->Compute() if a subshape of lower dim is meshed but * none mesh entity is bound to it */ void SetIsAlwaysComputed(bool isAlCo); - bool IsAlwaysComputed() { return _alwaysComputed; } + bool IsAlwaysComputed() const { return _alwaysComputed; } bool SubMeshesComputed(bool * isFailedToCompute=0) const; @@ -333,6 +342,7 @@ protected: std::vector< SMESH_subMesh * > _ancestors; SMESH_Algo * _algo; // the algorithm found by last *StateEngine() call + TopoDS_Shape _algoShape; // shape the algorithm is assigned to algo_state _algoState; compute_state _computeState; SMESH_ComputeErrorPtr _computeError; @@ -344,6 +354,8 @@ protected: // mesh several edges as a whole and leave some of them without mesh entities bool _alwaysComputed; + const TopTools_IndexedMapOfShape* _allowedSubShapes; // allowed to be returned by getCollection() + }; #endif