• 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. }
  • 相关阅读:
    MongoDB应用:forEach方法实际应用
    高通8295中国首发!智舱再度上演「军备竞赛」,这次有何不同
    指令FTP/SFTP(有/无密码)连接、下载以及上传
    1.15.C++项目:仿muduo库实现并发服务器之HttpRequest和HttpResponse模块的设计
    Generalizable NeRF in ICCV‘23
    JDBC学习笔记(2)事务
    [架构之路-242]:目标系统 - 纵向分层 - 应用程序的类型与演进过程(单机应用程序、网络应用程序、分布式应用程序、云端应用程序、云原生应用程序)
    springboot项目整合swagger2
    ipv6过渡技术-IPv4 over IPv6隧道示例
    时间戳 太平洋夏令时间和本地时间相互转换及自定义夏令时
  • 原文地址:https://blog.csdn.net/mabing993/article/details/132943125