From 8944375f2237b3bdfb4d9d73a2de2dc1232128d1 Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 15 Oct 2012 14:34:23 +0000 Subject: [PATCH] 0021543: EDF 1978 SMESH: Viscous layer for 2D meshes In FindEqualElements(), use idSourceToSet() --- src/SMESH_I/SMESH_MeshEditor_i.cxx | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/SMESH_I/SMESH_MeshEditor_i.cxx b/src/SMESH_I/SMESH_MeshEditor_i.cxx index a5b5f88c1..d4545e0b6 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.cxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.cxx @@ -4450,18 +4450,8 @@ void SMESH_MeshEditor_i::FindEqualElements(SMESH::SMESH_IDSource_ptr theObj SMESH::SMESH_GroupBase_var group = SMESH::SMESH_GroupBase::_narrow(theObject); if ( !(!group->_is_nil() && group->GetType() == SMESH::NODE) ) { - typedef list TListOfIDs; - set elems; - SMESH::long_array_var aElementsId = theObject->GetIDs(); - SMESHDS_Mesh* aMesh = GetMeshDS(); - - for(int i = 0; i < aElementsId->length(); i++) { - CORBA::Long anID = aElementsId[i]; - const SMDS_MeshElement * elem = aMesh->FindElement(anID); - if (elem) { - elems.insert(elem); - } - } + TIDSortedElemSet elems; + idSourceToSet( theObject, GetMeshDS(), elems, SMDSAbs_All, /*emptyIfIsMesh=*/true); ::SMESH_MeshEditor::TListOfListOfElementsID aListOfListOfElementsID; myEditor.FindEqualElements( elems, aListOfListOfElementsID ); @@ -4469,15 +4459,16 @@ void SMESH_MeshEditor_i::FindEqualElements(SMESH::SMESH_IDSource_ptr theObj GroupsOfElementsID = new SMESH::array_of_long_array; GroupsOfElementsID->length( aListOfListOfElementsID.size() ); - ::SMESH_MeshEditor::TListOfListOfElementsID::iterator arraysIt = aListOfListOfElementsID.begin(); - for (CORBA::Long j = 0; arraysIt != aListOfListOfElementsID.end(); ++arraysIt, ++j) { + ::SMESH_MeshEditor::TListOfListOfElementsID::iterator arraysIt = + aListOfListOfElementsID.begin(); + for (CORBA::Long j = 0; arraysIt != aListOfListOfElementsID.end(); ++arraysIt, ++j) + { SMESH::long_array& aGroup = (*GroupsOfElementsID)[ j ]; - TListOfIDs& listOfIDs = *arraysIt; + list& listOfIDs = *arraysIt; aGroup.length( listOfIDs.size() ); - TListOfIDs::iterator idIt = listOfIDs.begin(); - for (int k = 0; idIt != listOfIDs.end(); ++idIt, ++k ) { + list::iterator idIt = listOfIDs.begin(); + for (int k = 0; idIt != listOfIDs.end(); ++idIt, ++k ) aGroup[ k ] = *idIt; - } } TPythonDump() << "equal_elements = " << this << ".FindEqualElements( " -- 2.39.2