How to show vtkPolyData in vtkImageViewer2?

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();

}

`

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