# How to show vtkPolyData in vtkImageViewer2?

**URL:** https://discourse.vtk.org/t/how-to-show-vtkpolydata-in-vtkimageviewer2/4527
**Category:** Support
**Created:** [October 30, 2020, 3:46am UTC](https://discourse.vtk.org/t/how-to-show-vtkpolydata-in-vtkimageviewer2/4527 "2020-10-30T03:46:29Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![wulicheng](https://discourse.vtk.org/user_avatar/discourse.vtk.org/wulicheng/32/1990_2.png) [@wulicheng](https://discourse.vtk.org/u/wulicheng)
#### Post date: [October 30, 2020, 3:46am UTC](https://discourse.vtk.org/t/how-to-show-vtkpolydata-in-vtkimageviewer2/4527/1 "2020-10-30T03:46:29Z")

</div>

I have read a stl file and cut it, it can show the cut slice of cutter. But when I use this in vtkImageViewer2, the reslicer can not show? Can anyone show me a suggestion!!!  
`void main()  
{

```
vtkRenderer *pRender1 = vtkRenderer::New();
vtkRenderer *pRender2 = vtkRenderer::New();
vtkRenderWindow *pWin = vtkRenderWindow::New();
vtkRenderWindowInteractor *pInt = vtkRenderWindowInteractor::New();
pWin->SetSize(600, 600);
pWin->AddRenderer(pRender1);
pWin->AddRenderer(pRender2);
pRender1->SetViewport(0, 0, .5, 1);
pRender2->SetViewport(0.5, 0, 1, 1);
pRender2->SetBackground(.3, .3, .3);
pInt->SetRenderWindow(pWin);

vtkSTLReader* pReader = vtkSTLReader::New();
pReader->SetFileName("E:/dingban.STL");
pReader->Update(); //读取

vtkSmartPointer<vtkPolyDataMapper> pMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
pMapper->SetInputData(pReader->GetOutput());

vtkSmartPointer<vtkActor> pActor1 = vtkSmartPointer<vtkActor>::New();
pActor1->SetMapper(pMapper);
pRender1->AddActor(pActor1);

  
vtkPlaneWidget *pWidget = vtkPlaneWidget::New();
pWidget->SetInteractor(pInt);
pWidget->SetInputData(pReader->GetOutput());
pWidget->SetResolution(10);
pWidget->GetPlaneProperty()->SetColor(.9, .4, .4);
pWidget->GetPlaneProperty()->SetOpacity(.8);
pWidget->GetHandleProperty()->SetColor(0, .4, .7);
pWidget->GetHandleProperty()->SetLineWidth(1.5);
pWidget->NormalToYAxisOn();
pWidget->SetRepresentationToSurface();
pWidget->SetCenter(pReader->GetOutput()->GetCenter());
pWidget->PlaceWidget();
pWidget->On();

vtkPlane *pPlane = vtkPlane::New();
pPlane->SetOrigin(pReader->GetOutput()->GetCenter());
pPlane->SetNormal(1, 0, 0);
vtkCutter *pCut = vtkCutter::New();
pCut->SetCutFunction(pPlane);
pCut->SetInputConnection(pReader->GetOutputPort());
pCut->Update();

vtkSmartPointer<vtkPolyDataConnectivityFilter> connectFilter1 = vtkSmartPointer<vtkPolyDataConnectivityFilter>::New();

connectFilter1->SetInputData(pCut->GetOutput());
connectFilter1->SetExtractionModeToAllRegions();
 
connectFilter1->ColorRegionsOn();
connectFilter1->MarkVisitedPointIdsOn();
connectFilter1->Update();
int regionNum = connectFilter1->GetNumberOfExtractedRegions();
int temp = 0;

std::vector<vtkSmartPointer<vtkPoints>> vPoints;
 
for (size_t i = 0; i < regionNum; i++)
{
	vPoints.push_back(vtkSmartPointer<vtkPoints>::New());
}
for (size_t i = 0; i < pCut->GetOutput()->GetPoints()->GetNumberOfPoints(); i++)
{
	int regionId = connectFilter1->GetOutput()->GetPointData()->GetScalars()->GetTuple1(i);
	
	if (regionId == temp)
	{
		vPoints[temp]->InsertNextPoint( connectFilter1->GetOutput()->GetPoint(i));
	}
	else
	{
		temp++;
	}
}

for (size_t i = 0; i < regionNum; i++)
{

	int sum = vPoints[i]->GetNumberOfPoints();
	vtkSmartPointer<vtkPolygon> polygon = vtkSmartPointer<vtkPolygon>::New();
	polygon->GetPointIds()->SetNumberOfIds(sum);
	for (size_t i = 0; i < sum; i++)
	{
		polygon->GetPointIds()->SetId(i, i);
	}
	vtkSmartPointer<vtkCellArray> cell = vtkSmartPointer<vtkCellArray>::New();
	cell->InsertNextCell(polygon);
	vtkSmartPointer<vtkPolyData> polydatatemp = vtkSmartPointer<vtkPolyData>::New();
	polydatatemp->SetPoints(vPoints[i]);
	polydatatemp->SetPolys(cell);

	vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	mapper->SetInputData(polydatatemp);

	vtkSmartPointer<vtkActor> pActor2 = vtkSmartPointer<vtkActor>::New();
	pActor2->GetProperty()->SetColor(1, 1, 0);
	pActor2->SetMapper(mapper);
	pRender2->AddActor(pActor2);
}

pRender1->ResetCamera();
pRender2->ResetCamera();
pInt->Initialize();
pInt->Start();

```

}

 ![图片](https://discourse.vtk.org/uploads/default/original/2X/6/68099a3d76425ad5534948cd8a022958fbed9755.png) `

---

<div class="post-metadata">

### Author: ![flaviu2](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/f/74df32/32.png) [@flaviu2](https://discourse.vtk.org/u/flaviu2)
#### Post date: [October 30, 2020, 12:16pm UTC](https://discourse.vtk.org/t/how-to-show-vtkpolydata-in-vtkimageviewer2/4527/2 "2020-10-30T12:16:12Z")

</div>

You can see here some code sample of how to do this: [http://vtk.1045678.n5.nabble.com/problem-in-add-line-in-vtkImageViewer2-td3227938.html](http://vtk.1045678.n5.nabble.com/problem-in-add-line-in-vtkImageViewer2-td3227938.html)
