StromanStroman 2022-12-31 10:16 采纳率: 40.9%
浏览 60
已结题

无法使用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

  • 写回答

1条回答 默认 最新

  • xxxhugo5 2022-12-31 17:28
    关注

    您好,

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

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

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

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

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月8日
  • 修改了问题 12月31日
  • 创建了问题 12月31日