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 viewer
		m_pOccViewer->SetLightOn();
		// set background color to black
		m_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);

		//显示一个box
		TopoDS_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开发库中的目录
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

带大家做一个,易上手的家常辣椒炒肉

先拿一块猪肉泡水解冻 然后 拿四个螺丝椒 螺丝椒切片 放入四个干辣椒 猪肉切片 三瓣左右蒜 如下图大小的一块姜 姜蒜切小块 将辣椒单独倒入锅中 翻炒出辣味 闻到辣味后将辣椒捞出 这里千万不要洗锅不然就把辣味洗掉了 直接起锅烧油 下入肉片翻炒 猪肉变色后 下入姜蒜…

UG阵列面、阵列集合特征和阵列特征的区别

阵列面 对面进行阵列&#xff0c;当实体中被切除特征的时候可以使用阵列面&#xff0c;当这个命令去阵列一个实体的时候&#xff0c;阵列的是一个片体&#xff0c;优点是速度快&#xff0c;缺点是功能较简单&#xff1b; 阵列几何特征 对实体进行阵列&#xff0c;可以一次性选…

Linux 一键部署二进制Gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

数据结构 | 东北大学厦门大学期末试卷查漏补缺

Prim变型算法&#xff08;不会&#xff09; 有人给出求解最小生成树的另外一种算法&#xff1a;将连通图中的边按其权值从大到小顺序逐个删除直至不可再删&#xff0c;删除要遵循的原则是&#xff1a;保证在删除该边后各个顶点之间应该是连通的。请问该算法是正确的吗&#xf…

ElasticSearch 的基础概念与入门使用

ElasticSearch 的基础概念与入门使用 前言 elasticsearch 是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大的功能&#xff0c;可以帮助我们从海量的数据中快速找到需要的内容。 例如&#xff1a; 在 Github 中搜索代码 在电商网站搜索商品 在 Google 搜索答案 …

过采样技术基本原理

本文介绍过采样技术基本原理。 过采样技术在ADC信号采集过程中使用还是比较多的。某些使用场景下&#xff0c;对采样速度要求并不是那么高&#xff08;或ADC采样速度过剩&#xff09;&#xff0c;但是想要获取较高的分辨率&#xff0c;就会用到这种技术&#xff0c;如针对温度…

设计模式:循序渐进走入工厂模式

文章目录 前言一、引入二、简单工厂模式1.实现2.优缺点3.扩展 三、工厂方法模式1.实现2.优缺点 四、抽象工厂模式1.实现2.优缺点3.使用场景 五、模式扩展六、JDK源码解析总结 前言 软件设计模式之工厂模式。 一、引入 需求&#xff1a;设计一个咖啡店点餐系统。 设计一个咖啡类…

在MongoDB中使用数组字段和子文档字段进行索引

本文主要介绍在MongoDB使用数组字段和子文档字段进行索引。 目录 MongoDB的高级索引一、索引数组字段二、索引子文档字段 MongoDB的高级索引 MongoDB是一个面向文档的NoSQL数据库&#xff0c;它提供了丰富的索引功能来加快查询性能。除了常规的单字段索引之外&#xff0c;Mong…

只更新软件,座椅为何能获得加热功能?——一文读懂OTA

2020年&#xff0c;特斯拉发布过一次OTA更新&#xff0c;车主可以通过这次系统更新获得座椅加热功能。当时&#xff0c;这则新闻震惊了车圈和所有车主&#xff0c;彼时的大家还没有把汽车当作可以“升级”的智能设备。 如今3年过去了&#xff0c;车主对各家车企的OTA升级早已见…

华为OD机试真题-园区参观路径-2023年OD统一考试(C卷)

题目描述:园区某部门举办了Family Day,邀请员工及其家属参加;将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角;家属参观园区时,只能向右和向下园区前进;求从起始园区到终点园区会有多少条不同的参观路径; 输入描述:第一行为园区长和宽;后面每一行…

【ITK库学习】使用itk库进行图像配准:内插器(插值)

目录 1、itkNearestNeighborInterpolateImageFunction 最近点插值2、itkLinearInterpolateImageFunction 线性插值3、itkBSplineInterpolateImageFunction B样条插值4、itkWindowedSincInterpolateImageFunction 窗口化Sinc插值5、itkRayCastInterpolateImageFunction 投射插值…

充电桩MOS如何选型

• 充电桩是大功率 AC-DC 转换电源&#xff0c;用于给新能源电动汽车快速充电。 • 目前非 800V系统充电桩采用三相维也纳整流 LLC 电路&#xff0c;其中 PFC 整流可以采用二 极管&#xff0c;PFC 升压可以采用650V IGBT 或者 SJ MOSFET&#xff0c; LLC 采用 650V SJ MOSFET。…

Megatron模型并行研究

Megatron模型并行研究 1. 技术调研 a. Megatron-LM Megatron-LM针对的是特别大的语言模型&#xff0c;使用的是模型并行的训练方式。但和普通的模型并行不同&#xff0c;他采用的其实是张量并行的形式&#xff0c;具体来说就是将一个层切开放到不同的GPU上&#xff0c;属于层…

阿里云赵大川:弹性计算推理解决方案拯救 AIGC 算力危机

云布道师 本篇文章围绕弹性计算推理解决方案 DeepGPU 实例如何支持 Stable Diffusion 文生图推理、Stable Diffusion 推理演示示例等相关话题展开。 赵大川 阿里云弹性计算高级技术专家 GPU 云服务器推理解决方案的提出背景 随着 AIGC 时代的到来&#xff0c;两个重要应用应…

element-table表格中插入颜色块显示数据状态

dom部分&#xff1a; <el-table-column label"是否异常"><template slot-scope"scope"><div class"dcs_sf_red" v-if"scope.row.sfyc 0"></div><div class"dcs_sf_green" v-if"scope.row…

CAS机制

Java中提供了很多原子操作类来保证共享变量操作的原子性。这些原子操作的底层原理都是使用了CAS机制。在使用一门技术之前&#xff0c;了解这个技术的底层原理是非常重要的&#xff0c;所以本篇文章就先来讲讲什么是CAS机制&#xff0c;CAS机制存在的一些问题以及在Java中怎么使…

分子生成工具 - ResGen 评测

ResGen 模型是浙江大学药学院侯廷军老师课题组2023年发表在nature machine intelligence期刊上文章Nature Machine Intelligence | Volume 5 | September 2023 | 1020–1030&#xff0c;题目为&#xff1a;《ResGen is a pocket-aware 3D molecular generation model based on …

利用老毛桃、ultraiso软碟通制作启动U盘装系统 以及硬盘安装系统

目录 一. 老毛桃制作winPE镜像 1.1 准备工作 1.2 启动U盘制作步骤 1.3 启动U盘装系统 二. 使用ultraiso软碟通制作启动U盘 2.1 启动U盘制作步骤 2.2 启动U盘装系统 三. 硬盘安装系统 3.1 硬盘镜像制作步骤 3.2 硬盘镜像装系统 思维导图 一. 老毛桃制作winPE镜像 …

网工内推 | 华晨宝马、金士顿,最高16薪招网工,NP以上优先

01 华晨宝马汽车有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1&#xff0c; 参与公司数字化建设&#xff0c;负责厂区生产区域和办公区域的网络规划、建设和优化&#xff0c;包括有线网络和无线网络&#xff1b; 2&#xff0c; 提供公司数据中心架构规划&a…

<蓝桥杯软件赛>零基础备赛20周--第11周--贪心

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上答疑&#x…