定义 VTKPolyDataMapper 的中心
Defining the center of a VTKPolyDataMapper
我有一个导入 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);
结果显示在这里:
还不错,就是坐标轴有点远,放大一看:
如果我打印映射器的中心,我会得到这些值:
X: 0
Y: 172.333
Z: 0
我想将“Y”设置为 cero,但我不知道该怎么做,因为 class 的属性“center”受到保护。
vtkAxesActor *axes = vtkAxesActor::New();
vtkOrientationMarkerWidget *widget = vtkOrientationMarkerWidget::New();
widget->SetDefaultRenderer(renderer);
widget->SetOrientationMarker(axes);
widget->SetInteractor(ren);
widget->EnabledOn();
如果你添加这样的代码,你可以在左下角看到坐标轴。
我有一个导入 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);
结果显示在这里:
还不错,就是坐标轴有点远,放大一看:
如果我打印映射器的中心,我会得到这些值:
X: 0
Y: 172.333
Z: 0
我想将“Y”设置为 cero,但我不知道该怎么做,因为 class 的属性“center”受到保护。
vtkAxesActor *axes = vtkAxesActor::New();
vtkOrientationMarkerWidget *widget = vtkOrientationMarkerWidget::New();
widget->SetDefaultRenderer(renderer);
widget->SetOrientationMarker(axes);
widget->SetInteractor(ren);
widget->EnabledOn();
如果你添加这样的代码,你可以在左下角看到坐标轴。