• OpenCascade & VTK STEP/IGES文件读取显示


    OpenCascade & VTK STEP/IGES文件读取显示,OpenCascade读取转成STL,VTK显示STL。

    Download - Open CASCADE Technology
    https://dev.opencascade.org/release

    下载exe并安装,可以把source下载下来学习,官网速度慢,可到网盘下载

    链接:https://pan.baidu.com/s/1_ARH9jRMPxO_GWNWXT64fw 
    提取码:zyes

    安装完成后,把除了qt和vtk的文件夹的bin都加到环境变量,在不同的电脑有可能openvr没被自动安装,需要下载然后win64的bin加环境变量

    GitHub - ValveSoftware/openvr: OpenVR SDK
    https://github.com/ValveSoftware/openvr

    pro添加

    INCLUDEPATH += C:/OpenCASCADE-7.7.0-vc14-64/opencascade-7.7.0/inc
    LIBS += C:/OpenCASCADE-7.7.0-vc14-64/opencascade-7.7.0/win64/vc14/lib/*.lib

    基于OCC,将IGES模型文件转换为STL,进而在VTK中显示。网上别的一般都是错的。-CSDN博客
    https://blog.csdn.net/hbwhzc/article/details/131571397

    GitHub - Jelatine/JellyCAD: The simple CAD software which is based on OCC.
    https://github.com/Jelatine/JellyCAD

    Open Cascade Data Exchange --- STL - eryar - C++博客
    http://www.cppblog.com/eryar/archive/2013/05/01/199882.aspx

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #define vtkNewMember(Var, Type) \
    11. if (Var) \
    12. { \
    13. Var->Delete(); \
    14. } \
    15. Var = Type::New();
    16. void MainWindow::on_pushButton_stp_clicked()
    17. {
    18. QString file = QFileDialog::getOpenFileName(this, QStringLiteral("打开IGES/STEP文件"), ".", "*.step;; *.iges");
    19. if (!file.isEmpty())
    20. {
    21. TopoDS_Shape shape;
    22. if (file.endsWith("step"))
    23. {
    24. STEPControl_Reader reader;
    25. IFSelect_ReturnStatus stat = reader.ReadFile(file.toUtf8().data());
    26. if (stat != IFSelect_RetDone)
    27. {
    28. return;
    29. }
    30. reader.TransferRoots();
    31. shape = reader.OneShape();
    32. }
    33. else if (file.endsWith("iges"))
    34. {
    35. IGESControl_Reader reader;
    36. reader.ReadFile(file.toUtf8().data());
    37. reader.TransferRoots();
    38. shape = reader.OneShape();
    39. }
    40. StlAPI_Writer writer;
    41. const Standard_Real deflection = 0.1;
    42. BRepMesh_IncrementalMesh(shape,deflection,Standard_True);
    43. Standard_Boolean ret = writer.Write(shape, "output.stl");
    44. if (!ret)
    45. {
    46. return;
    47. }
    48. vtkNewMember(mSTPSTLReader, vtkSTLReader);
    49. mSTPSTLReader->SetFileName("output.stl");
    50. mSTPSTLReader->Update();
    51. vtkNewMember(mSTPSTLMapper, vtkPolyDataMapper);
    52. mSTPSTLMapper->SetInputData(mSTPSTLReader->GetOutput());
    53. if (mSTPSTLRenderer && mSTPSTLActor)
    54. {
    55. mSTPSTLRenderer->RemoveActor(mSTPSTLActor);
    56. ui->widget_stp->GetRenderWindow()->RemoveRenderer(mSTPSTLRenderer);
    57. }
    58. vtkNewMember(mSTPSTLActor, vtkActor);
    59. mSTPSTLActor->SetMapper(mSTPSTLMapper);
    60. vtkNewMember(mSTPSTLRenderer, vtkRenderer);
    61. mSTPSTLRenderer->AddActor(mSTPSTLActor);
    62. mSTPSTLRenderer->SetBackground(0.1, 0.2, 0.3);
    63. ui->widget_stp->GetRenderWindow()->AddRenderer(mSTPSTLRenderer);
    64. ui->widget_stp->GetRenderWindow()->Render();
    65. }
    66. }
  • 相关阅读:
    【Python黑科技】图片太大不能上传?三种压缩图片大小的方法(代码注释详细)
    TensorRT--学习笔记
    元宇宙:下一代互联网的“美丽新世界”
    Android Studio入门——页面跳转
    AI智能检测识别平台EasyCVR出现卡顿及反应慢的原因分析以及解决方法
    《大数据分析技术》课程设计
    如何用神经网络预测数据,人工神经网络分析方法
    UI自动化测试框架设计(Selenium)
    Eclipse安装sts插件(eclipse 内置应用市场无法搜索到sts时)
    Hadoop上传文件到hdfs中
  • 原文地址:https://blog.csdn.net/mabing993/article/details/132943125