资料
OpenCASCADE(OCC)_使用 VTK 显示(视频):https://www.bilibili.com/video/BV1BL411Y7Ee
编译 vtk 与配置(视频):https://www.youtube.com/watch?v=kZpr4ocnavA
编译 vtk(文本): https://mp.weixin.qq.com/s/RaQLRVKoAQKY2gf4lHmejw
编译 VTK
进入https://gitlab.kitware.com/vtk/vtk,下载 9.2.0 版本源代码,解压,得到vtk-v9.2.0
文件夹
进入https://cmake.org/download/,找到 Windows x64 Installer 进行下载,然后安装
打开 cmake, 源代码目录选择 vtk-v9.2.0 文件夹,再新建一个 vtk-v9.2.0-bulid 目录存放编译内容,点击 Configure,弹出一个框,选择 VS2019 和 x64,点击 Finish,开始编译
弹出一个框,新建 vtk-v9.2.0-install 目录配置给 cmake_install_prefix,然后依次点击 Configure—Generate—Open Project,进入 VS2019
在解决方案中找到 INSTALL—右键—生成,时间较长需等待
编译完成后在 vtk-v9.2.0-install 文件夹下有 bin/include/lib 三个文件夹
编译 OCCT
下载 occt 7.7.0 源码 opencascade-7.7.0.tgz :https://dev.opencascade.org/release,解压得到opencascade-7.7.0
文件夹
进入https://dev.opencascade.org/resources/download/3rd-party-components,
下载 Freeimage, vc14, x64
下载 Freetype, vc14, x64
下载 tcltk,vc12, x64
新建一个 OCCT-7.7.0 的文件夹,把 occt 的源码文件夹opencascade-7.7.0
拷贝进去
在 OCCT-7.7.0 文件夹下面新建opencascade-7.7.0-build
, opencascade-7.7.0-install
和products
三个文件夹,将解压后的 Freeimage,Freetype,tcltk 文件夹拷贝到products
文件夹内
1 2 3 4 5 6 7 8 D:\OCCT-7.7 .0 |____opencascade-7.7 .0 |____opencascade-7.7 .0 -build |____opencascade-7.7 .0 -install |____products |____freeimage-3.17 .0 -vc14-64 |____freetype-2.5 .5 -vc14-64 |____tcltk-86 -64
打开 cmake 软件,配置好 OCCT 源码目录与 build 目录,点击 Generate
出现一堆红色的内容,开始配置环境,按照之前放置的路径进行配置即可
点击 Configure 会弹出错误,再配置 VTK 的目录,再点击 Configure
弹出下面错误,解决方法是取消勾选 BUILD_MODULE_Draw
,再点击 Configure
1 2 3 4 VTK version (9.2 .0 ) CMake Error at CMakeLists.txt:858 (message): Could not find headers of used third-party products: 3 RDPARTY_TCL_INCLUDE_DIR 3 RDPARTY_TK_INCLUDE_DIR
点击 Generate—Open Project,进入 VS2019
在解决方案右键—生成解决方案—耐心等待【注意要 debug 还是 release】
在解决方案中找到 INSTALL—右键—生成
编译完成后,在 opencascade-7.7.0-install 文件夹就会有 occt 的 inc, bind, libd 文件夹。d 是因为 debug 模式
在 OCCT 项目中使用 VTK
打开 VS2019,新建一个 c++项目
右键—属性,开始配置 occ 与 vtk
改成 Dedug x64 平台
调试—环境—增加 occ 的 bin 目录,vtk 的 bin 目录和 freetype 的 bin 目录: PATH=%PATH%;D:\OCCT-7.7.0\opencascade-7.7.0-install\win64\vc14\bind;D:\vtk-v9.2.0-install\bin;D:\OCCT-7.7.0\products\freetype-2.5.5-vc14-64\bin;
C/C++
—常规—附加包含目录—增加 occ, vtk 头文件目录:D:\OCCT-7.7.0\opencascade-7.7.0-install\inc;D:\vtk-v9.2.0-install\include\vtk-9.2;
链接器—常规—增加 occ, vtk 的 lib 所在目录:D:\OCCT-7.7.0\opencascade-7.7.0-install\win64\vc14\libd;D:\vtk-v9.2.0-install\lib;
链接器—输入—附加依赖项目,增加 occ, vtk 的 lib 文件名称
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 DRAWEXE.lib ExpToCasExe.lib TKBin.lib TKBinL.lib TKBinTObj.lib TKBinXCAF.lib TKBO.lib TKBool.lib TKBRep.lib TKCAF.lib TKCDF.lib TKD3DHost.lib TKD3DHostTest.lib TKDCAF.lib TKDFBrowser.lib TKDraw.lib TKernel.lib TKExpress.lib TKFeat.lib TKFillet.lib TKG2d.lib TKG3d.lib TKGeomAlgo.lib TKGeomBase.lib TKHLR.lib TKIGES.lib TKIVtk.lib TKIVtkDraw.lib TKLCAF.lib TKMath.lib TKMesh.lib TKMeshVS.lib TKMessageModel.lib TKMessageView.lib TKOffset.lib TKOpenGl.lib TKOpenGles.lib TKOpenGlesTest.lib TKOpenGlTest.lib TKPrim.lib TKQADraw.lib TKRWMesh.lib TKService.lib TKShapeView.lib TKShHealing.lib TKStd.lib TKStdL.lib TKSTEP.lib TKSTEP209.lib TKSTEPAttr.lib TKSTEPBase.lib TKSTL.lib TKTInspector.lib TKTInspectorAPI.lib TKTObj.lib TKTObjDRAW.lib TKToolsDraw.lib TKTopAlgo.lib TKTopTest.lib TKTreeModel.lib TKV3d.lib TKVCAF.lib TKView.lib TKViewerTest.lib TKVInspector.lib TKVRML.lib TKXCAF.lib TKXDE.lib TKXDECascade.lib TKXDEDRAW.lib TKXDEIGES.lib TKXDESTEP.lib TKXMesh.lib TKXml.lib TKXmlL.lib TKXmlTObj.lib TKXmlXCAF.lib TKXSBase.lib TKXSDRAW.lib vtkInteractionStyle-9.2 d.lib vtkRenderingOpenGL2-9.2 d.lib vtkCommonCore-9.2 d.lib vtkRenderingCore-9.2 d.lib vtkCommonExecutionModel-9.2 d.lib vtksys-9.2 d.lib TKMath.lib TKV3d.lib TKIVtk.lib TKernel.lib TKTopAlgo.lib TKPrim.lib
测试代码main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 VTK_MODULE_INIT (vtkRenderingOpenGL2)VTK_MODULE_INIT (vtkInteractionStyle)int main () { BRepPrimAPI_MakeBox box (2 , 2 , 2 ); const TopoDS_Shape & ashape = box.Shape (); vtkNew<IVtkTools_ShapeDataSource> occSource; occSource->SetShape (new IVtkOCC_Shape (ashape)); vtkNew<vtkPolyDataMapper> mapper; mapper->SetInputConnection (occSource->GetOutputPort ()); vtkNew<vtkActor> actor; actor->SetMapper (mapper); vtkNew<vtkRenderWindow> renderWindow; vtkNew<vtkRenderer> render; renderWindow->AddRenderer (render); render->AddActor (actor); render->SetBackground (0.302 , 0.302 , 0.302 ); vtkNew<vtkRenderWindowInteractor> iren; vtkNew<vtkInteractorStyleTrackballCamera> istyle; iren->SetRenderWindow (renderWindow); iren->SetInteractorStyle (istyle); iren->Initialize (); iren->Start (); return 0 ; }
vtk 资料 书籍
《VTK User's Guide 》搜 VTK_Users_Guide_v11.pdf
《VTK 用户手册–中文翻译版》搜 VTK用户手册--中文翻译版.pdf
《VTK 图形图像开发进阶》搜 VTK图形图像开发进阶
《数据可视化技术》林勇 暂无 PDF