验证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(vtkCommonvtkGraphicsvtkRenderingvtkIOC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKIGES.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKernel.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKBRep.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKMath.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKGeomBase.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKGeomAlgo.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKG3d.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKG2d.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKTopAlgo.libC:\OpenCASCADE6.5.1\ros\win32\vc8\libd\TKXSBase.libC:\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 arraycells->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 interactorvtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);//build meshBuildScene(renderer);renderer->SetBackground(1,1,1);// Render and interactrenderWindow->Render();renderWindowInteractor->Start();return 0;
}


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


运行结果:





转载于:https://www.cnblogs.com/skyhuangdan/p/5486780.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSAPP--浮点数

一.定点表示小数 缺点:表示不了很大的数 二.IEEE关于浮点数表示法 float32:符号位1位&#xff0c;阶码字段:8位,小数点为23位 float64:符号位1位&#xff0c;阶码字段:11位,小数点为52位 三.浮点数的数值类型 1.规格化值 2.非规格值 3.特殊值 而阶码的值决定其属于那一类…

干货|一文看懂美国共享出行3大领域8大头部玩家

来源&#xff1a;42号车库摘要&#xff1a;年初某机构统计的滴滴、Uber、Lyft、Grab和Go-jek全球五大共享出行服务平台的总估值1290亿美元。12月中旬&#xff0c;Uber、Lyft先后宣布即将于2019年IPO。其中&#xff0c;Uber的估值高达1000-1200亿美元&#xff0c;接近年初某机构…

《C++ Primer 4th》读书笔记 第7章-函数

原创文章&#xff0c;转载请注明出处&#xff1a;http://www.cnblogs.com/DayByDay/p/3912413.html 转载于:https://www.cnblogs.com/DayByDay/p/3912413.html

MSE与FC作用

一.MSE作用 在做super resolution的时候&#xff0c;如果用MSE&#xff0c;做出来的图片会非常的模糊&#xff0c;就是因为MSE是基于高斯分布假设&#xff0c;最后的结果会尽可能地靠近高斯分布最高的地方&#xff0c;使得结果不会太sharp。 二.FC作用 转载: 为什么回归问题用…

爆发的电池储能市场真相!年销量将超260亿美元

来源&#xff1a;智东西摘要&#xff1a;全面分析在集成领域以及其他形式的电池解决方案的开发和部署方面所取得的进展 。电池储能是非常灵活的&#xff0c;它可以进行快速部署&#xff0c; 且具有多种应用。 同时它能够产生大量价值流——更不用说电池价格比预期中下降得还要快…

刚刚!刘永坦院士和钱七虎院士荣获2018年度国家最高科技奖

来源&#xff1a; 青塔人才 摘要&#xff1a;今天上午&#xff0c;2018年度国家科学技术奖励大会在北京隆重召开。2018年国家科学技术奖共评选出278个项目和7名科技专家&#xff0c;合计285项&#xff08;人&#xff09;&#xff0c;国家最高科学技术奖颁予刘永坦院士和钱七虎院…

好用工具推荐

一.函数画图软件 图形计算器 二.流程图 Flowchart Maker & Online Diagram Software 可以画完就存在github里面 三.linux手册 Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 四.在线工具百宝箱 在线工具 - 你的工具箱

光子人工智能芯片助“中国芯”换道超车

来源&#xff1a;新京报摘要&#xff1a;算力是传统芯片1000倍&#xff0c;功耗仅为其百分之一&#xff1b;未来可应用于自动驾驶、智能机器人、无人机等领域。光子人工智能芯片。光子芯片的计算速度为电子芯片的1000倍&#xff0c;但功耗仅为其百分之一。算力是传统电子人工智…

sublime text3安装插件 emmet

转载自&#xff1a;http://9iphp.com/web/html/1260.html Sublime Text常用插件总结及Package Control安装方法 2015/01/09 | HTML/CSS,Linux | 8 条评论 | (2评) | 评分 Sublime Text 是一个代码编辑器&#xff0c;具有漂亮的用户界面和强大的功能&#xff0c;并且它还是…

指令与条件码

一.ALU:算数逻辑单元 ALU从寄存器中读取数据后&#xff0c;执行相应的运算&#xff0c;在返回目的寄存器rdx中&#xff0e;简单示例如下图 当然ALU除了执行算术和逻辑运算指令以外&#xff0c;还会根据运算结果去设置条件码寄存器&#xff0e; 二.条件码寄存器: 长度为单个比…

解析1G到5G技术与设备发展历程

来源&#xff1a;5G作者&#xff1a;张国宝&#xff1a;国家发改委原副主任、国家能源局原局长摘要&#xff1a;解析1G到5G技术与设备发展历程未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工…

CES 2019开胃菜竟然是芯片,英特尔 英伟达 高通 华为 AMD已经开打!

来源&#xff1a;网易智能1月8日消息&#xff0c;一年一度的CES即将在美国拉斯维加斯开幕&#xff0c;开幕前夕&#xff0c;各家厂商纷纷推出新品&#xff0c;其中最突出的&#xff0c;便是几家半导体厂商推出的最新款芯片&#xff0c;让CES 2019一开始就变得纷繁热闹。下面&am…

一文概述 2018 年深度学习 NLP 十大创新思路

来源&#xff1a;AI科技评论摘要&#xff1a;Sebastian Ruder 是一位 NLP 方向的博士生、研究科学家&#xff0c;最近&#xff0c;他基于十几篇经典论文盘点了 2018 年 NLP 领域十个令人激动并具有影响力的想法&#xff0c;并将文章发布在 Facebook 上。今年&#xff0c;我发现…

斯坦福重磅报告:2030年的人工智能与生活

来源&#xff1a;元浦说文摘要&#xff1a;本文节选自斯坦福大学「人工智能百年研究」的首份报告&#xff1a;《2030 年的人工智能与生活》&#xff0c;这篇报告是计划持续至少 100 年的研究系列中的第一篇。该报告描述了目前人工智能相关技术、法律以及道德上的挑战&#xff0…

万物智联时代——2018年AIOT产业蓝皮书正式发布

来源&#xff1a;物联网资本论摘要&#xff1a;纵观2018年AIOT行业&#xff0c;可以说大事不断&#xff0c;阿里巴巴正式宣布将全面进军物联网&#xff0c;“中兴事件”持续发酵也使得半导体行业受到广泛关注&#xff0c;NB-IoT模组价格进一步下调补贴后已进入20元大关等等。作…

2018微信年度数据报告:00后最爱表情捂脸哭 80后呲牙笑

来源 &#xff1a;腾讯科技摘要&#xff1a;腾讯科技讯 1月9日消息&#xff0c;在今日举行的2019微信公开课PRO上&#xff0c;微信发布了《2018微信年度数据报告》。报告显示&#xff0c;2018年&#xff0c;微信每个月有10.82亿用户保持活跃&#xff0c;每天有450亿次信息发送出…

行业变革的镜子:2018年融资最多的24家美国创业公司

来源&#xff1a;资本实验室据Crunchbase统计&#xff0c;2018年融资最多的24家美国创业公司融资总额达到103.66亿美元&#xff0c;累计融资超过232亿美元。这24家公司为我们提供了非常丰富的数据和视角&#xff0c;让我们得以观察到新技术与新商业模式对传统行业的颠覆正在加速…

一打在2019年亮相的迷人科技项目:飞行汽车、子弹头列车、登月、……

来源&#xff1a;IEEE电气电子工程师学会以色列要登月&#xff01;以色列的SpaceIL计划在2019年上半年向月球发射一个月球着陆器。该公司最初成立的目的是角逐Google的月球XPrize大奖&#xff0c;但比赛截止日期已过&#xff0c;奖金无人认领。SpaceIL的着陆器将搭一颗印尼电信…

深度学习在目标视觉检测中的应用进展与展望

作者&#xff1a;张慧,王坤峰,王飞跃来源&#xff1a;王飞跃科学网博客摘要&#xff1a;目标视觉检测是计算机视觉领域的一个重要问题&#xff0c;在视频监控、自主驾驶、人机交互等方面具有重要的研究意义和应用价值.近年来&#xff0c;深度学习在图像分类研究中取得了突破性进…

云计算与边缘计算协同发展的一些思考

来源&#xff1a;云计算开源产业联盟摘要&#xff1a;从边缘计算诞生开始&#xff0c;就一直有声音说边缘计算是云计算的“终结者”。但经过时间的验证&#xff0c;云计算和边缘计算的关系更加清晰&#xff1a;由于边缘计算解决了在边缘资源中云计算应用的应用问题&#xff0c;…