BUG Connectivity Filter - SetExtractionModeToSpecifiedRegions keep points from other regions.
The GetNumberOfPoints is the same as before the extraction (bad), while the GetNumberOfCells has only the cell count of the specified regions (good).
vtkSmartPointer<vtkPolyDataConnectivityFilter> connectivityUpperBrace = vtkSmartPointer<vtkPolyDataConnectivityFilter>::New();
connectivityUpperBrace->SetInputData(upperBraceFeatureEdges->GetOutput());
connectivityUpperBrace->SetExtractionModeToAllRegions();
connectivityUpperBrace->Update();
//vtkSmartPointer<vtkPolyDataConnectivityFilter> connectivityUpperBraceSpecifiedRegion = vtkSmartPointer<vtkPolyDataConnectivityFilter>::New();
for (int i = 0; i < connectivityUpperBrace->GetNumberOfExtractedRegions(); ++i)
{
connectivityUpperBrace->SetExtractionModeToSpecifiedRegions();
connectivityUpperBrace->InitializeSpecifiedRegionList();
connectivityUpperBrace->AddSpecifiedRegion(i);
connectivityUpperBrace->Modified();
connectivityUpperBrace->Update();
vtkSmartPointer<vtkPolyData> extractedRegion = vtkSmartPointer<vtkPolyData>::New();
extractedRegion->DeepCopy(connectivityUpperBrace->GetOutput());
cout << "points extracted region: " << extractedRegion->GetNumberOfPoints() << endl;
cout << "cells extracted region: " << extractedRegion->GetNumberOfCells() << endl;
Edited by Ben Boeckel