# Wireframe Representation not Working

**URL:** <https://discourse.vtk.org/t/wireframe-representation-not-working/13353>\
**Category:** Development\
**Created:** [February 22, 2024, 12:16am UTC](https://discourse.vtk.org/t/wireframe-representation-not-working/13353 "2024-02-22T00:16:37Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rafael\_Scatena](https://discourse.vtk.org/user_avatar/discourse.vtk.org/rafael_scatena/32/7820_2.png) [@Rafael\_Scatena](https://discourse.vtk.org/u/Rafael_Scatena)\
**Post date:** [February 22, 2024, 12:16am UTC](https://discourse.vtk.org/t/wireframe-representation-not-working/13353/1 "2024-02-22T00:16:37Z")

</div>

Hello,

I transformed the visualize fill holes example into a function, but the wireframe representation isn’t working:

 ![visualize holes](https://discourse.vtk.org/uploads/default/original/2X/a/ae4211d9a4f589927f95fdc2601a7cfe9cc4f29e.png)

```
void visualizeHoles(vtkSmartPointer<vtkPolyData> originalPolyData, vtkSmartPointer<vtkPolyData> filledPolyData,const std::string& filename) {
	    vtkIdType numOriginalCells = originalPolyData->GetNumberOfCells();
	    vtkIdType numNewCells = filledPolyData->GetNumberOfCells();

	        vtkNew<vtkNamedColors> colors;
	        
	    // Iterate over the original cells
	    auto it = filledPolyData->NewCellIterator();
	    vtkIdType numCells = 0;
	    for (it->InitTraversal();!it->IsDoneWithTraversal() && numCells < numOriginalCells; it->GoToNextCell(), ++numCells){}
	    std::cout << "Num original: " << numOriginalCells << ", Num new: " << numNewCells << ", Num added: " << numNewCells - numOriginalCells << std::endl;
	    
	    vtkNew<vtkPolyData> holePolyData;
	    holePolyData->Allocate(originalPolyData, numNewCells - numOriginalCells);
	    holePolyData->SetPoints(originalPolyData->GetPoints());

	    vtkNew<vtkGenericCell> cell;
	    // The remaining cells are the new ones from the hole filler
	    for (; !it->IsDoneWithTraversal(); it->GoToNextCell())
	    {it->GetCell(cell); holePolyData->InsertNextCell(it->GetCellType(), cell->GetPointIds());}
	    it->Delete();

	    // We have to use ConnectivtyFilter and not
	    // PolyDataConnectivityFilter since the later does not create
	    // RegionIds cell data.
	    vtkNew<vtkConnectivityFilter> connectivity;
	    connectivity->SetInputData(holePolyData);
	    connectivity->SetExtractionModeToAllRegions();
	    connectivity->ColorRegionsOn();
	    connectivity->Update();
	    std::cout << "Found " << connectivity->GetNumberOfExtractedRegions()<< " holes" << std::endl;

	    // Create a mapper and actor for the fill polydata
	    vtkNew<vtkDataSetMapper> filledMapper;
	    filledMapper->SetInputConnection(connectivity->GetOutputPort());
	    filledMapper->SetScalarModeToUseCellData();
	    filledMapper->SetScalarRange(connectivity->GetOutput()->GetCellData()->GetArray("RegionId")->GetRange());
	    
	    vtkNew<vtkActor> filledActor;
	    filledActor->SetMapper(filledMapper);
	    filledActor->GetProperty()->SetDiffuseColor(colors->GetColor3d("Chocolate").GetData());
	    
	    
	    // Create a mapper and actor for the original polydata
	    vtkNew<vtkPolyDataMapper> originalMapper;
	    originalMapper->SetInputData(originalPolyData);

	    vtkNew<vtkProperty> backfaceProp;
	    backfaceProp->SetDiffuseColor(colors->GetColor3d("Banana").GetData());

	    vtkNew<vtkActor> originalActor;
	    originalActor->SetMapper(originalMapper);
	    originalActor->SetBackfaceProperty(backfaceProp);
	    originalActor->GetProperty()->SetDiffuseColor(colors->GetColor3d("Flesh").GetData());
	    originalActor->GetProperty()->SetRepresentationToWireframe();
	    originalActor->Modified();
	    
	    // Create a renderer, render window, and interactor
	    vtkNew<vtkRenderer> renderer;

	    vtkNew<vtkEGLRenderWindow> renderWindow;
	    renderWindow->SetSize(512, 512);
	    renderWindow->AddRenderer(renderer);
	    renderWindow->SetWindowName("IdentifyHoles");

	    vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
	    renderWindowInteractor->SetRenderWindow(renderWindow);

	    // Add the actor to the scene
	    renderer->AddActor(originalActor);
	    renderer->AddActor(filledActor);
	    renderer->SetBackground(colors->GetColor3d("Burlywood").GetData());

	    renderer->GetActiveCamera()->SetPosition(0, -1, 0);
	    renderer->GetActiveCamera()->SetFocalPoint(0, 0, 0);
	    renderer->GetActiveCamera()->SetViewUp(0, 0, 1);
	    renderer->GetActiveCamera()->Azimuth(60);
	    renderer->GetActiveCamera()->Elevation(30);

	    renderer->ResetCamera();

	    renderWindow->Render();
	    renderWindowInteractor->Start();
	    
	    vtkNew<vtkWindowToImageFilter> windowToImageFilter;
	    windowToImageFilter->SetInput(renderWindow);
	    windowToImageFilter->Update();
	 
	  
	    vtkNew<vtkPNGWriter> writer;
	    writer->SetFileName(filename.c_str());
	    writer->SetInputConnection(windowToImageFilter->GetOutputPort());
	    writer->Write();}

```
