验证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;接近年初某机构…

组合算法问题

//转载自&#xff1a;http://blog.csdn.net/ywjun0919/article/details/11180685 // 和 http://www.2cto.com/kf/201301/181305.html /* 题目要求: 写一个程序&#xff0c;打印出以下的序列。 (a),(b),(c),(d),(e)........(z) (a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).…

《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; 且具有多种应用。 同时它能够产生大量价值流——更不用说电池价格比预期中下降得还要快…

install scikit-learn

>>pip install scikit-learn Error:sklearn/svm/libsvm.c:346:31: fatal error: numpy/arrayobject.h >>zypper in python-numpy-devel转载于:https://www.cnblogs.com/learnthenknow/p/scikit-learn.html

HTML CSS JS(一)

学习前端的几个网站&#xff1a; http://www.divcss5.com/ http://v2.bootcss.com/ 公司能连google&#xff0c;不知道没有翻墙的电脑能不能打开。 http://zh.html.net/ 个人感觉这个网站上前端知识的讲解 很有趣。 http://www.w3school.com.cn/

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

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

好用工具推荐

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

说明exit()函数作用的程序

// algo1-4.cpp 说明exit()函数作用的程序 #include"c1.h" int a(int i) { if(i1) { printf("退出程序的运行\n"); exit(1); } return i; } void main() { int i; printf("请输入i&#xff1a;"); scanf("%d",&i); printf("a…

给Sublime text2安装Zen Coding插件

转载自&#xff1a;http://m.blog.csdn.net/blog/u013867072/38714069 原文内容&#xff1a;//------------------------------------------------------------------------------------- 参考资料&#xff1a;http://drizzlep.diandian.com/SublimeText2 今天&#xff0c;刚安…

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

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

二进制逆序

要求计算二进制(16位)的逆序&#xff0c;如数12345用二进制表示为&#xff1a; 00110000 00111001 将它逆序&#xff0c;我们得到了一个新的二进制数&#xff1a; 10011100 00001100 最容易想到的方法就是依次交换两端的数据&#xff0c;从右向左遍历数字&#xff0c;当i位遇到…

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;互联网和脑科学交叉研究机构。未来智能实验室的主要工…

NHibernate常见错误

Oracle 下必须用 Sequence [PrimaryKey(PrimaryKeyType.Sequence,"ID")] 1、提示 ORA-02289: 序列不存在 -- Create sequence create sequence XXXminvalue 1maxvalue 999999999999999999999999999start with 1increment by 1cache 20; 在数据库建个同名字段 测试不通…

sublime text插件emmet的用法教程

转载自&#xff1a;http://blog.wpjam.com/m/emmet-grammar/ 使用 Emmet 生成 HTML 的语法详解 现在&#xff0c;打开你的 ST2 然后新建一个 HTML 文档&#xff0c;跟着文章&#xff0c;即时输入对应的指令然后亲自尝试一下&#xff01; 生成 HTML 文档初始结构 HTML 文档的初始…

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

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