mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-11 16:19:16 +05:00
Fix regression of SALOME_TESTS/Grids/smesh/3D_submesh_00/A6
Fix SMESH_subMesh::cleanDependsOn() + minor improvements in SMESH_submesh and sample scripts
This commit is contained in:
parent
a695ce3aee
commit
a6bce4daba
@ -46,8 +46,7 @@ tria.Compute()
|
||||
PrintMeshInfo(tria)
|
||||
|
||||
# remove a local hypothesis
|
||||
mesh = tria.GetMesh()
|
||||
mesh.RemoveHypothesis(edge, hyp4)
|
||||
tria.RemoveHypothesis(hyp4, edge)
|
||||
|
||||
# compute the mesh
|
||||
tria.Compute()
|
||||
|
@ -1,5 +1,8 @@
|
||||
# Creating a hexahedral mesh on a cylinder.
|
||||
# Note: it is a copy of 'ex24_cylinder.py' from SMESH_SWIG
|
||||
#
|
||||
# This example uses Partition to divide the cylinder into blocks, which is
|
||||
# a general approach. But for the case of cylinder there is a dedicated
|
||||
# command creating a blocked cylinder: geompy.MakeDividedCylinder()
|
||||
|
||||
import salome
|
||||
salome.salome_init()
|
||||
|
@ -680,7 +680,7 @@ SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape,
|
||||
// shape
|
||||
|
||||
bool isAlgo = ( anHyp->GetType() != SMESHDS_Hypothesis::PARAM_ALGO );
|
||||
int event = isAlgo ? SMESH_subMesh::ADD_ALGO : SMESH_subMesh::ADD_HYP;
|
||||
SMESH_subMesh::algo_event event = isAlgo ? SMESH_subMesh::ADD_ALGO : SMESH_subMesh::ADD_HYP;
|
||||
|
||||
SMESH_Hypothesis::Hypothesis_Status ret = subMesh->AlgoStateEngine(event, anHyp);
|
||||
|
||||
@ -756,7 +756,7 @@ SMESH_Hypothesis::Hypothesis_Status
|
||||
// shape
|
||||
|
||||
bool isAlgo = ( !anHyp->GetType() == SMESHDS_Hypothesis::PARAM_ALGO );
|
||||
int event = isAlgo ? SMESH_subMesh::REMOVE_ALGO : SMESH_subMesh::REMOVE_HYP;
|
||||
SMESH_subMesh::algo_event event = isAlgo ? SMESH_subMesh::REMOVE_ALGO : SMESH_subMesh::REMOVE_HYP;
|
||||
|
||||
SMESH_subMesh *subMesh = GetSubMesh(aSubShape);
|
||||
|
||||
|
@ -609,7 +609,7 @@ bool SMESH_subMesh::IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis,
|
||||
//================================================================================
|
||||
|
||||
SMESH_Hypothesis::Hypothesis_Status
|
||||
SMESH_subMesh::AlgoStateEngine(int event, SMESH_Hypothesis * anHyp)
|
||||
SMESH_subMesh::AlgoStateEngine(algo_event event, SMESH_Hypothesis * anHyp)
|
||||
{
|
||||
// **** les retour des evenement shape sont significatifs
|
||||
// (add ou remove fait ou non)
|
||||
@ -1167,7 +1167,7 @@ void SMESH_subMesh::setAlgoState(algo_state state)
|
||||
//================================================================================
|
||||
|
||||
SMESH_Hypothesis::Hypothesis_Status
|
||||
SMESH_subMesh::SubMeshesAlgoStateEngine(int event,
|
||||
SMESH_subMesh::SubMeshesAlgoStateEngine(algo_event event,
|
||||
SMESH_Hypothesis * anHyp,
|
||||
bool exitOnFatal)
|
||||
{
|
||||
@ -1232,9 +1232,11 @@ void SMESH_subMesh::cleanDependsOn( SMESH_Algo* algoRequiringCleaning/*=0*/ )
|
||||
if ( !sameShapeType )
|
||||
{
|
||||
// check if the algo allows presence of global algos of dimension the algo
|
||||
// can generate it-self
|
||||
// can generate it-self;
|
||||
// always keep a node on VERTEX, as this node can be shared by segments
|
||||
// lying on EDGEs not shared by the VERTEX of sm, due to MergeNodes (PAL23068)
|
||||
int shapeDim = SMESH_Gen::GetShapeDim( sm->GetSubShape() );
|
||||
keepSubMeshes = algoRequiringCleaning->NeedLowerHyps( shapeDim );
|
||||
keepSubMeshes = ( algoRequiringCleaning->NeedLowerHyps( shapeDim ) || shapeDim == 0 );
|
||||
prevShapeType = sm->GetSubShape().ShapeType();
|
||||
toKeepPrevShapeType = keepSubMeshes;
|
||||
}
|
||||
@ -1345,7 +1347,7 @@ static void cleanSubMesh( SMESH_subMesh * subMesh )
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
bool SMESH_subMesh::ComputeStateEngine(int event)
|
||||
bool SMESH_subMesh::ComputeStateEngine(compute_event event)
|
||||
{
|
||||
switch ( event ) {
|
||||
case MODIF_ALGO_STATE:
|
||||
@ -1982,7 +1984,7 @@ void SMESH_subMesh::updateSubMeshState(const compute_state theState)
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void SMESH_subMesh::ComputeSubMeshStateEngine(int event, const bool includeSelf)
|
||||
void SMESH_subMesh::ComputeSubMeshStateEngine(compute_event event, const bool includeSelf)
|
||||
{
|
||||
SMESH_subMeshIteratorPtr smIt = getDependsOnIterator(includeSelf,false);
|
||||
while ( smIt->more() )
|
||||
@ -2453,7 +2455,7 @@ void SMESH_subMeshEventListener::ProcessEvent(const int event,
|
||||
switch ( event ) {
|
||||
case SMESH_subMesh::CLEAN:
|
||||
for ( ; smIt != smEnd; ++ smIt)
|
||||
(*smIt)->ComputeStateEngine( event );
|
||||
(*smIt)->ComputeStateEngine( SMESH_subMesh::compute_event( event ));
|
||||
break;
|
||||
case SMESH_subMesh::COMPUTE:
|
||||
case SMESH_subMesh::COMPUTE_SUBMESH:
|
||||
|
@ -216,10 +216,10 @@ protected:
|
||||
public:
|
||||
|
||||
SMESH_Hypothesis::Hypothesis_Status
|
||||
AlgoStateEngine(int event, SMESH_Hypothesis * anHyp);
|
||||
AlgoStateEngine(algo_event event, SMESH_Hypothesis * anHyp);
|
||||
|
||||
SMESH_Hypothesis::Hypothesis_Status
|
||||
SubMeshesAlgoStateEngine(int event, SMESH_Hypothesis * anHyp, bool exitOnFatal=false);
|
||||
SubMeshesAlgoStateEngine(algo_event event, SMESH_Hypothesis * anHyp, bool exitOnFatal=false);
|
||||
|
||||
algo_state GetAlgoState() const { return _algoState; }
|
||||
compute_state GetComputeState() const { return _computeState; }
|
||||
@ -227,8 +227,8 @@ public:
|
||||
|
||||
void DumpAlgoState(bool isMain);
|
||||
|
||||
bool ComputeStateEngine(int event);
|
||||
void ComputeSubMeshStateEngine(int event, const bool includeSelf=false);
|
||||
bool ComputeStateEngine(compute_event event);
|
||||
void ComputeSubMeshStateEngine(compute_event event, const bool includeSelf=false);
|
||||
|
||||
bool Evaluate(MapShapeNbElems& aResMap);
|
||||
|
||||
|
@ -980,7 +980,7 @@ void SMESHDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elt,
|
||||
{
|
||||
//MESSAGE(" --------------------------------> SMESHDS_Mesh::RemoveFreeElement " << subMesh << " " << fromGroups);
|
||||
if (elt->GetType() == SMDSAbs_Node) {
|
||||
RemoveFreeNode( static_cast<const SMDS_MeshNode*>(elt), subMesh);
|
||||
RemoveFreeNode( static_cast<const SMDS_MeshNode*>(elt), subMesh, fromGroups);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -554,7 +554,7 @@ namespace
|
||||
return false;
|
||||
|
||||
for ( size_t iS = 0; iS < theShortEdges[ nbBranchPoints > 0 ].size(); ++iS )
|
||||
shortMap.Add( theShortEdges[ nbBranchPoints ][ iS ]);
|
||||
shortMap.Add( theShortEdges[ nbBranchPoints > 0 ][ iS ]);
|
||||
|
||||
++nbBranchPoints;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user