BondMatrixProgramPage.h 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. #pragma once
  2. #include <QWidget>
  3. #include "ui_BondMatrixProgramPage.h"
  4. #include "CViewInterface.h"
  5. #include "CModule.h"
  6. #include <QGroupBox>
  7. #include <QLineEdit>
  8. #include <QLabel>
  9. #include <QPushButton>
  10. #include <QHBoxLayout>
  11. #include <QVBoxLayout>
  12. #include <algorithm>
  13. class BondMatrixProgramPage : public QWidget
  14. {
  15. Q_OBJECT
  16. public:
  17. BondMatrixProgramPage(QWidget* parent = nullptr);
  18. ~BondMatrixProgramPage();
  19. private:
  20. //新增矩阵界面
  21. //void AddMatrixPage(int bondMatrixVectorIndex, int vectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData);
  22. void AddMatrixPage(int vectorIndex, int subVectorIndex, PROGRAM_POINT_MATRIX_STRUCT matrixData, QGridLayout* layout);
  23. void AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData, std::vector<PROGRAM_POINT_MATRIX_STRUCT> vecSubMatrix);
  24. //void AddOutMatrixPage(int vectorIndex, PROGRAM_BOND_MATRIX_STRUCT matrixData);
  25. XY_DOUBLE_STRUCT BondGetAxisPosition(std::string ModuleType, XY_DOUBLE_STRUCT& pos);
  26. XY_DOUBLE_STRUCT BondMoveToXYAxisPosition(std::string ModuleType, XY_DOUBLE_STRUCT& pos);
  27. //往后端新增矩阵数据
  28. void AddMatrixParam();
  29. //更新参数,根据选择的点更新界面参数显示
  30. void UpdatePageParam();
  31. //更新取/固晶参数,根据选择的点更新界面参数显示
  32. void UpdatePagePickPlaceParam();
  33. //参数被修改后发送给后端
  34. void ParamChangeEvent();
  35. int BondInfoParamSaveAsEvent();
  36. int ParamSaveAsEvent(ns_db::PICKBOND_PARAM_STRUCT &m_curWaferPickParam);
  37. //参数被修改后发送给后端
  38. void MatrixChangeEvent();
  39. //更新取晶参数
  40. void UpdatePagePick1Param();
  41. void UpdatePagePick2Param();
  42. //更新固晶参数
  43. void UpdatePageBond1Param();
  44. void UpdatePageBond2Param();
  45. void initPage();
  46. // 同步相同 iId 的参数
  47. void syncParamWithSameId(ns_db::PICKBOND_PARAM_STRUCT& currentParam, ns_db::PICKBOND_PARAM_STRUCT& targetParam, QWidget* targetWidget);
  48. // 初始化取晶控件连接
  49. void connectWaferPickControls(); // 华夫盒取晶
  50. void connectCalibPickControls(); // 中转台取晶
  51. // 初始化放晶控件连接
  52. void connectCalibPlaceControls();
  53. void connectBondControls();
  54. void ShowCurrentMatrix(int bondMatrixId);
  55. bool canDeleteBondInfo(int selectedBondInfoId);
  56. void updateDeleteButtonStatus(bool canDelete, QPushButton* deleteButton);
  57. void updateFourParamDeleteButtonStatus();
  58. int canDeleteParameter(int selectedId);
  59. bool deleteParameter(QPushButton* deleteButton, int selectedId);
  60. void restoreBondInfoDefaultStyles();
  61. void restorePick1DefaultStyles();
  62. void restorePick2DefaultStyles();
  63. void restorePlace1DefaultStyles();
  64. void restorePlccle2DefaultStyles();
  65. protected:
  66. bool eventFilter(QObject* watched, QEvent* event) override;
  67. private slots:
  68. void onNoBondPtsClicked(QLineEdit* lineEdit, int index, int parentIndex);
  69. void UpdateShowBondInfoData(UINT iInfoId);
  70. void onComboBoxCurrentMatrixChanged(int index); // 切换矩阵
  71. void onComboBoxIndexChangedForMatrixParam(int index);
  72. void onComboBoxIndexChangedForParam(int index);
  73. void onComboBoxPopupBondInfo(QComboBox* comboBox);
  74. //DeleteBondInfo
  75. void onPushButtonDeleteParamClicked();
  76. //DeleteParam
  77. void onPushButtonDeleteClicked(QPushButton* deleteButton, QComboBox* comboBox);//通用
  78. /*void on_pushButtonDeletePick1_clicked(QPushButton* deleteButton, QComboBox* comboBox);
  79. void on_pushButtonDeletePick2_clicked(QPushButton* deleteButton, QComboBox* comboBox);
  80. void on_pushButtonDeletePlace1_clicked(QPushButton* deleteButton, QComboBox* comboBox);
  81. void on_pushButtonDeletePlace2_clicked(QPushButton* deleteButton, QComboBox* comboBox);*/
  82. //ModifyParam
  83. void onSetParamPickTempClicked();
  84. void onSetParamPreBondClicked();
  85. void onSetParamPostBondClicked();
  86. void onSetParamBondClicked();
  87. void onSetParamLookUpClicked();
  88. void onSetParamCalibPickClicked();
  89. void onSetParamPcbAlnPRStrategyClicked();
  90. //CreateParam
  91. void onCreateParamPickTempClicked();
  92. void onCreateParamPreBondClicked();
  93. void onCreateParamPostBondClicked();
  94. void onCreateParamBondClicked();
  95. void onCreateParamLookUpClicked();
  96. void onCreateParamCalibPickClicked();
  97. void onCreatParamPcbAlnPRStrategyClicked();
  98. // ——— 取晶槽函数 ———
  99. // 取晶头取晶
  100. void onCheckBoxPickBlockCheckClicked(bool);
  101. void onCheckBoxPickLoseCheckClicked(bool);
  102. void onCheckBoxPickFindForceCheckClicked(bool);
  103. void onDoubleSpinBoxPrePickZEditingFinished();
  104. void onDoubleSpinBoxPickForceEditingFinished();
  105. void onDoubleSpinBoxPickPosZEditingFinished();
  106. void onSpinBoxPickGrabDelayEditingFinished();
  107. void onSpinBoxPickDelayEditingFinished();
  108. void onSpinBoxPickBlockCheckDelayEditingFinished();
  109. void onSpinBoxPickVacDelayEditingFinished();
  110. void onSpinBoxPickBlowDelayEditingFinished();
  111. // 中转台取晶
  112. void onCheckBoxPickBlockCheck_2Clicked(bool);
  113. void onCheckBoxPickLoseCheck_2Clicked(bool);
  114. void onCheckBoxPickFindForceCheck_2Clicked(bool);
  115. void onDoubleSpinBoxPrePickZ_2EditingFinished();
  116. void onDoubleSpinBoxPickForce_2EditingFinished();
  117. void onDoubleSpinBoxPickPosZ_2EditingFinished();
  118. void onSpinBoxPickGrabDelay_2EditingFinished();
  119. void onSpinBoxPickDelay_2EditingFinished();
  120. void onSpinBoxPickBlockCheckDelay_2EditingFinished();
  121. void onSpinBoxPickVacDelay_2EditingFinished();
  122. void onSpinBoxPickBlowDelay_2EditingFinished();
  123. // "中转台放晶" 控件的槽函数
  124. void onCheckBoxBondBlockCheckClicked(bool isChecked);
  125. void onCheckBoxBondLoseCheckClicked(bool isChecked);
  126. void onCheckBoxBondFindForceClicked(bool isChecked);
  127. void onDoubleSpinBoxPreBondPosZEditingFinished();
  128. void onDoubleSpinBoxBondForceEditingFinished();
  129. void onDoubleSpinBoxBondPosZEditingFinished();
  130. void onSpinBoxBondGrabDelayEditingFinished();
  131. void onSpinBoxBondBlockCheckDelayEditingFinished();
  132. void onSpinBoxBondDelayEditingFinished();
  133. void onSpinBoxBondVacDelayEditingFinished();
  134. void onSpinBoxBondBlowDelayEditingFinished();
  135. // "固晶台固晶" 控件的槽函数
  136. void onCheckBoxBondBlockCheck_2Clicked(bool isChecked);
  137. void onCheckBoxBondLoseCheck_2Clicked(bool isChecked);
  138. void onCheckBoxBondFindForce_2Clicked(bool isChecked);
  139. void onDoubleSpinBoxPreBondPosZ_2EditingFinished();
  140. void onDoubleSpinBoxBondForce_2EditingFinished();
  141. void onDoubleSpinBoxBondPosZ_2EditingFinished();
  142. void onSpinBoxBondGrabDelay_2EditingFinished();
  143. void onSpinBoxBondBlockCheckDelay_2EditingFinished();
  144. void onSpinBoxBondDelay_2EditingFinished();
  145. void onSpinBoxBondVacDelay_2EditingFinished();
  146. void onSpinBoxBondBlowDelay_2EditingFinished();
  147. private:
  148. Ui::BondMatrixProgramPageClass ui;
  149. CManageDB* m_manageDB = nullptr;
  150. CProduct* m_pProduct = nullptr;
  151. ns_mat::TipMatrix* m_TipMatrix = nullptr;
  152. std::vector<ns_db::PR_STRATEGY> m_vecPrStrategy;
  153. std::vector<ns_db::PR_TEMPLATE> m_vecPrTemplate;
  154. std::vector<ns_db::PR_BONDINSP> m_vecPrBondInsp;
  155. vector<int> m_vecNozzles;
  156. //当前界面显示的参数
  157. ns_db::BOND_INFO_STRUCT m_curBondInfo;
  158. ns_db::BOND_INFO_STRUCT m_tempBondInfo;
  159. ns_db::PICKBOND_PARAM_STRUCT m_curWaferPickParam;//取晶头取晶
  160. ns_db::PICKBOND_PARAM_STRUCT m_curCalibPlaceParam;//中转台固晶
  161. ns_db::PICKBOND_PARAM_STRUCT m_curCalibPickParam;//中转台取晶
  162. ns_db::PICKBOND_PARAM_STRUCT m_curBondParam;//固晶台固晶
  163. ns_db::PICKBOND_PARAM_STRUCT m_tempWaferPickParam;//取晶头取晶
  164. ns_db::PICKBOND_PARAM_STRUCT m_tempCalibPlaceParam;//中转台固晶
  165. ns_db::PICKBOND_PARAM_STRUCT m_tempCalibPickParam;//中转台取晶
  166. ns_db::PICKBOND_PARAM_STRUCT m_tempBondParam;//固晶台固晶
  167. ns_mat::POINT_INFO_STRUCT m_curPointInfo;
  168. ns_module::CViewInterface* m_pProgramCViewInterface = nullptr;
  169. std::vector<ns_db::PICKBOND_PARAM_STRUCT> m_vecParam;
  170. std::vector<ns_db::PROGRAM_BOND_MATRIX_STRUCT> m_vectBondMatrixs;
  171. std::vector<ns_db::PROGRAM_POINT_MATRIX_STRUCT> m_vecSubMatrixs;
  172. std::vector<BOND_INFO_STRUCT> m_vecBondInfoData;
  173. //子矩阵控件,ID从1开始
  174. QMap<int, QVector<QObject*>> m_mapSubMatrixControls;
  175. int m_curPtIndex = 0;
  176. // 新增字段: 用于管理大矩阵与子矩阵的关系
  177. //QMap<int, std::vector<int>> m_mapBondMatrixToSubMatrices; // 大矩阵ID和对应子矩阵ID的映射
  178. QMap<int, std::vector<ns_db::PROGRAM_POINT_MATRIX_STRUCT>> m_mapBondMatrixToSubMatrices; // 大矩阵ID和对应子矩阵ID的映射
  179. // 用于标识当前矩阵类型(如大矩阵或子矩阵)
  180. bool m_isSubMatrix = false; // 标记是否为子矩阵
  181. QMap<QWidget*, int> m_mapSubWidgetIndex;
  182. QMap<QWidget*, int> m_mapOutWidgetIndex;
  183. //QComboBox* comboBoxParagramSet;
  184. QMap<QComboBox*, int> m_mapParagramSetComboBox;
  185. QVBoxLayout* verticalLayout_tem = new QVBoxLayout();
  186. bool m_isComBoxUpdating = false;
  187. };