目录
#pragma once#include #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();};
- #include "Mainwin.h"
- #include
- #include
- #include
- #include
- 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);
- }
