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
vtk 使用vtkClipPolyData 裁剪删除选中的矩形区域
最新推荐文章于 2024-04-14 23:48:50 发布