Salome HOME
projects
/
modules
/
smesh.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
93c3ba7
)
0052454: Sub-mesh priority is not taken into account
author
eap
<eap@opencascade.com>
Fri, 18 Jul 2014 11:13:16 +0000
(15:13 +0400)
committer
eap
<eap@opencascade.com>
Fri, 18 Jul 2014 11:13:16 +0000
(15:13 +0400)
src/SMESH/SMESH_Mesh.cxx
patch
|
blob
|
history
diff --git
a/src/SMESH/SMESH_Mesh.cxx
b/src/SMESH/SMESH_Mesh.cxx
index b3cf4dfda3677f04b029546ba3874aa1095e5d98..6d4db5d83664ca3b281a93f3af7afc085ff5234d 100644
(file)
--- a/
src/SMESH/SMESH_Mesh.cxx
+++ b/
src/SMESH/SMESH_Mesh.cxx
@@
-2206,18
+2206,39
@@
bool SMESH_Mesh::SortByMeshOrder(list<SMESH_subMesh*>& theListToSort) const
map< int, TPosInList > sortedPos;
TPosInList smBeg = theListToSort.begin(), smEnd = theListToSort.end();
TListOfListOfInt::const_iterator listIdsIt = _mySubMeshOrder.begin();
map< int, TPosInList > sortedPos;
TPosInList smBeg = theListToSort.begin(), smEnd = theListToSort.end();
TListOfListOfInt::const_iterator listIdsIt = _mySubMeshOrder.begin();
- for( ; listIdsIt != _mySubMeshOrder.end(); listIdsIt++) {
+ for( ; listIdsIt != _mySubMeshOrder.end(); listIdsIt++)
+ {
const TListOfInt& listOfId = *listIdsIt;
const TListOfInt& listOfId = *listIdsIt;
+ // convert sm ids to sm's
+ vector<SMESH_subMesh*> smVec;
TListOfInt::const_iterator idIt = listOfId.begin();
for ( ; idIt != listOfId.end(); idIt++ ) {
if ( SMESH_subMesh * sm = GetSubMeshContaining( *idIt )) {
TListOfInt::const_iterator idIt = listOfId.begin();
for ( ; idIt != listOfId.end(); idIt++ ) {
if ( SMESH_subMesh * sm = GetSubMeshContaining( *idIt )) {
- TPosInList smPos = find( smBeg, smEnd, sm );
- if ( smPos != smEnd ) {
- onlyOrderedList.push_back( sm );
- sortedPos[ distance( smBeg, smPos )] = smPos;
+ if ( sm->GetSubMeshDS() && sm->GetSubMeshDS()->IsComplexSubmesh() )
+ {
+ SMESHDS_SubMeshIteratorPtr smdsIt = sm->GetSubMeshDS()->GetSubMeshIterator();
+ while ( smdsIt->more() )
+ {
+ const SMESHDS_SubMesh* smDS = smdsIt->next();
+ if (( sm = GetSubMeshContaining( smDS->GetID() )))
+ smVec.push_back( sm );
+ }
+ }
+ else
+ {
+ smVec.push_back( sm );
}
}
}
}
}
}
+ // find smVec items in theListToSort
+ for ( size_t i = 0; i < smVec.size(); ++i )
+ {
+ TPosInList smPos = find( smBeg, smEnd, smVec[i] );
+ if ( smPos != smEnd ) {
+ onlyOrderedList.push_back( smVec[i] );
+ sortedPos[ distance( smBeg, smPos )] = smPos;
+ }
+ }
}
if (onlyOrderedList.size() < 2)
return res;
}
if (onlyOrderedList.size() < 2)
return res;