mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-29 08:00:33 +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)
|
PrintMeshInfo(tria)
|
||||||
|
|
||||||
# remove a local hypothesis
|
# remove a local hypothesis
|
||||||
mesh = tria.GetMesh()
|
tria.RemoveHypothesis(hyp4, edge)
|
||||||
mesh.RemoveHypothesis(edge, hyp4)
|
|
||||||
|
|
||||||
# compute the mesh
|
# compute the mesh
|
||||||
tria.Compute()
|
tria.Compute()
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
# Creating a hexahedral mesh on a cylinder.
|
# 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
|
import salome
|
||||||
salome.salome_init()
|
salome.salome_init()
|
||||||
|
@ -680,7 +680,7 @@ SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape,
|
|||||||
// shape
|
// shape
|
||||||
|
|
||||||
bool isAlgo = ( anHyp->GetType() != SMESHDS_Hypothesis::PARAM_ALGO );
|
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);
|
SMESH_Hypothesis::Hypothesis_Status ret = subMesh->AlgoStateEngine(event, anHyp);
|
||||||
|
|
||||||
@ -756,7 +756,7 @@ SMESH_Hypothesis::Hypothesis_Status
|
|||||||
// shape
|
// shape
|
||||||
|
|
||||||
bool isAlgo = ( !anHyp->GetType() == SMESHDS_Hypothesis::PARAM_ALGO );
|
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);
|
SMESH_subMesh *subMesh = GetSubMesh(aSubShape);
|
||||||
|
|
||||||
|
@ -609,7 +609,7 @@ bool SMESH_subMesh::IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis,
|
|||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
SMESH_Hypothesis::Hypothesis_Status
|
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
|
// **** les retour des evenement shape sont significatifs
|
||||||
// (add ou remove fait ou non)
|
// (add ou remove fait ou non)
|
||||||
@ -1167,7 +1167,7 @@ void SMESH_subMesh::setAlgoState(algo_state state)
|
|||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
SMESH_Hypothesis::Hypothesis_Status
|
SMESH_Hypothesis::Hypothesis_Status
|
||||||
SMESH_subMesh::SubMeshesAlgoStateEngine(int event,
|
SMESH_subMesh::SubMeshesAlgoStateEngine(algo_event event,
|
||||||
SMESH_Hypothesis * anHyp,
|
SMESH_Hypothesis * anHyp,
|
||||||
bool exitOnFatal)
|
bool exitOnFatal)
|
||||||
{
|
{
|
||||||
@ -1232,9 +1232,11 @@ void SMESH_subMesh::cleanDependsOn( SMESH_Algo* algoRequiringCleaning/*=0*/ )
|
|||||||
if ( !sameShapeType )
|
if ( !sameShapeType )
|
||||||
{
|
{
|
||||||
// check if the algo allows presence of global algos of dimension the algo
|
// 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() );
|
int shapeDim = SMESH_Gen::GetShapeDim( sm->GetSubShape() );
|
||||||
keepSubMeshes = algoRequiringCleaning->NeedLowerHyps( shapeDim );
|
keepSubMeshes = ( algoRequiringCleaning->NeedLowerHyps( shapeDim ) || shapeDim == 0 );
|
||||||
prevShapeType = sm->GetSubShape().ShapeType();
|
prevShapeType = sm->GetSubShape().ShapeType();
|
||||||
toKeepPrevShapeType = keepSubMeshes;
|
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 ) {
|
switch ( event ) {
|
||||||
case MODIF_ALGO_STATE:
|
case MODIF_ALGO_STATE:
|
||||||
@ -1982,7 +1984,7 @@ void SMESH_subMesh::updateSubMeshState(const compute_state theState)
|
|||||||
//purpose :
|
//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);
|
SMESH_subMeshIteratorPtr smIt = getDependsOnIterator(includeSelf,false);
|
||||||
while ( smIt->more() )
|
while ( smIt->more() )
|
||||||
@ -2453,7 +2455,7 @@ void SMESH_subMeshEventListener::ProcessEvent(const int event,
|
|||||||
switch ( event ) {
|
switch ( event ) {
|
||||||
case SMESH_subMesh::CLEAN:
|
case SMESH_subMesh::CLEAN:
|
||||||
for ( ; smIt != smEnd; ++ smIt)
|
for ( ; smIt != smEnd; ++ smIt)
|
||||||
(*smIt)->ComputeStateEngine( event );
|
(*smIt)->ComputeStateEngine( SMESH_subMesh::compute_event( event ));
|
||||||
break;
|
break;
|
||||||
case SMESH_subMesh::COMPUTE:
|
case SMESH_subMesh::COMPUTE:
|
||||||
case SMESH_subMesh::COMPUTE_SUBMESH:
|
case SMESH_subMesh::COMPUTE_SUBMESH:
|
||||||
|
@ -216,10 +216,10 @@ protected:
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
SMESH_Hypothesis::Hypothesis_Status
|
SMESH_Hypothesis::Hypothesis_Status
|
||||||
AlgoStateEngine(int event, SMESH_Hypothesis * anHyp);
|
AlgoStateEngine(algo_event event, SMESH_Hypothesis * anHyp);
|
||||||
|
|
||||||
SMESH_Hypothesis::Hypothesis_Status
|
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; }
|
algo_state GetAlgoState() const { return _algoState; }
|
||||||
compute_state GetComputeState() const { return _computeState; }
|
compute_state GetComputeState() const { return _computeState; }
|
||||||
@ -227,8 +227,8 @@ public:
|
|||||||
|
|
||||||
void DumpAlgoState(bool isMain);
|
void DumpAlgoState(bool isMain);
|
||||||
|
|
||||||
bool ComputeStateEngine(int event);
|
bool ComputeStateEngine(compute_event event);
|
||||||
void ComputeSubMeshStateEngine(int event, const bool includeSelf=false);
|
void ComputeSubMeshStateEngine(compute_event event, const bool includeSelf=false);
|
||||||
|
|
||||||
bool Evaluate(MapShapeNbElems& aResMap);
|
bool Evaluate(MapShapeNbElems& aResMap);
|
||||||
|
|
||||||
|
@ -980,7 +980,7 @@ void SMESHDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elt,
|
|||||||
{
|
{
|
||||||
//MESSAGE(" --------------------------------> SMESHDS_Mesh::RemoveFreeElement " << subMesh << " " << fromGroups);
|
//MESSAGE(" --------------------------------> SMESHDS_Mesh::RemoveFreeElement " << subMesh << " " << fromGroups);
|
||||||
if (elt->GetType() == SMDSAbs_Node) {
|
if (elt->GetType() == SMDSAbs_Node) {
|
||||||
RemoveFreeNode( static_cast<const SMDS_MeshNode*>(elt), subMesh);
|
RemoveFreeNode( static_cast<const SMDS_MeshNode*>(elt), subMesh, fromGroups);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -554,7 +554,7 @@ namespace
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
for ( size_t iS = 0; iS < theShortEdges[ nbBranchPoints > 0 ].size(); ++iS )
|
for ( size_t iS = 0; iS < theShortEdges[ nbBranchPoints > 0 ].size(); ++iS )
|
||||||
shortMap.Add( theShortEdges[ nbBranchPoints ][ iS ]);
|
shortMap.Add( theShortEdges[ nbBranchPoints > 0 ][ iS ]);
|
||||||
|
|
||||||
++nbBranchPoints;
|
++nbBranchPoints;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user