mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-02-28 19:55:37 +05:00
Fix crashes caused by mesh compacting
This commit is contained in:
parent
25c9e04a61
commit
e1969210a9
@ -23,8 +23,11 @@ Mesh_1.Compute()
|
||||
# define arguments for MakePolyLine
|
||||
|
||||
segments = []
|
||||
# between nodes 20 and 1, default plane
|
||||
segments.append( SMESH.PolySegment( 20, 0, 1, 0, smesh.MakeDirStruct(0,0,0) ))
|
||||
# between nodes 1 and 100, default plane
|
||||
segments.append( SMESH.PolySegment( 1, 0, 200, 0, smesh.MakeDirStruct(0,0,0) ))
|
||||
# between nodes 200 and edge (578, 577), plane includes vector (1,1,1)
|
||||
segments.append( SMESH.PolySegment( 200, 0, 578, 577, smesh.MakeDirStruct(1,1,1) ))
|
||||
|
||||
Mesh_1.MakePolyLine( segments, "1D group")
|
||||
|
@ -12877,6 +12877,8 @@ namespace // utils for MakePolyLine
|
||||
//================================================================================
|
||||
|
||||
void Path::Remove( std::vector< Path > & paths, size_t& i )
|
||||
{
|
||||
if ( paths.size() > 1 )
|
||||
{
|
||||
size_t j = paths.size() - 1; // last item to be removed
|
||||
if ( i < j )
|
||||
@ -12889,7 +12891,9 @@ namespace // utils for MakePolyLine
|
||||
paths[ i ].myNode2 = paths[ j ].myNode2;
|
||||
paths[ i ].myLength = paths[ j ].myLength;
|
||||
}
|
||||
}
|
||||
paths.pop_back();
|
||||
if ( i > 0 )
|
||||
--i;
|
||||
}
|
||||
|
||||
@ -13183,7 +13187,7 @@ void SMESH_MeshEditor::MakePolyLine( TListOfPolySegments& theSegments,
|
||||
SMESHUtils::Deleter<SMESH_ElementSearcher> delSearcher;
|
||||
if ( !searcher )
|
||||
{
|
||||
searcher = SMESH_MeshAlgos::GetElementSearcher( *myMesh->GetMeshDS() );
|
||||
searcher = SMESH_MeshAlgos::GetElementSearcher( *GetMeshDS() );
|
||||
delSearcher._obj = searcher;
|
||||
}
|
||||
|
||||
@ -13217,6 +13221,9 @@ void SMESH_MeshEditor::MakePolyLine( TListOfPolySegments& theSegments,
|
||||
}
|
||||
}
|
||||
|
||||
// assure that inverse elements are constructed, avoid their concurrent building in threads
|
||||
GetMeshDS()->nodesIterator()->next()->NbInverseElements();
|
||||
|
||||
// find paths
|
||||
|
||||
PolyPathCompute algo( theSegments, segPaths, myMesh );
|
||||
|
Loading…
Reference in New Issue
Block a user