主页 > 开源代码  > 

OpenCASCADE学习|视图


目录

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); }

标签:

OpenCASCADE学习|视图由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“OpenCASCADE学习|视图