X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_AddMeshElementDlg.cxx;h=f7860c7995278b8538da5a60c824de1af44fe0ba;hb=51ac2145d36a7f6300ccbc49c4bf8bb125285350;hp=fad8aa4e5b40bfa2664f2704224916667fb736a0;hpb=e4737e85f0da6d3f90fd08f6be1c2825195fe16f;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx index fad8aa4e5..f7860c799 100644 --- a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx @@ -125,7 +125,7 @@ namespace SMESH{ } - typedef list TVTKIds; + typedef std::vector TVTKIds; void SetPosition(SMESH_Actor* theActor, vtkIdType theType, const TVTKIds& theIds) @@ -133,11 +133,34 @@ namespace SMESH{ vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid(); myGrid->SetPoints(aGrid->GetPoints()); + const int* aConn = NULL; + switch(theType){ + case VTK_TETRA:{ + static int anIds[] = {0,2,1,3}; + aConn = anIds; + break; + } + case VTK_PYRAMID:{ + static int anIds[] = {0,3,2,1,4}; + aConn = anIds; + break; + } + case VTK_HEXAHEDRON:{ + static int anIds[] = {0,3,2,1,4,7,6,5}; + aConn = anIds; + break; + }} + myGrid->Reset(); vtkIdList *anIds = vtkIdList::New(); - TVTKIds::const_iterator anIt = theIds.begin(); - for (int i = 0; anIt != theIds.end(); anIt++,i++) - anIds->InsertId(i, *anIt); + + if(aConn) + for (int i = 0, iEnd = theIds.size(); i < iEnd; i++) + anIds->InsertId(i,theIds[aConn[i]]); + else + for (int i = 0, iEnd = theIds.size(); i < iEnd; i++) + anIds->InsertId(i,theIds[i]); + myGrid->InsertNextCell(theType,anIds); anIds->Delete(); @@ -375,9 +398,9 @@ void SMESHGUI_AddMeshElementDlg::Init( SALOME_Selection* Sel ) SMESH::SetPointRepresentation(true); QAD_Application::getDesktop()->SetSelectionMode( NodeSelection, true ); - SelectionIntoArgument(); - myBusy = false; + + SelectionIntoArgument(); } //================================================================================= @@ -578,7 +601,7 @@ void SMESHGUI_AddMeshElementDlg::displaySimulation() anIds.push_back( myActor->GetObject()->GetNodeVTKId( aListId[ i ].toInt() )); if ( Reverse && Reverse->isChecked() ) - anIds.reverse(); + reverse(anIds.begin(),anIds.end()); vtkIdType aType = 0; switch ( myNbNodes ) {