<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 : "<<nbIdr;<br>
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<nbrligne;i++) <br>
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<m;j++)<br>
{<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/>