Open CASCADE学习|视图

目录

Mainwin.h

Mainwin.cpp


Mainwin.h

#pragma once#include <QtWidgets/QMainWindow>#include "Displaywin.h"#include "OCC.h"class Mainwin : public QMainWindow{  Q_OBJECTpublic:  Mainwin(QWidget* parent = nullptr);  ~Mainwin();private:  Mainwin* Mui;  Displaywin* Dui;private:  QMenu* fliemenuBar;  QAction* openstepfileaction;  QMenu* drawmenuBar;  QAction* drawboxaction;  QAction* drawbottleaction;  QAction* drawhelixaction;  QMenu* viewenuBar;  QAction* viewfrontaction;  QAction* viewbackaction;  QAction* viewtopaction;  QAction* viewbottomaction;  QAction* viewleftaction;  QAction* viewrightaction;  QAction* viewaxoaction;  QAction* viewresetaction;  QAction* viewfitallaction;  QAction* viewfitareaaction;  QAction* viewzoomaction;private:  void InitAction();  void InitMenu();private:  OCC occ;private slots:  void trigeropenfile();  void trigerdrawbox();  void trigerdrawbottle();  void trigerdrawhelix();  void trigerviewfront();  void trigerviewback();  void trigerviewtop();  void trigerviewbottom();  void trigerviewleft();  void trigerviewright();  void trigerviewaxo();  void trigerviewreset();  void trigerfitall();  void trigerfitarea();  void trigerzoom();};

Mainwin.cpp

#include "Mainwin.h"
#include<QMenu>
#include<QMenuBar>
#include <QMessageBox>
#include<QFileDialog>
Mainwin::Mainwin(QWidget* parent): QMainWindow(parent)
{setWindowTitle(tr("my draw"));resize(500, 500);
​Dui = new Displaywin(this);setCentralWidget(Dui);InitAction();InitMenu();
}
Mainwin::~Mainwin()
{}
void Mainwin::InitAction()
{openstepfileaction = new QAction(tr("open"), this);openstepfileaction->setShortcut(tr("Ctrl+O"));openstepfileaction->setStatusTip(tr("open a step file"));connect(openstepfileaction, SIGNAL(triggered()), this, SLOT(trigeropenfile()));
​drawboxaction = new QAction(tr("box"), this);drawboxaction->setShortcut(tr("Ctrl+1"));drawboxaction->setStatusTip(tr("draw a box"));connect(drawboxaction, SIGNAL(triggered()), this, SLOT(trigerdrawbox()));
​drawbottleaction = new QAction(tr("bottle"), this);drawbottleaction->setShortcut(tr("Ctrl+2"));drawbottleaction->setStatusTip(tr("draw a bottle"));connect(drawbottleaction, SIGNAL(triggered()), this, SLOT(trigerdrawbottle()));
​drawhelixaction = new QAction(tr("helix"), this);drawhelixaction->setShortcut(tr("Ctrl+3"));drawhelixaction->setStatusTip(tr("draw a helix"));connect(drawhelixaction, SIGNAL(triggered()), this, SLOT(trigerdrawhelix()));
​viewfrontaction = new QAction(tr("front"), this);viewfrontaction->setShortcut(tr("Ctrl+4"));viewfrontaction->setStatusTip(tr("front"));connect(viewfrontaction, SIGNAL(triggered()), this, SLOT(trigerviewfront()));
​viewbackaction = new QAction(tr("back"), this);viewbackaction->setShortcut(tr("Ctrl+5"));viewbackaction->setStatusTip(tr("back"));connect(viewbackaction, SIGNAL(triggered()), this, SLOT(trigerviewback()));
​viewtopaction = new QAction(tr("top"), this);viewtopaction->setShortcut(tr("Ctrl+6"));viewtopaction->setStatusTip(tr("top"));connect(viewtopaction, SIGNAL(triggered()), this, SLOT(trigerviewtop()));
​viewbottomaction = new QAction(tr("bottom"), this);viewbottomaction->setShortcut(tr("Ctrl+7"));viewbottomaction->setStatusTip(tr("bottom"));connect(viewbottomaction, SIGNAL(triggered()), this, SLOT(trigerviewbottom()));
​viewleftaction = new QAction(tr("left"), this);viewleftaction->setShortcut(tr("Ctrl+8"));viewleftaction->setStatusTip(tr("left"));connect(viewleftaction, SIGNAL(triggered()), this, SLOT(trigerviewleft()));
​viewrightaction = new QAction(tr("right"), this);viewrightaction->setShortcut(tr("Ctrl+9"));viewrightaction->setStatusTip(tr("right"));connect(viewrightaction, SIGNAL(triggered()), this, SLOT(trigerviewright()));
​viewaxoaction = new QAction(tr("axo"), this);viewaxoaction->setShortcut(tr("Ctrl+A"));viewaxoaction->setStatusTip(tr("axo"));connect(viewaxoaction, SIGNAL(triggered()), this, SLOT(trigerviewaxo()));
​viewresetaction = new QAction(tr("reset"), this);viewresetaction->setShortcut(tr("Ctrl+B"));viewresetaction->setStatusTip(tr("reset"));connect(viewresetaction, SIGNAL(triggered()), this, SLOT(trigerviewreset()));
​viewfitallaction = new QAction(tr("fitall"), this);viewfitallaction->setShortcut(tr("Ctrl+C"));viewfitallaction->setStatusTip(tr("fitall"));connect(viewfitallaction, SIGNAL(triggered()), this, SLOT(trigerfitall()));
​viewfitareaaction = new QAction(tr("fitarea"), this);viewfitareaaction->setShortcut(tr("Ctrl+D"));viewfitareaaction->setStatusTip(tr("fitarea"));connect(viewfitareaaction, SIGNAL(triggered()), this, SLOT(trigerfitarea()));
​viewzoomaction = new QAction(tr("zoom"), this);viewzoomaction->setShortcut(tr("Ctrl+E"));viewzoomaction->setStatusTip(tr("zoom"));connect(viewzoomaction, SIGNAL(triggered()), this, SLOT(trigerzoom()));
}
​
void Mainwin::InitMenu()
{fliemenuBar = menuBar()->addMenu("Flie");fliemenuBar->addAction(openstepfileaction);
​
​drawmenuBar = menuBar()->addMenu("Draw");drawmenuBar->addAction(drawboxaction);drawmenuBar->addAction(drawbottleaction);drawmenuBar->addAction(drawhelixaction);
​viewenuBar = menuBar()->addMenu("View");viewenuBar->addAction(viewfrontaction);viewenuBar->addAction(viewbackaction);viewenuBar->addAction(viewtopaction);viewenuBar->addAction(viewbottomaction);viewenuBar->addAction(viewleftaction);viewenuBar->addAction(viewrightaction);viewenuBar->addAction(viewaxoaction);viewenuBar->addAction(viewresetaction);viewenuBar->addAction(viewfitallaction);viewenuBar->addAction(viewfitareaaction);viewenuBar->addAction(viewzoomaction);
​
}
void Mainwin::trigeropenfile()
{
​QString filename = QFileDialog::getOpenFileName(this, "open file dialog", "/", "step files(*.step)");std::string stdfilename = filename.toStdString();const char* cstr = stdfilename.c_str();TopoDS_Shape stepShape = occ.Open_STEP(cstr);Quantity_Color color = Quantity_Color(0.3, 0.5, 0.3, Quantity_TOC_RGB);Handle(AIS_Shape) aisstep = new AIS_Shape(stepShape);Dui->GetInteractiveContext()->Display(aisstep, Standard_True);Dui->GetView()->FitAll();
​
}
​
void Mainwin::trigerdrawbox()
{TopoDS_Shape box = occ.createBox();Handle(AIS_Shape) aisBox = new AIS_Shape(box);Dui->GetInteractiveContext()->Display(aisBox, Standard_True);Dui->GetView()->FitAll();
​
}
void Mainwin::trigerdrawbottle()
{TopoDS_Shape bottle = occ.MakeBottle(50, 70, 30);Handle(AIS_Shape) aisBottle = new AIS_Shape(bottle);Dui->GetInteractiveContext()->Display(aisBottle, Standard_True);Dui->GetView()->FitAll();
}
void Mainwin::trigerdrawhelix()
{TopoDS_Shape helix = occ.createHelix2(3.0, M_PI/3,3.63);Handle(AIS_Shape) aishelix = new AIS_Shape(helix);Dui->GetInteractiveContext()->Display(aishelix, Standard_True);Dui->GetView()->FitAll();
}
void Mainwin::trigerviewfront()
{Dui->GetView()->SetProj(V3d_Yneg);
}
​
void Mainwin::trigerviewback()
{Dui->GetView()->SetProj(V3d_Ypos);
}
​
void Mainwin::trigerviewtop()
{Dui->GetView()->SetProj(V3d_Zpos);
}
​
void Mainwin::trigerviewbottom()
{Dui->GetView()->SetProj(V3d_Zneg);
}
​
void Mainwin::trigerviewleft()
{Dui->GetView()->SetProj(V3d_Xneg);
}
​
void Mainwin::trigerviewright()
{Dui->GetView()->SetProj(V3d_Xpos);
}
​
void Mainwin::trigerviewaxo()
{Dui->GetView()->SetProj(V3d_XposYnegZpos);
}
​
void Mainwin::trigerviewreset()
{Dui->GetView()->Reset();
}
void Mainwin::trigerfitall()
{Dui->GetView()->FitAll();Dui->GetView()->ZFitAll();Dui->GetView()->Redraw();
}
​
void Mainwin::trigerfitarea()
{//setCurrentAction(CurAction3d_WindowZooming);
}
​
void Mainwin::trigerzoom()
{//setCurrentAction(CurAction3d_DynamicZooming);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java程序设计】【C00277】基于Springboot的招生管理系统(有论文)

基于Springboot的招生管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的招生管理系统 本系统分为系统功能模块、管理员功能模块以及学生功能模块。 系统功能模块&#xff1a;在系统首页可以查看首页、专业…

opengl 学习纹理

一.纹理是什么&#xff1f; 纹理是一个2D图片&#xff08;甚至也有1D和3D的纹理&#xff09;&#xff0c;它可以用来添加物体的细节&#xff1b;类似于图像一样&#xff0c;纹理也可以被用来储存大量的数据&#xff0c;这些数据可以发送到着色器上。 采样是指用纹理坐标来获取纹…

机器学习简单介绍

&#xff08;本文为简单介绍&#xff0c;内容源于网络和AI&#xff09; 当今世界,技术与创新的步伐日新月异。在各类智能技术当中,如果说有一个绝对不容忽视的关键词,那就是“机器学习”(Machine Learning)。它是人工智能领域的核心分支,使得机器获得从数据中学习、进而做出决…

Modern C++ std::variant的6个特性+原理

1 前言 上一节《Modern C std::variant的实现原理》我们简单分析了std::variant的实现原理&#xff0c;其实要学好C编程&#xff0c;除了看优秀的代码包括标准库实现&#xff0c;读文档也是很便捷且必须的一种办法。 本节我将逐条解析文档中的五个特性&#xff0c;解析的办法有…

H12-821_77

77.如图所示的交换网络&#xff0c;所有交换机都运行了STP协议&#xff0c;当拓扑稳定后&#xff0c;在以下哪台交换机上修改配置BPDU的发送周期&#xff0c;可以影响STD配置BPDU的发送周期&#xff1f; A.STC B.SWD C.SWA D.SWB 答案&#xff1a;C 注释&#xff1a; 在根桥上…

(十九)devops持续集成开发——jenkins的一些常用插件和工具的安装

前言 本节内容会着重介绍jenkins持续集成开发工具的一些常用插件安装以及全局工具的配置安装&#xff0c;并说明其主要作用。在开始插件和工具安装之前&#xff0c;我们要保证可以正常访问网络&#xff0c;并且使用国内的插件更新地址&#xff0c;便于插件的正常安装。官方的地…

【JavaEE】网络原理: HTTPS协议相关内容

目录 HTTPS 是什么 HTTPS 的工作过程 对称加密 非对称加密 引入证书 理解数据签名 通过证书解决黑客攻击 HTTPS 是什么 HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡…

蜂邮EDM-新手教程-新手也能使用

一、登录注册账号&#xff0c;注册登录地址&#xff1a;fengemail.com 二、配置邮箱 选择“账号设置”——“邮箱设置”进行发信邮箱配置。每个账号将默认存在一个“系统默认接口”&#xff0c;点击右侧的编辑按钮即可对该配置进行修改。 注&#xff1a;发信邮箱暂不支持个人…

抖音数据抓取工具|抖音视频下载工具

抖音数据抓取工具是一款基于C#开发的高效实用软件&#xff0c;旨在为用户提供便捷的抖音视频数据获取和处理功能。该工具不仅支持通过关键词进行搜索抓取&#xff0c;还能够通过分享链接进行单个视频的抓取和下载&#xff0c;为用户提供了多样化的数据采集方式。 主要功能模块…

SpringMVC 学习(四)之获取请求参数

目录 1 通过 HttpServletRequest 获取请求参数 2 通过控制器方法的形参获取请求参数 3 通过 POJO 获取请求参数&#xff08;重点&#xff09; 1 通过 HttpServletRequest 获取请求参数 public String handler1(HttpServletRequest request) <form action"${pageCont…

安装python的docker库

文章目录 一、在线安装二、制作离线安装包2.1 报错处理 一、在线安装 先确定是否有pip命令。 yum install python-pip直接安装。 pip install docker查看docker库。 pip list二、制作离线安装包 在有互联网的环境下直接安装。 #docker为下载下来的包名。 pip download do…

typecho 给文章创建目录树

受益于 shortcode 短代码插件和泽泽短代码中目录树的显示样式&#xff0c;形成了自己实现添加文章目录的思路&#xff1a; 一、文章目录树的结构 <div id"toc"><div class"toc-left"><div class"toc-btn" type"button&quo…

搜维尔科技:用于运动科学的 OptiTrack,范围标记、步态捕捉!

OptiTrack 系统提供世界领先的测量精度和简单易用的工作流程&#xff0c;为研究人员和生物力学师的研究提供理想的 3D 跟踪数据。 对所有主要数字测力台、EMG 和模拟设备的本机即插即用支持为研究人员提供了在 Visual3D、MotionMonitor、MATLAB 和其他第三方生物力学软件包中进…

Android加载富文本

直接用webview加载&#xff1a; package com.example.testcsdnproject;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint; import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.webk…

Nexus Repository Manager

Nexus Repository Manager https://s01.oss.sonatype.org/#welcome https://mvnrepository.com/-CSDN博客

Ubuntu22.04环境下载安装中文搜狗输入法

0、查看CPU系统架构 确定架构后&#xff0c;下载对应的安装包&#xff0c;否则无法正常安装应用程序 1、进入搜狗拼音输入法官网&#xff0c;下载搜狗输入法 搜狗输入法-首页搜狗拼音输入法官网下载&#xff0c;荣获多个国内软件大奖的搜狗拼音输入法是一款打字更准、词库更大…

3、函数定义,函数调用,this指向总结,闭包

一、函数的定义方式 1、函数声明 function demo1() {var num 12var result Math.pow(num,2)//指数函数return result }2、函数表达式 var demo2 function (x,y) { //内置对象arguments前面的两个参数 是 x,yvar sum arguments[0] arguments[1]console.log(sum) }3、构…

精品基于SpringBoot+Vue的常规应急物资管理系统

《[含文档PPT源码等]精品基于SpringBootVue的常规应急物资管理系统[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&#xff…

计网Lesson15 - TCP可靠传输

文章目录 1. 停止等待ARQ协议2. 连续ARQ协议与滑动窗口协议 1. 停止等待ARQ协议 ARQ&#xff08;Automatic Repeat–reQuest&#xff09;自动重传请求 几种重传情况 发送端丢失 发送方过久没有接收到接收方的确认报&#xff0c;这种情况会触发超时重传机制&#xff0c;发送方…

Facebook的未来蓝图:数字社交的下一个篇章

在数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分。而在众多的社交媒体平台中&#xff0c;Facebook一直处于领先地位&#xff0c;不断探索着数字社交的新领域和新形式。随着科技的不断发展和社会的不断变革&#xff0c;Facebook正在谱写着数字社交的未…