无法使用OCC搭配VTK实现显示STP?

尊敬的各位你们好。
问题描述:无法使用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());的时候发生了冲突,让我感到摸不到头脑,请问是咋回事?

img

您好,

在使用OCC搭配VTK时,如果出现错误,可能是代码有问题或是OCC与VTK版本不兼容所造成的。

关于您的代码,您在使用IVtkTools_DisplayModeFilter时需要确保您已经在头文件中包含了IVtkTools_DisplayModeFilter.h。另外,在使用vtkSmartPointer时,需要确保您已经在头文件中包含了vtkActor.h。

如果您已经确保了上述条件,建议您检查一下您的环境设置,确保您的编译器能够正确地找到OCC与VTK的库文件。

希望这些建议能够帮助您解决