Here it is
m_IsoSurfaceMapperBR has the input of the iso surface
m_BoneReductionImageBR is the imagedata used to generate the iso surface
vtkSmartPointer<vtkSphere> sphere = vtkSmartPointer<vtkSphere>::New();
vtkSmartPointer<vtkSphereSource> spherePoly = vtkSmartPointer<vtkSphereSource>::New();
double tip[3];
m_drillModel->GetDrillTip(tip);
sphere->SetCenter(tip);
sphere->SetRadius(6.0);
spherePoly->SetCenter(tip);
spherePoly->SetRadius(6.0);
spherePoly->SetPhiResolution(200);
spherePoly->SetThetaResolution(200);
vtkNew<vtkClipPolyData> isoClip;
skinClip->SetInputData(m_IsoSurfaceMapperBR->GetInput());
skinClip->SetClipFunction(sphere);
skinClip->SetValue(0);
skinClip->GenerateClipScalarsOn();
skinClip->Update();
vtkNew<vtkProbeFilter> probe;
probe->SetInputData(spherePoly);
probe->SetSourceData(m_BoneReductionImageBR);
probe->Update();
vtkNew<vtkClipPolyData> probeClip;
probeClip->SetInputConnection(probe->GetOutputPort());
probeClip->SetValue(30);
probeClip->GenerateClipScalarsOff();
probeClip->Update();
vtkSmartPointer<vtkAppendPolyData> appendData = vtkSmartPointer<vtkAppendPolyData>::New();
appendData->AddInputData(isoClip->GetOutPut());
appendData->AddInputData(probeClip->GetOutPut());
appendData->Update();
vtkSmartPointer<vtkCleanPolyData> clean = vtkSmartPointer<vtkCleanPolyData>::New();
clean->SetInputData(appendData->GetOutput());
clean->Update();
m_IsoSurfaceMapperBR->SetInputData(clean->GetOutput());
m_IsoSurfaceMapperBR->ScalarVisibilityOff();
m_IsoSurfaceMapperBR->Update();