mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 08:50:35 +05:00
PAL10158. Add clearMesh() where call ComputeStateEngine(CLEANDEP)
This commit is contained in:
parent
e292bda630
commit
7a320061b4
@ -3466,6 +3466,35 @@ bool SMESH_Pattern::
|
||||
return makePoly;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : clearMesh
|
||||
//purpose : clear mesh elements existing on myShape in theMesh
|
||||
//=======================================================================
|
||||
|
||||
void SMESH_Pattern::clearMesh(SMESH_Mesh* theMesh) const
|
||||
{
|
||||
|
||||
if ( !myShape.IsNull() )
|
||||
{
|
||||
if ( SMESH_subMesh * aSubMesh = theMesh->GetSubMesh/*Containing*/( myShape ))
|
||||
{
|
||||
aSubMesh->ComputeStateEngine( SMESH_subMesh::CLEANDEP );
|
||||
}
|
||||
else {
|
||||
SMESHDS_Mesh* aMeshDS = theMesh->GetMeshDS();
|
||||
if ( SMESHDS_SubMesh* aSubMeshDS = aMeshDS->MeshElements( myShape ))
|
||||
{
|
||||
SMDS_ElemIteratorPtr eIt = aSubMeshDS->GetElements();
|
||||
while ( eIt->more() )
|
||||
aMeshDS->RemoveElement( eIt->next() );
|
||||
SMDS_NodeIteratorPtr nIt = aSubMeshDS->GetNodes();
|
||||
while ( nIt->more() )
|
||||
aMeshDS->RemoveNode( static_cast<const SMDS_MeshNode*>( nIt->next() ));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : MakeMesh
|
||||
//purpose : Create nodes and elements in <theMesh> using nodes
|
||||
@ -3485,26 +3514,12 @@ bool SMESH_Pattern::MakeMesh(SMESH_Mesh* theMesh,
|
||||
SMESHDS_Mesh* aMeshDS = theMesh->GetMeshDS();
|
||||
|
||||
// clear elements and nodes existing on myShape
|
||||
|
||||
if ( !myShape.IsNull() )
|
||||
{
|
||||
SMESH_subMesh * aSubMesh = theMesh->GetSubMeshContaining( myShape );
|
||||
SMESHDS_SubMesh * aSubMeshDS = aMeshDS->MeshElements( myShape );
|
||||
if ( aSubMesh )
|
||||
aSubMesh->ComputeStateEngine( SMESH_subMesh::CLEAN );
|
||||
else if ( aSubMeshDS )
|
||||
{
|
||||
SMDS_ElemIteratorPtr eIt = aSubMeshDS->GetElements();
|
||||
while ( eIt->more() )
|
||||
aMeshDS->RemoveElement( eIt->next() );
|
||||
SMDS_NodeIteratorPtr nIt = aSubMeshDS->GetNodes();
|
||||
while ( nIt->more() )
|
||||
aMeshDS->RemoveNode( static_cast<const SMDS_MeshNode*>( nIt->next() ));
|
||||
}
|
||||
}
|
||||
clearMesh(theMesh);
|
||||
|
||||
bool onMeshElements = ( !myElements.empty() );
|
||||
|
||||
// Create missing nodes
|
||||
|
||||
vector< const SMDS_MeshNode* > nodesVector; // i-th point/xyz -> node
|
||||
if ( onMeshElements )
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user