验证occ和vtk整合工作的demo
在编译occ通过过后,我需要验证occ是否能够正常结合vtk进行开发工作
使用CMake进行环境变量设置:
CMakeList.txt
- PROJECT (IGESReader)
- #VTK Part:
- FIND_PACKAGE(VTK)
- IF (VTK_FOUND)
- INCLUDE(${VTK_USE_FILE})
- ELSE(VTK_FOUND)
- MESSAGE(FATAL_ERROR
- "Cannot build without VTK. Please set VTK_DIR.")
- ENDIF (VTK_FOUND)
- #OpenCascade Part:
- INCLUDE_DIRECTORIES(
- C:\OpenCASCADE6.5.1\ros\inc
- )
- LINK_LIBRARIES(
- vtkCommon
- vtkGraphics
- vtkRendering
- vtkIO
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKIGES.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKernel.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKBRep.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKMath.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKGeomBase.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKGeomAlgo.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKG3d.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKG2d.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKTopAlgo.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKXSBase.lib
- C:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKMesh.lib
- )
- ADD_EXECUTABLE(IGESReader example.cxx)
添加一个example.cxx
- // sampleExample.cpp : Defines the entry point for the console application.
- //
- // OpenCascade library.
- #include <gp_Circ.hxx>
- #include <gp_Elips.hxx>
- #include <gp_Sphere.hxx>
- #include <Poly_Polygon3D.hxx>
- #include <Poly_Triangulation.hxx>
- #include <TopoDS_Edge.hxx>
- #include <TopoDS_Face.hxx>
- #include <BRep_Tool.hxx>
- #include <BRepMesh.hxx>
- #include <BRepBuilderAPI_MakeEdge.hxx>
- #include <BRepBuilderAPI_MakeFace.hxx>
- //vtk lib
- #include <vtkSmartPointer.h>
- #include <vtkPoints.h>
- #include <vtkPolyData.h>
- #include <vtkCellArray.h>
- #include <vtkPolyDataMapper.h>
- #include <vtkActor.h>
- #include <vtkRenderWindow.h>
- #include <vtkRenderer.h>
- #include <vtkRenderWindowInteractor.h>
- #include <vtkProperty.h>
- #include <vtkTriangle.h>
- /*
- * @breif Descret the shape: face.
- * For Face will be discreted to triangles; (BRepMesh_FastDiscret)
- * To get the triangles of the face, use BRep_Tool::Triangulation(Face, L);
- */
- void BuildMesh(vtkRenderer* render, const TopoDS_Face& face, double deflection = 0.1)
- {
- TopLoc_Location location;
- BRepMesh::Mesh(face, deflection);
- Handle_Poly_Triangulation triFace = BRep_Tool::Triangulation(face, location);
- Standard_Integer nTriangles = triFace->NbTriangles();
- gp_Pnt vertex1;
- gp_Pnt vertex2;
- gp_Pnt vertex3;
- Standard_Integer nVertexIndex1 = 0;
- Standard_Integer nVertexIndex2 = 0;
- Standard_Integer nVertexIndex3 = 0;
- TColgp_Array1OfPnt nodes(1, triFace->NbNodes());
- Poly_Array1OfTriangle triangles(1, triFace->NbTriangles());
- nodes = triFace->Nodes();
- triangles = triFace->Triangles();
- vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
- vtkSmartPointer<vtkCellArray> cells = vtkSmartPointer<vtkCellArray>::New();
- vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
- points->Allocate(nTriangles * 3);
- cells->Allocate(nTriangles);
- int id = 0;
- for (Standard_Integer i = 1; i <= nTriangles; i++)
- {
- Poly_Triangle aTriangle = triangles.Value(i);
- aTriangle.Get(nVertexIndex1, nVertexIndex2, nVertexIndex3);
- vertex1 = nodes.Value(nVertexIndex1).Transformed(location.Transformation());
- vertex2 = nodes.Value(nVertexIndex2).Transformed(location.Transformation());
- vertex3 = nodes.Value(nVertexIndex3).Transformed(location.Transformation());
- points->InsertNextPoint(vertex1.X(), vertex1.Y(), vertex1.Z());
- points->InsertNextPoint(vertex2.X(), vertex2.Y(), vertex2.Z());
- points->InsertNextPoint(vertex3.X(), vertex3.Y(), vertex3.Z());
- vtkSmartPointer<vtkTriangle> triangle = vtkSmartPointer<vtkTriangle>::New();
- triangle->GetPointIds()->SetId(0,id * 3);
- triangle->GetPointIds()->SetId(1,id * 3 + 1);
- triangle->GetPointIds()->SetId(2,id *3 + 2);
- // Add the triangle to a cell array
- cells->InsertNextCell(triangle);
- id++;
- }
- polyData->SetPoints(points);
- polyData->SetPolys(cells);
- vtkSmartPointer<vtkPolyDataMapper> sourceMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- sourceMapper->SetInput(polyData);
- vtkSmartPointer<vtkActor> sourceActor = vtkSmartPointer<vtkActor>::New();
- sourceActor->SetMapper(sourceMapper);
- sourceActor->GetProperty()->SetColor(1,0,0);
- render->AddActor(sourceActor);
- }
- void BuildScene(vtkRenderer* render)
- {
- gp_Ax2 axis;
- // 1. Test sphere face while deflection is default 0.1.
- axis.SetLocation(gp_Pnt(26.0, 0.0, 0.0));
- TopoDS_Face sphereFace1 = BRepBuilderAPI_MakeFace(gp_Sphere(axis, 8.0));
- BuildMesh(render, sphereFace1);
- // 2. Test sphere face while deflection is 2.0.
- axis.SetLocation(gp_Pnt(26.0, 18.0, 0.0));
- TopoDS_Face sphereFace2 = BRepBuilderAPI_MakeFace(gp_Sphere(axis, 8.0));
- BuildMesh(render,sphereFace2, 2.0);
- // 3. Test sphere face while deflection is 0.001.
- axis.SetLocation(gp_Pnt(26.0, -18.0, 0.0));
- TopoDS_Face sphereFace3 = BRepBuilderAPI_MakeFace(gp_Sphere(axis, 8.0));
- BuildMesh(render, sphereFace3, 0.001);
- }
- int main(int argc, char *argv[])
- {
- // Create a renderer, render window, and interactor
- vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
- vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
- renderWindow->AddRenderer(renderer);
- vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
- renderWindowInteractor->SetRenderWindow(renderWindow);
- //build mesh
- BuildScene(renderer);
- renderer->SetBackground(1,1,1);
- // Render and interact
- renderWindow->Render();
- renderWindowInteractor->Start();
- return 0;
- }
你可能在编译的过程当中,遇到缺少dll文件,这个说明 你并没有把相应的dll文件放在环境变量当中去。
运行结果:
验证occ和vtk整合工作的demo的更多相关文章
- C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
报错信息: 最近打开下载的 Excel,会报如下错误.(xls 格式不受影响) 解决方案: 下载代码(红色为新添代码) public void download() { string fileName ...
- asp.net NPOI导出xlsx格式文件,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
NPOI导出xlsx格式文件,会出现如下情况: 点击“是”: 导出代码如下: /// <summary> /// 将datatable数据写入excel并下载 /// </summa ...
- SpringBoot 2.x 整合ElasticSearch的demo
SpringBoot 2.x 整合ElasticSearch的demo 1.配置文件application.yml信息 # Tomcat server: tomcat: uri-encoding: U ...
- 阿里react整合库dva demo分析
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; color: #404040 } p. ...
- struts2和hibernate整合的小Demo
jar包下载地址 创建一个web项目. 导入jar包 配置web.xml <?xml version="1.0" encoding="UTF-8"?> ...
- springboot(整合多数据源demo,aop,定时任务,异步方法调用,以及获取properties中自定义的变量值)
有这么一个需求 每个部门,需要操作的数据库不同,A部门要将数据放test数据库,B 部门数据 要放在test1数据库 同一个项目 需要整合 多个数据源 上传个demo 方便自己以后回看!!!!!!!! ...
- SSM整合环境搭建demo
1.项目目录结构 2.项目中用的jar包 3.web.xml(其中主要配置spring与springmvc) <?xml version="1.0" encoding=&qu ...
- SpringMVC整合Freemarker(含Demo源码)(转)
转自:http://blog.csdn.net/sinat_27535209/article/details/61199452 整合过程如下: 1.新建一个maven web工程,使用maven依赖s ...
- Spring Boot整合Dubbo框架demo
Dubbo框架原理见之前的博文:http://www.cnblogs.com/umgsai/p/5836925.html 首先启动zookeeper Server端 Pom配置如下 <?xml ...
随机推荐
- kaggle 实战 (2): CNN 手写数字识别
文章目录 Tensorflow 官方示例 CNN 提交结果 Tensorflow 官方示例 import tensorflow as tf mnist = tf.keras.datasets.mnis ...
- zepto(mark)
Zepto的设计目的是提供 jQuery 的类似的API,但并不是100%覆盖 jQuery .Zepto设计的目的是有一个5-10k的通用库.下载并快速执行.有一个熟悉通用的API,所以你能把你主要 ...
- thinkphp 正则路由
正则路由也就是采用正则表达式定义路由的一种方式,依靠强大的正则表达式,能够定义更灵活的路由规则. 路由表达式支持的正则定义必须以“/”开头,否则就视为规则表达式.也就是说如果采用: '#^blog\/ ...
- elasticsearch+filebeat+kibana提取多行日志
filebeat的配置文件filebeat.yml以下三行去掉注释 multiline.pattern: ^\[ multiline.negate: true //false改为true multil ...
- BZOJ 1398: Vijos1382寻找主人 Necklace(最小表示法)
传送门 解题思路 最小表示法.首先对于判断是不是循环同构的串,直接扫一遍用哈希判即可.然后要输出字典序最小的就要用到最小表示法,首先可以把串复制一遍,这样的话就可以把串变成静态操作.如果对于两个位置\ ...
- Oracle Spatial导入shp数据
现在开始尝试用oracle spatial管理空间数据,刚学会shp数据的导入,总结如下.oracle11g安装后,已经有了oracle spatial组件,我们只需要用shp2sdo.exe工具,就 ...
- cookie的设置与销毁
<?php /* 2个参数设置cookie cookie随着浏览器的关闭,就失效了 ); /* 下面我们让cookir多活一会 3个参数来设置cookie,第3个参数指的就是cookie的声明周 ...
- 在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误
这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多 ...
- 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 ...
- STM32F103 Feature