定义VTKPolyDataMapper的中心

问题描述 投票:0回答:1

我有一个导入STEP文件的应用程序,它将几何转换为OpenCascade对象。然后,通过VTK查看器可视化此对象。

这是代码(C ++,QT):

导入STEP文件并将其转换为OpenCascade对象

QString pathFileName = "component.step" ;
STEPControl_Reader reader;
reader.ReadFile(pathFileName.toStdString().c_str());
reader.NbRootsForTransfer();
reader.TransferRoots();
TopoDS_Shape shape;
shape = reader.OneShape();
BRepTools::Clean(shape);

使用VTK可视化形状

IVtkOCC_Shape::Handle shapeImpl = new IVtkOCC_Shape(shape);
vtkSmartPointer<IVtkTools_ShapeDataSource> DS = vtkSmartPointer<IVtkTools_ShapeDataSource>::New();
DS->SetShape(shapeImpl);

vtkSmartPointer<vtkPolyDataMapper> Mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
Mapper->SetInputConnection(DS->GetOutputPort());
vtkSmartPointer<vtkActor> Actor = vtkSmartPointer<vtkActor>::New();
Actor->SetMapper(Mapper);

vtkSmartPointer<vtkRenderer> Renderer = vtkSmartPointer<vtkRenderer>::New();
Renderer->AddActor(Actor);

结果如下所示:

enter image description here

不错,坐标轴相当远,我们可以看看是否可以放大:

enter image description here

如果我打印映射器的中心,我会得到以下值:

X:0

Y:172,333

来自:0

我想将“Y”设置为零,但我不知道如何做到这一点,因为类的属性“center”受到保护。

c++ qt vtk opencascade
1个回答
1
投票
vtkAxesActor *axes = vtkAxesActor::New();
vtkOrientationMarkerWidget *widget = vtkOrientationMarkerWidget::New();
widget->SetDefaultRenderer(renderer);
widget->SetOrientationMarker(axes);
widget->SetInteractor(ren);
widget->EnabledOn();

如果添加这样的代码,则可以在左下角看到坐标轴。

© www.soinside.com 2019 - 2024. All rights reserved.