Определение центра VTKPolyDataMapper - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть приложение, которое импортирует файл 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

Z: 0

Я хотел бы установить "Y" на cero, но я не знаю, как это сделать, поскольку атрибут "center" класса защищен.

1 Ответ

0 голосов
/ 15 февраля 2019
vtkAxesActor *axes = vtkAxesActor::New();
vtkOrientationMarkerWidget *widget = vtkOrientationMarkerWidget::New();
widget->SetDefaultRenderer(renderer);
widget->SetOrientationMarker(axes);
widget->SetInteractor(ren);
widget->EnabledOn();

Если вы добавите такой код, вы увидите ось координат в левом нижнем углу.

...