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();
clipper->SetValue(0.5);
vtk 使用vtkClipPolyData 裁剪删除选中的矩形区域
最新推荐文章于 2025-05-25 07:28:49 发布
这篇博客介绍了如何在VTK中通过继承vtkInteractorStyleRubberBandPick并重写OnLeftButtonUp方法,实现鼠标框选区域内polydata数据的裁剪和删除。博客展示了创建自定义交互样式类、读取数据、应用vtkClipPolyData进行裁剪的步骤,并给出了完整的代码示例。

最低0.47元/天 解锁文章
2995





