基于OpenCASCADE自制三维建模软件(四)实现三维显示界面
文章目录
- 一、配置系统变量及QMake文件
- 二、创建界面
- 三、编译并运行项目
- 四、问题处理
- 项目仓库
一、配置系统变量及QMake文件
- 在系统环境变量中添加CASROOT变量,将OpenCASCADE库的目录路径填入变量值中
- 打开Qt Creator新建一个Qt QWidgets Application项目,选择QMainWindow界面
- 编辑 *.pro 文件,将OCC的包含路径、库路径以及具体的库加载到qmake项目中
#Windows系统下编译
win32 {#包含路径INCLUDEPATH += $$(CASROOT)/inc#确定编译器win32-msvc2010 {compiler=vc10}win32-msvc2012 {compiler=vc11}win32-msvc2013 {compiler=vc12}win32-msvc2015 {compiler=vc14}#确定64位或32位系统,增加库的路径!contains(QMAKE_TARGET.arch, x86_64) {CONFIG(debug, debug|release) { #x86_64 debugLIBS += -L$$(CASROOT)/win32/$$compiler/libd}else { #x86_64 releaseLIBS += -L$$(CASROOT)/win32/$$compiler/lib}}else {CONFIG(debug, debug|release) { #x86 debugLIBS += -L$$(CASROOT)/win64/$$compiler/libd}else { #x86 releaseLIBS += -L$$(CASROOT)/win64/$$compiler/lib}}
}
#添加OCC库
LIBS += -lTKernel -lTKMath -lTKService -lTKV3d -lTKOpenGl \-lTKBRep -lTKIGES -lTKSTL -lTKVRML -lTKSTEP -lTKSTEPAttr -lTKSTEP209 \-lTKSTEPBase -lTKGeomBase -lTKGeomAlgo -lTKG3d -lTKG2d \-lTKXSBase -lTKShHealing -lTKHLR -lTKTopAlgo -lTKMesh -lTKPrim \-lTKCDF -lTKBool -lTKBO -lTKFillet -lTKOffset \
二、创建界面
- 新建一个QWidget界面类
- 编辑头文件
添加OCC相关变量
private://!交互式上下文能够管理一个或多个查看器(viewer)中的图形行为和交互式对象的选择Handle(AIS_InteractiveContext) m_context;//!定义查看器(viewer)类型对象上的服务Handle(V3d_Viewer) m_viewer;//!创建一个视图Handle(V3d_View) m_view;//!创建3d接口定义图形驱动程序Handle(Graphic3d_GraphicDriver) m_graphic_driver;
添加覆写QWidget的事件
protected://!覆写绘图事件void paintEvent(QPaintEvent *);//!覆写窗口尺寸变化事件void resizeEvent(QResizeEvent *);//!返回窗口的绘制引擎QPaintEngine *paintEngine() const;
- 编写构造函数
C3DWidget::C3DWidget(QWidget *parent) : QWidget(parent)
{//若交互式上下文为空,则创建对象if (m_context.IsNull()){//此对象提供与X server的连接,在Windows和Mac OS中不起作用Handle(Aspect_DisplayConnection) m_display_donnection = new Aspect_DisplayConnection();//创建OpenGl图形驱动if (m_graphic_driver.IsNull()){m_graphic_driver = new OpenGl_GraphicDriver(m_display_donnection);}//获取QWidget的窗口系统标识符WId window_handle = (WId) winId();//创建Windows NT 窗口Handle(WNT_Window) wind = new WNT_Window((Aspect_Handle) window_handle);//创建3D查看器m_viewer = new V3d_Viewer(m_graphic_driver, Standard_ExtString("viewer3d"));//创建视图m_view = m_viewer->CreateView();m_view->SetWindow(wind);//打开窗口if (!wind->IsMapped()){wind->Map();}m_context = new AIS_InteractiveContext(m_viewer); //创建交互式上下文//配置查看器的光照m_viewer->SetDefaultLights();m_viewer->SetLightOn();//设置视图的背景颜色为灰色m_view->SetBackgroundColor(Quantity_NOC_GRAY60);m_view->MustBeResized();//显示直角坐标系,可以配置在窗口显示位置、文字颜色、大小、样式m_view->TriedronDisplay(Aspect_TOTP_LEFT_LOWER, Quantity_NOC_GOLD, 0.08, V3d_ZBUFFER);//设置显示模式m_context->SetDisplayMode(AIS_Shaded, Standard_True);}//配置QWidgetsetAttribute(Qt::WA_PaintOnScreen);setAttribute(Qt::WA_NoSystemBackground);setBackgroundRole( QPalette::NoRole ); //无背景setFocusPolicy( Qt::StrongFocus );setAttribute( Qt::WA_PaintOnScreen );setAttribute( Qt::WA_NoSystemBackground );setMouseTracking( true ); //开启鼠标位置追踪
}
- 编写覆写函数
void C3DWidget::paintEvent(QPaintEvent *)
{m_view->Redraw();
}void C3DWidget::resizeEvent(QResizeEvent *)
{if( !m_view.IsNull() ){m_view->MustBeResized();}
}QPaintEngine *C3DWidget::paintEngine() const
{return 0;
}
三、编译并运行项目
程序运行效果如下:
四、问题处理
在Qt编译成功后,执行运行的时候可能会显示不到界面,且显示:程序异常结束。\color{red}{程序异常结束。}程序异常结束。
原因是运行环境路径中找不到OCC及其第三方库的动态库文件(*.bin),解决的方法有:
- 修改系统环境变量 PATH ,添加动态库的路径
- 在Qt Creator中切换到项目模式(Ctrl+5),在构建环境中找到 PATH 变量并添加动态库路径到其中
项目仓库
https://github.com/Jelatine/JellyCAD
基于OpenCASCADE自制三维建模软件(四)实现三维显示界面相关推荐
- 基于OpenCASCADE自制三维建模软件(十一)使用ASSIMP导入导出
基于OpenCASCADE自制三维建模软件(十一)使用ASSIMP导入导出 2019年08月06日 23:54:20 Jelly_Lee2 阅读数 73 文章标签: 三维建模CADOpenCASCAD ...
- 基于OpenCASCADE自制三维建模软件(六)瓶子模型例程
文章目录 概述 预备知识 模型 规格 一.构建轮廓 定义支持点 定义几何图形 定义拓扑结构 完成轮廓 二.构建瓶身 拉伸轮廓 倒角 添加瓶颈 创造中空的实体 三.构建螺纹 创建表面 定义二维曲线 创建 ...
- 基于OpenCASCADE自制三维建模软件(三)搭建开发环境
文章目录 一.参考环境 二.安装Qt与VS2015 三.OCC第三方库介绍 1. Tcl 2. FreeType 2 3. FreeImage 4. FFmpeg 5. TBB 6. VTK 四.安装 ...
- 基于OpenCASCADE自制三维建模软件(五)鼠标模式
文章目录 一.选择导航模式 二.平移 三.缩放 四.旋转 五.实际效果 项目仓库 鼠标控制模式用于三维空间可视化导航,通过鼠标的按键及少数键盘按键的组合,可以实现对三维视图的平移.缩放.选择等操作. ...
- 基于OpenCASCADE自制三维建模软件(七)立方体、圆柱、球、圆锥、圆环
文章目录 一.立方体 1.构造 2.实例 二.圆柱 1.构造 2.实例 三.球 1.构造 2.实例 四.圆锥 1.构造 2.实例 五.圆环 1.构造 2.实例 项目仓库 Open CASCADE有现成 ...
- 三维建模软件的插件安装教程——3D Max
大家在使用三维建模软件3D Max的时候一定遇到过插件不知道如何安装的情况,今天我将把常用插件的类型和扩展名罗列如下方便大家安装收集也算抛砖引玉望各位高手查漏补缺不吝赐教. 3DSMAX的插件名后缀主 ...
- 【倾斜摄影】——三维建模软件ContextCapture 空三质量报告详细解读
[倾斜摄影]--三维建模软件ContextCapture 空三质量报告详细解读 文章目录 前言 第一部分:项目概述 第二部分:相机校准 第三部分 像片位置 第四部分 照片匹配 第五部分 调查 总结 前 ...
- AD导出3D模型的各种方法——AD转SW(MCAD插件一键生成),也适用于Fusion360、Inventor等三维建模软件
〇.所有方法的链接 1.AD转SW(贴图形式) 2.AD转SW(MCAD插件一键生成),也适用于Fusion360.Inventor等三维建模软件 3.AD转Keyshot(待写) 4.AD转PPT( ...
- 轻便易用的三维建模软件
用python写了个简易的三维建模软件Draft,抛砖引玉一下,小伙伴们可以在此基础上完善功能.采用wxPython库和OpenGL,由于OpenGL只支持Linux,所以软件的编写调试运行都是在Li ...
最新文章
- PAT(甲级)2019年春季考试 7-2 Anniversary
- 苹果连接电脑只能充电_苹果获得MagSafe式充电技术专利 可自动连接充电
- Kafka深入理解-2:Kafka的Log存储解析
- 【实验报告】四恶意代码实验
- linux vi快速删除文本内容
- java之IO流(commons-IO)
- Jprofiler监控工具(内存泄漏)
- 现代软件工程讲义 8 稳定阶段 (测试的计划和执行)
- 数据库之MySQL ERROR 1698 (28000) 错误:Access denied for user 'root'@'localhost' error【摘抄】...
- html中table边框属性
- Redhat linux 5 Server相关介绍
- application context not configured for this file于spring框架使用中的原因
- C#中splitContainer用法
- 雨林木风四大绝笔系统下载
- 将网页转换成PDF文件的N种方式
- MySQL Mac 终端环境变量配置
- MySQL_where条件查询
- python迷宫万花筒代码_Python实现PS滤镜的万花筒效果示例,python万花筒
- 联想服务器安装系统 F11,教你联想thinkpad系统还原f11一键恢复方法
- cadence软件用于高分屏笔记本时候显示字体模糊问题解决