// File : SMESH_subMesh.cxx
// Author : Paul RASCLE, EDF
// Module : SMESH
-// $Header$
//
#include "SMESH_subMesh.hxx"
#include "SMESH_subMeshEventListener.hxx"
#include "SMESH_Comment.hxx"
#include "SMDS_SetIterator.hxx"
+#include "SMDSAbs_ElementType.hxx"
#include "utilities.h"
#include "OpUtil.hxx"
break;
}
case REMOVE_FATHER_ALGO: {
+ // IPAL21346. Edges not removed when Netgen 1d-2d is removed from a SOLID.
+ // CLEAN was not called at event REMOVE_ALGO because the algo is not applicable to SOLID.
+ algo = dynamic_cast<SMESH_Algo*> (anHyp);
+ if (!algo->NeedDescretBoundary())
+ needFullClean = true;
+
algo = gen->GetAlgo((*_father), _subShape);
if (algo == NULL) // no more applying algo on father
{
return ret;
}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+bool SMESH_subMesh::Evaluate(MapShapeNbElems& aResMap)
+{
+ _computeError.reset();
+
+ bool ret = true;
+
+ if (_subShape.ShapeType() == TopAbs_VERTEX) {
+ std::vector<int> aVec(SMDSEntity_Last);
+ for(int i= SMDSEntity_Node; i < SMDSEntity_Last; i++)
+ aVec[i] = 0;
+ aVec[SMDSEntity_Node] = 1;
+ aResMap.insert(std::make_pair(this,aVec));
+ return ret;
+ }
+
+ SMESH_Gen *gen = _father->GetGen();
+ SMESH_Algo *algo = 0;
+ SMESH_Hypothesis::Hypothesis_Status hyp_status;
+
+ algo = gen->GetAlgo((*_father), _subShape);
+ if(algo) {
+ ret = algo->CheckHypothesis((*_father), _subShape, hyp_status);
+ if (!ret) return false;
+
+ TopoDS_Shape shape = _subShape;
+
+ _computeError = SMESH_ComputeError::New(COMPERR_OK,"",algo);
+
+ ret = algo->Evaluate((*_father), shape, aResMap);
+ }
+
+ return ret;
+}
+
+
//=======================================================================
/*!
* \brief Update compute_state by _computeError and send proper events to