• Open CASCADE学习|视图


    目录

    Mainwin.h

    Mainwin.cpp


    Mainwin.h

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

    Mainwin.cpp

    1. #include "Mainwin.h"
    2. #include
    3. #include
    4. #include
    5. #include
    6. Mainwin::Mainwin(QWidget* parent)
    7. : QMainWindow(parent)
    8. {
    9. setWindowTitle(tr("my draw"));
    10. resize(500, 500);
    11. Dui = new Displaywin(this);
    12. setCentralWidget(Dui);
    13. InitAction();
    14. InitMenu();
    15. }
    16. Mainwin::~Mainwin()
    17. {}
    18. void Mainwin::InitAction()
    19. {
    20. openstepfileaction = new QAction(tr("open"), this);
    21. openstepfileaction->setShortcut(tr("Ctrl+O"));
    22. openstepfileaction->setStatusTip(tr("open a step file"));
    23. connect(openstepfileaction, SIGNAL(triggered()), this, SLOT(trigeropenfile()));
    24. drawboxaction = new QAction(tr("box"), this);
    25. drawboxaction->setShortcut(tr("Ctrl+1"));
    26. drawboxaction->setStatusTip(tr("draw a box"));
    27. connect(drawboxaction, SIGNAL(triggered()), this, SLOT(trigerdrawbox()));
    28. drawbottleaction = new QAction(tr("bottle"), this);
    29. drawbottleaction->setShortcut(tr("Ctrl+2"));
    30. drawbottleaction->setStatusTip(tr("draw a bottle"));
    31. connect(drawbottleaction, SIGNAL(triggered()), this, SLOT(trigerdrawbottle()));
    32. drawhelixaction = new QAction(tr("helix"), this);
    33. drawhelixaction->setShortcut(tr("Ctrl+3"));
    34. drawhelixaction->setStatusTip(tr("draw a helix"));
    35. connect(drawhelixaction, SIGNAL(triggered()), this, SLOT(trigerdrawhelix()));
    36. viewfrontaction = new QAction(tr("front"), this);
    37. viewfrontaction->setShortcut(tr("Ctrl+4"));
    38. viewfrontaction->setStatusTip(tr("front"));
    39. connect(viewfrontaction, SIGNAL(triggered()), this, SLOT(trigerviewfront()));
    40. viewbackaction = new QAction(tr("back"), this);
    41. viewbackaction->setShortcut(tr("Ctrl+5"));
    42. viewbackaction->setStatusTip(tr("back"));
    43. connect(viewbackaction, SIGNAL(triggered()), this, SLOT(trigerviewback()));
    44. viewtopaction = new QAction(tr("top"), this);
    45. viewtopaction->setShortcut(tr("Ctrl+6"));
    46. viewtopaction->setStatusTip(tr("top"));
    47. connect(viewtopaction, SIGNAL(triggered()), this, SLOT(trigerviewtop()));
    48. viewbottomaction = new QAction(tr("bottom"), this);
    49. viewbottomaction->setShortcut(tr("Ctrl+7"));
    50. viewbottomaction->setStatusTip(tr("bottom"));
    51. connect(viewbottomaction, SIGNAL(triggered()), this, SLOT(trigerviewbottom()));
    52. viewleftaction = new QAction(tr("left"), this);
    53. viewleftaction->setShortcut(tr("Ctrl+8"));
    54. viewleftaction->setStatusTip(tr("left"));
    55. connect(viewleftaction, SIGNAL(triggered()), this, SLOT(trigerviewleft()));
    56. viewrightaction = new QAction(tr("right"), this);
    57. viewrightaction->setShortcut(tr("Ctrl+9"));
    58. viewrightaction->setStatusTip(tr("right"));
    59. connect(viewrightaction, SIGNAL(triggered()), this, SLOT(trigerviewright()));
    60. viewaxoaction = new QAction(tr("axo"), this);
    61. viewaxoaction->setShortcut(tr("Ctrl+A"));
    62. viewaxoaction->setStatusTip(tr("axo"));
    63. connect(viewaxoaction, SIGNAL(triggered()), this, SLOT(trigerviewaxo()));
    64. viewresetaction = new QAction(tr("reset"), this);
    65. viewresetaction->setShortcut(tr("Ctrl+B"));
    66. viewresetaction->setStatusTip(tr("reset"));
    67. connect(viewresetaction, SIGNAL(triggered()), this, SLOT(trigerviewreset()));
    68. viewfitallaction = new QAction(tr("fitall"), this);
    69. viewfitallaction->setShortcut(tr("Ctrl+C"));
    70. viewfitallaction->setStatusTip(tr("fitall"));
    71. connect(viewfitallaction, SIGNAL(triggered()), this, SLOT(trigerfitall()));
    72. viewfitareaaction = new QAction(tr("fitarea"), this);
    73. viewfitareaaction->setShortcut(tr("Ctrl+D"));
    74. viewfitareaaction->setStatusTip(tr("fitarea"));
    75. connect(viewfitareaaction, SIGNAL(triggered()), this, SLOT(trigerfitarea()));
    76. viewzoomaction = new QAction(tr("zoom"), this);
    77. viewzoomaction->setShortcut(tr("Ctrl+E"));
    78. viewzoomaction->setStatusTip(tr("zoom"));
    79. connect(viewzoomaction, SIGNAL(triggered()), this, SLOT(trigerzoom()));
    80. }
    81. void Mainwin::InitMenu()
    82. {
    83. fliemenuBar = menuBar()->addMenu("Flie");
    84. fliemenuBar->addAction(openstepfileaction);
    85. drawmenuBar = menuBar()->addMenu("Draw");
    86. drawmenuBar->addAction(drawboxaction);
    87. drawmenuBar->addAction(drawbottleaction);
    88. drawmenuBar->addAction(drawhelixaction);
    89. viewenuBar = menuBar()->addMenu("View");
    90. viewenuBar->addAction(viewfrontaction);
    91. viewenuBar->addAction(viewbackaction);
    92. viewenuBar->addAction(viewtopaction);
    93. viewenuBar->addAction(viewbottomaction);
    94. viewenuBar->addAction(viewleftaction);
    95. viewenuBar->addAction(viewrightaction);
    96. viewenuBar->addAction(viewaxoaction);
    97. viewenuBar->addAction(viewresetaction);
    98. viewenuBar->addAction(viewfitallaction);
    99. viewenuBar->addAction(viewfitareaaction);
    100. viewenuBar->addAction(viewzoomaction);
    101. }
    102. void Mainwin::trigeropenfile()
    103. {
    104. QString filename = QFileDialog::getOpenFileName(this, "open file dialog", "/", "step files(*.step)");
    105. std::string stdfilename = filename.toStdString();
    106. const char* cstr = stdfilename.c_str();
    107. TopoDS_Shape stepShape = occ.Open_STEP(cstr);
    108. Quantity_Color color = Quantity_Color(0.3, 0.5, 0.3, Quantity_TOC_RGB);
    109. Handle(AIS_Shape) aisstep = new AIS_Shape(stepShape);
    110. Dui->GetInteractiveContext()->Display(aisstep, Standard_True);
    111. Dui->GetView()->FitAll();
    112. }
    113. void Mainwin::trigerdrawbox()
    114. {
    115. TopoDS_Shape box = occ.createBox();
    116. Handle(AIS_Shape) aisBox = new AIS_Shape(box);
    117. Dui->GetInteractiveContext()->Display(aisBox, Standard_True);
    118. Dui->GetView()->FitAll();
    119. }
    120. void Mainwin::trigerdrawbottle()
    121. {
    122. TopoDS_Shape bottle = occ.MakeBottle(50, 70, 30);
    123. Handle(AIS_Shape) aisBottle = new AIS_Shape(bottle);
    124. Dui->GetInteractiveContext()->Display(aisBottle, Standard_True);
    125. Dui->GetView()->FitAll();
    126. }
    127. void Mainwin::trigerdrawhelix()
    128. {
    129. TopoDS_Shape helix = occ.createHelix2(3.0, M_PI/3,3.63);
    130. Handle(AIS_Shape) aishelix = new AIS_Shape(helix);
    131. Dui->GetInteractiveContext()->Display(aishelix, Standard_True);
    132. Dui->GetView()->FitAll();
    133. }
    134. void Mainwin::trigerviewfront()
    135. {
    136. Dui->GetView()->SetProj(V3d_Yneg);
    137. }
    138. void Mainwin::trigerviewback()
    139. {
    140. Dui->GetView()->SetProj(V3d_Ypos);
    141. }
    142. void Mainwin::trigerviewtop()
    143. {
    144. Dui->GetView()->SetProj(V3d_Zpos);
    145. }
    146. void Mainwin::trigerviewbottom()
    147. {
    148. Dui->GetView()->SetProj(V3d_Zneg);
    149. }
    150. void Mainwin::trigerviewleft()
    151. {
    152. Dui->GetView()->SetProj(V3d_Xneg);
    153. }
    154. void Mainwin::trigerviewright()
    155. {
    156. Dui->GetView()->SetProj(V3d_Xpos);
    157. }
    158. void Mainwin::trigerviewaxo()
    159. {
    160. Dui->GetView()->SetProj(V3d_XposYnegZpos);
    161. }
    162. void Mainwin::trigerviewreset()
    163. {
    164. Dui->GetView()->Reset();
    165. }
    166. void Mainwin::trigerfitall()
    167. {
    168. Dui->GetView()->FitAll();
    169. Dui->GetView()->ZFitAll();
    170. Dui->GetView()->Redraw();
    171. }
    172. void Mainwin::trigerfitarea()
    173. {
    174. //setCurrentAction(CurAction3d_WindowZooming);
    175. }
    176. void Mainwin::trigerzoom()
    177. {
    178. //setCurrentAction(CurAction3d_DynamicZooming);
    179. }

  • 相关阅读:
    视频教程下载:用ChatGPT玩转海外抖音TikTok
    【Truffle】一、Truffle的安装与部署
    天平秤球问题
    使用vs查看虚函数内存分布
    javaweb基础:tomcat的安装,以及目录结构
    深入了解 Spring 篇之 BeanDefinition 结构
    LDO基础知识
    这几个数据分析项目,让我看到了什么才叫专业!!
    K8S 集群架构的 kubeadm 部署、dashboard 和 Harbor 仓库部署
    Myeclipse配置tomcat服务器
  • 原文地址:https://blog.csdn.net/T20151470/article/details/136307819