OCC:第一个程序,对话框中显示一个BOX

2023-12-23 00:20

本文主要是介绍OCC:第一个程序,对话框中显示一个BOX,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. OCC库的获取

  1. 从github上获取 git@github.com:tpaviot/oce.git,自己编译
  2. 官网获取二进制包(获取下来的只有release 版本的,而且VS版本不一定适合自己)
  3. 官网源码,然后自己编译(稍微折腾点,建议按步骤1的方法,github上整理好的,用CMake直接编译,很方便)
  4. 本人编译好的,vs2013的win32及x64版本
    occ-vs2013-x64-debug-release
    occ-vs2013-win32-debug-release

2. MFC对话框程序,使用OCC显示BOX

  1. 头文件OCC相关代码
#include "V3d_Viewer.hxx"
#include "AIS_InteractiveContext.hxx"// COccDialogDemoDlg dialog
class COccDialogDemoDlg : public CDialogEx
{//其余代码,略//...
private:Handle(V3d_Viewer) m_pOccViewer;Handle(V3d_View) m_pOccView;Handle(AIS_InteractiveContext) m_pOccAISContext;
}
  1. Cpp文件OCC相关代码
BOOL COccDialogDemoDlg::OnInitDialog()
{CDialogEx::OnInitDialog();//其他代码,略//....try{//使用OpenGL来显示Handle(Aspect_DisplayConnection) aDisplayConnection;Handle(OpenGl_GraphicDriver) aGraphicDriver = new OpenGl_GraphicDriver(aDisplayConnection);//创建3D视图器TCollection_ExtendedString myViewerName("MyOccViewer");m_pOccViewer = new V3d_Viewer(aGraphicDriver, myViewerName.ToExtString());// set parameters for V3d_Viewer// defines default lights -// positional-light 0.3 0.0 0.0// directional-light V3d_XnegYposZpos// directional-light V3d_XnegYneg// ambient-light//设置默认灯光并开启灯光m_pOccViewer->SetDefaultLights();// activates all the lights defined in this viewerm_pOccViewer->SetLightOn();// set background color to blackm_pOccViewer->SetDefaultBackgroundColor(Quantity_NOC_BLACK);//创建3d视图Handle(WNT_Window) aWNTWindow = new WNT_Window(GetSafeHwnd());m_pOccView = m_pOccViewer->CreateView();m_pOccView->SetWindow(aWNTWindow);//创建交互上下文m_pOccAISContext = new AIS_InteractiveContext(m_pOccViewer);//显示一个boxTopoDS_Shape aShape = BRepPrimAPI_MakeBox(100, 200, 300);Handle(AIS_Shape) anAISShape = new AIS_Shape(aShape);m_pOccAISContext->Display(anAISShape);}catch (Standard_Failure const& anException){Standard_SStream aSStream;aSStream << "An exception was caught: " << anException.GetMessageString() << ends;CString aMsg(aSStream.str().c_str());AfxMessageBox(aMsg);}catch (...){AfxMessageBox(_T("unkonwn exception"));}return TRUE;  // return TRUE  unless you set the focus to a control
}void COccDialogDemoDlg::OnPaint()
{if (m_pOccView){m_pOccView->Redraw();}
}
  1. 依赖的occ库
TKPrimd.lib
TKV3dd.lib
TKerneld.lib
TKBRepd.lib
TKMathd.lib
TKOpenGld.lib
TKTopAlgod.lib
TKServiced.lib

3. 运行截图

在这里插入图片描述

4. 额外说明

因为OCC使用OpenGL显示用到了着色器,根据OCC抛出异常提示可知,需要指示OCC程序找到着色器相关文件,最简单的是设置环境变量CSF_ShadersDirectory或CASROOT,详细可参看代码,如下部分截图。
在这里插入图片描述

要成功运行以上程序,必须设置好任意一个环境变量,本地测试可以直接修改系统变量,本人的做法是用个批处理文件启动vs,在启动前设置好CSF_ShadersDirectory,后续通过vs运行的程序,就自动继承了次环境变量了,如下:

@echo off
set CSF_ShadersDirectory=E:\OCCTest\Third-Party\OCE-0.18\share\oce\src\Shaders
"D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" 

其中OCE-0.18\share\oce\src\Shaders为occ开发库中的目录
在这里插入图片描述

这篇关于OCC:第一个程序,对话框中显示一个BOX的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/526042

相关文章

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li