在编译occ通过过后,我需要验证occ是否能够正常结合vtk进行开发工作

使用CMake进行环境变量设置:

CMakeList.txt

  1. PROJECT (IGESReader)
  2.  
  3. #VTK Part:
  4. FIND_PACKAGE(VTK)
  5. IF (VTK_FOUND)
  6. INCLUDE(${VTK_USE_FILE})
  7. ELSE(VTK_FOUND)
  8. MESSAGE(FATAL_ERROR
  9. "Cannot build without VTK. Please set VTK_DIR.")
  10. ENDIF (VTK_FOUND)
  11.  
  12. #OpenCascade Part:
  13. INCLUDE_DIRECTORIES(
  14. C:\OpenCASCADE6.5.1\ros\inc
  15. )
  16.  
  17. LINK_LIBRARIES(
  18. vtkCommon
  19. vtkGraphics
  20. vtkRendering
  21. vtkIO
  22. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKIGES.lib
  23. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKernel.lib
  24. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKBRep.lib
  25. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKMath.lib
  26. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKGeomBase.lib
  27. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKGeomAlgo.lib
  28. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKG3d.lib
  29. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKG2d.lib
  30. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKTopAlgo.lib
  31. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKXSBase.lib
  32. C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKMesh.lib
  33. )
  34.  
  35. ADD_EXECUTABLE(IGESReader example.cxx)

添加一个example.cxx

  1. // sampleExample.cpp : Defines the entry point for the console application.
  2. //
  3. // OpenCascade library.
  4. #include <gp_Circ.hxx>
  5. #include <gp_Elips.hxx>
  6. #include <gp_Sphere.hxx>
  7.  
  8. #include <Poly_Polygon3D.hxx>
  9. #include <Poly_Triangulation.hxx>
  10.  
  11. #include <TopoDS_Edge.hxx>
  12. #include <TopoDS_Face.hxx>
  13.  
  14. #include <BRep_Tool.hxx>
  15. #include <BRepMesh.hxx>
  16. #include <BRepBuilderAPI_MakeEdge.hxx>
  17. #include <BRepBuilderAPI_MakeFace.hxx>
  18.  
  19. //vtk lib
  20. #include <vtkSmartPointer.h>
  21. #include <vtkPoints.h>
  22. #include <vtkPolyData.h>
  23. #include <vtkCellArray.h>
  24. #include <vtkPolyDataMapper.h>
  25. #include <vtkActor.h>
  26. #include <vtkRenderWindow.h>
  27. #include <vtkRenderer.h>
  28. #include <vtkRenderWindowInteractor.h>
  29. #include <vtkProperty.h>
  30. #include <vtkTriangle.h>
  31.  
  32. /*
  33. * @breif Descret the shape: face.
  34. * For Face will be discreted to triangles; (BRepMesh_FastDiscret)
  35. * To get the triangles of the face, use BRep_Tool::Triangulation(Face, L);
  36. */
  37. void BuildMesh(vtkRenderer* render, const TopoDS_Face& face, double deflection = 0.1)
  38. {
  39. TopLoc_Location location;
  40. BRepMesh::Mesh(face, deflection);
  41.  
  42. Handle_Poly_Triangulation triFace = BRep_Tool::Triangulation(face, location);
  43.  
  44. Standard_Integer nTriangles = triFace->NbTriangles();
  45.  
  46. gp_Pnt vertex1;
  47. gp_Pnt vertex2;
  48. gp_Pnt vertex3;
  49.  
  50. Standard_Integer nVertexIndex1 = 0;
  51. Standard_Integer nVertexIndex2 = 0;
  52. Standard_Integer nVertexIndex3 = 0;
  53.  
  54. TColgp_Array1OfPnt nodes(1, triFace->NbNodes());
  55. Poly_Array1OfTriangle triangles(1, triFace->NbTriangles());
  56.  
  57. nodes = triFace->Nodes();
  58. triangles = triFace->Triangles();
  59.  
  60. vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
  61. vtkSmartPointer<vtkCellArray> cells = vtkSmartPointer<vtkCellArray>::New();
  62. vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
  63. points->Allocate(nTriangles * 3);
  64. cells->Allocate(nTriangles);
  65.  
  66. int id = 0;
  67.  
  68. for (Standard_Integer i = 1; i <= nTriangles; i++)
  69. {
  70. Poly_Triangle aTriangle = triangles.Value(i);
  71.  
  72. aTriangle.Get(nVertexIndex1, nVertexIndex2, nVertexIndex3);
  73.  
  74. vertex1 = nodes.Value(nVertexIndex1).Transformed(location.Transformation());
  75. vertex2 = nodes.Value(nVertexIndex2).Transformed(location.Transformation());
  76. vertex3 = nodes.Value(nVertexIndex3).Transformed(location.Transformation());
  77.  
  78. points->InsertNextPoint(vertex1.X(), vertex1.Y(), vertex1.Z());
  79. points->InsertNextPoint(vertex2.X(), vertex2.Y(), vertex2.Z());
  80. points->InsertNextPoint(vertex3.X(), vertex3.Y(), vertex3.Z());
  81.  
  82. vtkSmartPointer<vtkTriangle> triangle = vtkSmartPointer<vtkTriangle>::New();
  83. triangle->GetPointIds()->SetId(0,id * 3);
  84. triangle->GetPointIds()->SetId(1,id * 3 + 1);
  85. triangle->GetPointIds()->SetId(2,id *3 + 2);
  86.  
  87. // Add the triangle to a cell array
  88. cells->InsertNextCell(triangle);
  89. id++;
  90. }
  91.  
  92. polyData->SetPoints(points);
  93. polyData->SetPolys(cells);
  94.  
  95. vtkSmartPointer<vtkPolyDataMapper> sourceMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
  96. sourceMapper->SetInput(polyData);
  97.  
  98. vtkSmartPointer<vtkActor> sourceActor = vtkSmartPointer<vtkActor>::New();
  99. sourceActor->SetMapper(sourceMapper);
  100. sourceActor->GetProperty()->SetColor(1,0,0);
  101.  
  102. render->AddActor(sourceActor);
  103.  
  104. }
  105.  
  106. void BuildScene(vtkRenderer* render)
  107. {
  108. gp_Ax2 axis;
  109.  
  110. // 1. Test sphere face while deflection is default 0.1.
  111. axis.SetLocation(gp_Pnt(26.0, 0.0, 0.0));
  112. TopoDS_Face sphereFace1 = BRepBuilderAPI_MakeFace(gp_Sphere(axis, 8.0));
  113. BuildMesh(render, sphereFace1);
  114.  
  115. // 2. Test sphere face while deflection is 2.0.
  116. axis.SetLocation(gp_Pnt(26.0, 18.0, 0.0));
  117. TopoDS_Face sphereFace2 = BRepBuilderAPI_MakeFace(gp_Sphere(axis, 8.0));
  118. BuildMesh(render,sphereFace2, 2.0);
  119.  
  120. // 3. Test sphere face while deflection is 0.001.
  121. axis.SetLocation(gp_Pnt(26.0, -18.0, 0.0));
  122. TopoDS_Face sphereFace3 = BRepBuilderAPI_MakeFace(gp_Sphere(axis, 8.0));
  123. BuildMesh(render, sphereFace3, 0.001);
  124. }
  125.  
  126. int main(int argc, char *argv[])
  127. {
  128. // Create a renderer, render window, and interactor
  129. vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
  130. vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
  131. renderWindow->AddRenderer(renderer);
  132. vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
  133. renderWindowInteractor->SetRenderWindow(renderWindow);
  134.  
  135. //build mesh
  136. BuildScene(renderer);
  137.  
  138. renderer->SetBackground(1,1,1);
  139.  
  140. // Render and interact
  141. renderWindow->Render();
  142. renderWindowInteractor->Start();
  143.  
  144. return 0;
  145. }

你可能在编译的过程当中,遇到缺少dll文件,这个说明 你并没有把相应的dll文件放在环境变量当中去。

运行结果:

验证occ和vtk整合工作的demo的更多相关文章

  1. C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

    报错信息: 最近打开下载的 Excel,会报如下错误.(xls 格式不受影响) 解决方案: 下载代码(红色为新添代码) public void download() { string fileName ...

  2. asp.net NPOI导出xlsx格式文件,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

    NPOI导出xlsx格式文件,会出现如下情况: 点击“是”: 导出代码如下: /// <summary> /// 将datatable数据写入excel并下载 /// </summa ...

  3. SpringBoot 2.x 整合ElasticSearch的demo

    SpringBoot 2.x 整合ElasticSearch的demo 1.配置文件application.yml信息 # Tomcat server: tomcat: uri-encoding: U ...

  4. 阿里react整合库dva demo分析

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; color: #404040 } p. ...

  5. struts2和hibernate整合的小Demo

    jar包下载地址 创建一个web项目. 导入jar包 配置web.xml <?xml version="1.0" encoding="UTF-8"?> ...

  6. springboot(整合多数据源demo,aop,定时任务,异步方法调用,以及获取properties中自定义的变量值)

    有这么一个需求 每个部门,需要操作的数据库不同,A部门要将数据放test数据库,B 部门数据 要放在test1数据库 同一个项目 需要整合 多个数据源 上传个demo 方便自己以后回看!!!!!!!! ...

  7. SSM整合环境搭建demo

    1.项目目录结构 2.项目中用的jar包 3.web.xml(其中主要配置spring与springmvc) <?xml version="1.0" encoding=&qu ...

  8. SpringMVC整合Freemarker(含Demo源码)(转)

    转自:http://blog.csdn.net/sinat_27535209/article/details/61199452 整合过程如下: 1.新建一个maven web工程,使用maven依赖s ...

  9. Spring Boot整合Dubbo框架demo

    Dubbo框架原理见之前的博文:http://www.cnblogs.com/umgsai/p/5836925.html 首先启动zookeeper Server端 Pom配置如下 <?xml ...

随机推荐

  1. kaggle 实战 (2): CNN 手写数字识别

    文章目录 Tensorflow 官方示例 CNN 提交结果 Tensorflow 官方示例 import tensorflow as tf mnist = tf.keras.datasets.mnis ...

  2. zepto(mark)

    Zepto的设计目的是提供 jQuery 的类似的API,但并不是100%覆盖 jQuery .Zepto设计的目的是有一个5-10k的通用库.下载并快速执行.有一个熟悉通用的API,所以你能把你主要 ...

  3. thinkphp 正则路由

    正则路由也就是采用正则表达式定义路由的一种方式,依靠强大的正则表达式,能够定义更灵活的路由规则. 路由表达式支持的正则定义必须以“/”开头,否则就视为规则表达式.也就是说如果采用: '#^blog\/ ...

  4. elasticsearch+filebeat+kibana提取多行日志

    filebeat的配置文件filebeat.yml以下三行去掉注释 multiline.pattern: ^\[ multiline.negate: true //false改为true multil ...

  5. BZOJ 1398: Vijos1382寻找主人 Necklace(最小表示法)

    传送门 解题思路 最小表示法.首先对于判断是不是循环同构的串,直接扫一遍用哈希判即可.然后要输出字典序最小的就要用到最小表示法,首先可以把串复制一遍,这样的话就可以把串变成静态操作.如果对于两个位置\ ...

  6. Oracle Spatial导入shp数据

    现在开始尝试用oracle spatial管理空间数据,刚学会shp数据的导入,总结如下.oracle11g安装后,已经有了oracle spatial组件,我们只需要用shp2sdo.exe工具,就 ...

  7. cookie的设置与销毁

    <?php /* 2个参数设置cookie cookie随着浏览器的关闭,就失效了 ); /* 下面我们让cookir多活一会 3个参数来设置cookie,第3个参数指的就是cookie的声明周 ...

  8. 在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误

    这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多 ...

  9. mfcs100d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)

    转自VC错误:http://www.vcerror.com/?p=55 问题描述: mfcs100d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 al ...

  10. STM32F103 Feature