Opencascade+Qt+C++三维图像建模窗体点线面拾取igs/iges/stp/step

本文主要是介绍Opencascade+Qt+C++三维图像建模窗体点线面拾取igs/iges/stp/step,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

程序示例精选
Opencascade+Qt+C++三维图像建模窗体点线面拾取igs/iges/stp/step
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《Opencascade+Qt+C++三维图像建模窗体点线面拾取igs/iges/stp/step》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


运行结果

在这里插入图片描述


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. VS2019, Qt
       2. C++

二、使用步骤

代码如下(示例):
#include <BRep_Builder.hxx>
#include <StepData_StepModel.hxx>
#include <STEPControl_Reader.hxx>
#include <TCollection_AsciiString.hxx>
#include <XSControl_Controller.hxx>
#include <Interface_Static.hxx>
#include <Transfer_TransientProcess.hxx>
#include <gp_Circ.hxx>
#include <gp_Elips.hxx>
#include <gp_Sphere.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_HSequenceOfShape.hxx>
#include <IGESControl_Controller.hxx>
#include <IGESControl_Writer.hxx>
#include <IGESControl_Reader.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);occView = new occview(this);setCentralWidget(occView);InitMenu();
}
void MainWindow::InitMenu()
{QMenuBar* menuBar = ui.menuBar;QMenu* menuCreate = menuBar->addMenu(tr("&Create"));menuCreate->addAction(tr("&Box"));menuCreate->addAction(tr("&Sphere"));connect(menuBar, SIGNAL(triggered(QAction*)), this, SLOT(trigerMenu(QAction*)));
}TopoDS_Shape MainWindow::createBox()
{return BRepPrimAPI_MakeBox(10.0, 10.0, 10.0).Shape();
}
TopoDS_Shape MainWindow::createSphere()
{return BRepPrimAPI_MakeSphere(10.0).Shape();
}
void MainWindow::trigerMenu(QAction* action)
{if (action->text() == "&Box"){TopoDS_Shape box = createBox();Handle(AIS_Shape) aisBox = new AIS_Shape(box);occView->GetInteractiveContext()->Display(aisBox, Standard_True);occView->GetView()->FitAll();}else if (action->text() == "&Sphere"){TopoDS_Shape sphere = createSphere();Handle(AIS_Shape) aisSphere = new AIS_Shape(sphere);occView->GetInteractiveContext()->Display(aisSphere, Standard_True);occView->GetView()->FitAll();}else{QMessageBox::warning(this, tr("Warning"), action->text());}
}occview::occview(QWidget *parent): QWidget(parent)
{ui.setupUi(this);if (m_context.IsNull()) {Handle(Aspect_DisplayConnection) m_display_connection = new Aspect_DisplayConnection();if (m_graphic_driver.IsNull()){m_graphic_driver = new OpenGl_GraphicDriver(m_display_connection);}WId window_handle = (WId)winId();Handle(WNT_Window) wind = new WNT_Window((Aspect_Handle)window_handle);m_viewer = new V3d_Viewer(m_graphic_driver);m_view = m_viewer->CreateView();m_view->SetWindow(wind);if (!wind->IsMapped()) {wind->Map();}m_context = new AIS_InteractiveContext(m_viewer);
}
运行结果

在这里插入图片描述
在这里插入图片描述

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作
5)云服务器申请
6)网站制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页:https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别:https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计:https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统:https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统:https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享:https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别:https://blog.csdn.net/alicema1111/article/details/133434445

这篇关于Opencascade+Qt+C++三维图像建模窗体点线面拾取igs/iges/stp/step的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构