<h5>

class MouseInteractorStyle : public vtkInteractorStyleTrackballCamera<br>
{<br>
  public:<br>
  static MouseInteractorStyle* New();<br>
  vtkSmartPointer<vtkSphereSource> sphere ;<br>
  vtkSmartPointer<vtkRenderer> renderer;<br>
<br>
  MouseInteractorStyle()<br>
  {<br>
    selectedMapper = vtkSmartPointer<vtkDataSetMapper>::New();<br>
    selectedActor = vtkSmartPointer<vtkActor>::New();<br>
        vtkSmartPointer<vtkUnstructuredGrid> selected =  vtkSmartPointer<vtkUnstructuredGrid>::New();<br>
        selected = vtkSmartPointer<vtkUnstructuredGrid>::New();<br>
        selectedActor->SetMapper(selectedMapper);<br>
          <br>
  }<br>
      virtual void OnLeftButtonDown()<br>
    {<br>
                        vtkSmartPointer<vtkPolyData> polydata =vtkSmartPointer<vtkPolyData>::New(); <br>
                        polydata=sphere->GetOutput();<br>
<font color=#006400>//here i have a function that will devide my mesh to 8 regions ( octree nodes), it  is so long, so i prefer to not put it</font><br>

int* pos = this->GetInteractor()->GetEventPosition();<br>
 
          vtkSmartPointer<vtkPointPicker> picker = vtkSmartPointer<vtkPointPicker>::New();<br>
     
      picker->Pick(pos[0], pos[1], pos[2], this->GetDefaultRenderer());<br>
 
      double* worldPosition = picker->GetPickPosition();<br>
          vtkIdType pointId=picker->GetPointId();<br>

          if(pointId!= -1)<br>
          {<br>
int  region=PointsNode->GetValue(pointId);<br>
int nbIdr=0;<br>
vector<vtkIdType>ids(1,1);<br>
for (int i=1; i<polydata->GetNumberOfPoints(); i++)<br>
{<br>
        if(PointsNode->GetValue(i)==region)<font color=#006400>//verify if this points belongs to the same region of pointId</font><br>
                {<br>
                        ids.push_back(i);<br>
        nbIdr++;        <br>
        }<br>
        
}<br>
cout<<"the number of vertex in this  region is : "<&lt;nbIdr;&lt;br&gt;
int nbpp=polydata->GetNumberOfPoints();<br>
<font color=#006400>/*************************** *************************/</font><br>
int nbrligne;  <font color=#006400>//number of vertex (points) in the file</font><br>
for (int i=0;i&lt;nbrligne;i++)  &lt;br&gt;
double* so;<br>
so=sommet[i];<font color=#006400>// sommet[i]:is the table of vertex in the file</font><br>
int nbp=polydata->GetNumberOfPoints();<br>
int nbp1=nbp+1;<br>
polydata->GetPoints()->InsertPoint(nbp1,so);<font color=#006400>// add point to the existed polydata</font><br>
//polydata->GetPoints()->InsertNextPoint(so);<br>
polydata->GetPoints()->Modified();<br>
polydata->Modified();<br>
polydata->Update();<br>
<br>
}  <br>
<font color=#006400>/ /**********************************add cells *************************/</font><br>
 vtkIdList* points = vtkIdList::New(); <br>
<font color=#006400>// Ids: 2d vector which contains the list of cells </font><br>
          int z;<br>
for (int j=0;j&lt;m;j++)&lt;br&gt;
{<br>
for (k=0;k<3;k++)<br>
z=ids[j][k];<br>
 int zz=z+nbpp;<br>
           points->InsertNextId(zz); <br>
   } <br>
int cell=polydata->GetPolys()->GetNumberOfCells();<br>
polydata->GetPolys()->InsertNextCell(points);<br>
polydata->BuildCells();<br>
polydata->BuildLinks();<br>
polydata->GetPolys()->Modified();<br>
int cells=cell+1;<br>
polydata->GetPolys()->UpdateCellCount(cells);<br>
nbrligneface++;  <br>
 }    <br>
};<br>
        this->Interactor->GetRenderWindow()->GetRenderers()->GetFirstRenderer()->AddActor(selectedActor);<br>
 <br>
      vtkInteractorStyleTrackballCamera::OnLeftButtonDown();<br>
    }<br>
 
    vtkSmartPointer<vtkPolyData> Data;<br>
    vtkSmartPointer<vtkDataSetMapper> selectedMapper;<br>
    vtkSmartPointer<vtkActor> selectedActor;<br>
          vtkSmartPointer<vtkUnstructuredGrid> selected;<br>
 
};<br>
 
vtkStandardNewMacro(MouseInteractorStyle);<br>
 

int main(int , char *[])<br>
{<br>
  vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();<br>
  sphereSource->Update();<br>
  
  vtkSmartPointer<vtkTriangleFilter> triangleFilter =  vtkSmartPointer<vtkTriangleFilter>::New();<br>
  triangleFilter->SetInputConnection(sphereSource->GetOutputPort());<br>
  triangleFilter->Update();<br>
 
  vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();<br>
  mapper->SetInputConnection(triangleFilter->GetOutputPort());<br>
 
  vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();<br>
  actor->SetMapper(mapper);<br>
 
  vtkSmartPointer<vtkRenderWindow> renderWindow =  vtkSmartPointer<vtkRenderWindow>::New();<br>

  vtkSmartPointer<vtkRenderer> renderer =  vtkSmartPointer<vtkRenderer>::New();<br>
      renderWindow->AddRenderer(renderer);<br>
  vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =vtkSmartPointer<vtkRenderWindowInteractor>::New();
  renderWindowInteractor->SetRenderWindow(renderWindow);<br>
  renderWindowInteractor->Initialize();<br>
   vtkSmartPointer<MouseInteractorStyle> style = vtkSmartPointer<MouseInteractorStyle>::New();<br>
  style->SetDefaultRenderer(renderer);<br>
  style->sphere=sphereSource; <br>
  renderWindowInteractor->SetInteractorStyle(style);<br>
  renderer->AddActor(actor);<br>
  renderer->ResetCamera();  <br>
  renderWindow->Render();<br>
  renderWindowInteractor->Start();<br>
  return EXIT_SUCCESS;<br>
}<br>
</h5>
I hope that this code is "minimal" and "compilable".<br>

Regards,<br>
Tasnim<br>



        
        
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://vtk.1045678.n5.nabble.com/adding-cells-to-existing-Polydata-tp5715971p5715983.html">Re: adding cells to existing Polydata</a><br/>
Sent from the <a href="http://vtk.1045678.n5.nabble.com/VTK-Users-f1224199.html">VTK - Users mailing list archive</a> at Nabble.com.<br/>