尊敬的各位你们好。
问题描述:无法使用OCC搭配VTK实现显示STP的功能。
OCC版本:7.6.0
VTK版本:9.2.0-rc2
编译器:VS2019社区版
语言:C++14
代码:
STEPControl_Reader reader;
reader.ReadFile(inputPath.c_str());
Standard_Integer NbRoots = reader.NbRootsForTransfer();
Standard_Integer NbTrans = reader.TransferRoots();
TopoDS_Shape result = reader.OneShape();
IVtkOCC_Shape::Handle aShapeImpl = new IVtkOCC_Shape(result);
vtkSmartPointer<IVtkTools_ShapeDataSource> DS = vtkSmartPointer<IVtkTools_ShapeDataSource>::New();
DS->SetShape(aShapeImpl);
DS->Update();
vtkSmartPointer<IVtkTools_DisplayModeFilter> filter = vtkSmartPointer<IVtkTools_DisplayModeFilter>::New();
filter->AddInputConnection(DS->GetOutputPort());
filter->SetDisplayMode(DM_Shading);
vtkSmartPointer<vtkPolyDataMapper> Mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
Mapper->SetInputConnection(filter->GetOutputPort());
vtkSmartPointer<vtkActor> Actor = vtkSmartPointer<vtkActor>::New();
Actor->SetMapper(Mapper);
return Actor;
细节:在执行到filter->AddInputConnection(DS->GetOutputPort());的时候发生了冲突,让我感到摸不到头脑,请问是咋回事?
您好,
在使用OCC搭配VTK时,如果出现错误,可能是代码有问题或是OCC与VTK版本不兼容所造成的。
关于您的代码,您在使用IVtkTools_DisplayModeFilter时需要确保您已经在头文件中包含了IVtkTools_DisplayModeFilter.h。另外,在使用vtkSmartPointer时,需要确保您已经在头文件中包含了vtkActor.h。
如果您已经确保了上述条件,建议您检查一下您的环境设置,确保您的编译器能够正确地找到OCC与VTK的库文件。
希望这些建议能够帮助您解决