class InteractorStyle : public vtkInteractorStyleRubberBandPick //重载vtkInteractorStyleRubberBandPick
{
public:
static InteractorStyle* New();
vtkTypeMacro(InteractorStyle, vtkInteractorStyleRubberBandPick);
InteractorStyle()
{
selectedMapper = vtkSmartPointer<vtkDataSetMapper>::New();
selectedActor = vtkSmartPointer<vtkActor>::New();
renderer = vtkSmartPointer<vtkRenderer>::New();
}
virtual void OnLeftButtonUp()//重写左键按下消息
{
// Forward events
vtkInteractorStyleRubberBandPick::OnLeftButtonUp();
vtkPlanes* frustum = static_cast<vtkAreaPicker*>(this->GetInteractor()->GetPicker())->GetFrustum();//获得鼠标框选矩形
vtkClipPolyData *clipper = vtkClipPolyData::New();//裁剪polydata
clipper->SetInputData(this->Data);
clipper->SetClipFunction(frustum);//!!!!很重要的一步,添加自定义隐函数
clipper->GenerateClipScalarsOn();
clipper->GenerateClippedOutputOn();
c