+ void SetBallPosition(SMESH_Actor* theActor,TVTKIds& theIds, double theDiameter) {
+ vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid();
+ myBallPolyData->Reset();
+ myBallPolyData->DeleteCells();
+ myBallPolyData->SetPoints(aGrid->GetPoints());
+
+ vtkDataArray* aScalars = vtkDataArray::CreateDataArray(VTK_DOUBLE);
+ aScalars->SetNumberOfComponents(1);
+ aScalars->SetNumberOfTuples(theIds.size());
+ myBallPolyData->GetCellData()->SetScalars(aScalars);
+ aScalars->Delete();
+
+ vtkIdList *anIds = vtkIdList::New();
+ anIds->SetNumberOfIds(1);
+ for (int i = 0, iEnd = theIds.size(); i < iEnd; i++){
+ anIds->InsertId(0,theIds[i]);
+ vtkIdType anId = myBallPolyData->InsertNextCell(VTK_POLY_VERTEX,anIds);
+ double d = theDiameter * theActor->GetBallScale();
+ aScalars->SetTuple(anId,&d);
+ anIds->Reset();
+ }
+
+ anIds->Delete();
+ myBallPolyData->Modified();
+ SetVisibility (false, false, true);
+ }