在编译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

验证occ和vtk整合工作的demo相关推荐

  1. 【OCC学习3】OCC与VTK整合

    OCC只是几何内核,显示的话还需整合其他组件.今天介绍与VTK整合.本人是OCC.VTK初学者,代码部分也没整明白,主要介绍Visual Studio配置. 1. 本文采用的工具版本: OCC 7.6 ...

  2. php ci框架 模板引擎,详解CodeIgniter框架实现的整合Smarty引擎DEMO

    CodeIgniter框架实现的整合Smarty引擎DEMO示例 本文实例讲述了CodeIgniter框架实现的整合Smarty引擎.分享给大家供大家参考,具体如下: Smarty的模板机制很强大,一 ...

  3. 使用poi导出excel报错-打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

    使用poi导出excel报错-打开文件报"Excel 已完成文件级验证和修复.此工作簿的某些部分可能已被修复或丢弃" 1.原本正常使用的Excel导出突然下载文件报错 2.定位时发 ...

  4. SpringAMQP整合RabbitMQ-五种工作模式Demo

    文章目录 一.MQ基本概念 二.RabbitMQ 三.Docker部署RabbitMQ 四.SpringAMQP 五.RabbitMQ工作模式 1.Basic Queue 简单模式 2.Work qu ...

  5. java ntlm解密_java – HttpClient 4.1.1在使用NTLM进行身份验证时返回401,浏览器工作正常...

    我正在尝试使用Apache / Jakarta HttpClient 4.1.1使用给定的凭据连接到任意网页.为了测试这一点,我在运行的dev机器上安装了最少的IIS 7.5,其中一次只有一种身份验证 ...

  6. java activemq demo_Spring与ActiveMQ的整合的完整demo

    [实例简介] 此demo基于Spring+JMS+ActiveMQ+Tomcat,通过注解实现的完整实例,包含jar包 [实例截图] [核心代码] ActiveMQSpringDemo └── Act ...

  7. Nginx实现负载均衡(整合SpringBoot小demo)

    目录 1.前言 2.什么是负载均衡 3.准备工作 3.1 关于Mac系统安装Nginx 3.2 测试项目说明 4.Nginx负载均衡的集中方式介绍 4.1 轮询 4.2 权重 4.3 iphash 4 ...

  8. golang 工作池demo

    package mainimport ("fmt""time" )//创建任务类型 type Task struct {f func() error }//执行 ...

  9. Springboot + Mybatis整合的小demo,火车订票系统

    Springboot +Mybatis 的一个订票系统 这学期开了一门软件测试课程,需要做一个系统用于软件测试的学习,就使用目前JavaEE开发中比较火的SpringBoot + Mybatis做了一 ...

最新文章

  1. 不是我放弃AI,是AI放弃了我!!
  2. c# 大数据量比较时-方案
  3. oracle没有groupby,oraclegroupby之后还可以groupby么
  4. c语言的使用比例远远高于python语言对吗_Python和C语言的语法有什么不同?
  5. php学习笔记细节部分。
  6. jquery.ajax之beforeSend方法使用介绍
  7. attiny13a程序实例_关于ATtiny13A的一段程序
  8. chainmaker操作笔记
  9. MySQL8.0下载及安装教程
  10. Elsevier旗下期刊利用latex模板撰写论文记录
  11. 2022-08-19 mysql/stonedb-索引优化专利交底书-改进点
  12. 计算机内存不足16g内存,高手亲自教你win10 16g内存显示内存不足的修复要领
  13. 关于Python、R、VBA、SAS的生成批量变量名与动态变量引用的问题
  14. 微博视频代发(流程b)
  15. pyMuPDF How To
  16. 对话 CTO | 听掌门教育 CTO 李海坚讲教育公平背后的技术价值
  17. 【BZOJ2565】最长双回文串 Manacher
  18. Error1819(HY000):Your password does not satisfy the current policy requirements
  19. 秋春招总结之MySQL
  20. python io

热门文章

  1. concurrently同时开启多个监听服务
  2. 一、PHP框架Laravel——入门和安装
  3. LeetCode 1816. 截断句子
  4. LeetCode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?(前缀和)
  5. LintCode MySQL 1928. 网课上课情况分析 I
  6. LeetCode 1652. 拆炸弹(前缀和)
  7. LeetCode 第 34 场双周赛(385/2842,前13.5%)
  8. LeetCode 1389. 按既定顺序创建目标数组
  9. 剑指Offer - 面试题10- I. 斐波那契数列
  10. Android全局窗口模糊,javascript – 窗口焦点和模糊事件在Android浏览器上无法正常工作...