TemplateControl.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #include "TemplateControl.h"
  2. #include "ui_TemplateControl.h"
  3. #include "Src/common/JMessageTip.h"
  4. #include <QMenu>
  5. TemplateControl::TemplateControl(QWidget *parent)
  6. : QWidget(parent)
  7. , ui(new Ui::TemplateControl)
  8. {
  9. ui->setupUi(this);
  10. Init();
  11. }
  12. TemplateControl::~TemplateControl()
  13. {
  14. delete ui;
  15. }
  16. void TemplateControl::UpDataVal(const ns_db::CONFIG_BASE_STRUCT& control)
  17. {
  18. }
  19. void TemplateControl::Init()
  20. {
  21. m_manageDB = CManageDB::GetInstance();
  22. if (m_manageDB == nullptr)
  23. {
  24. return;
  25. }
  26. m_pProduct = m_manageDB->GetCProduct();
  27. if (m_pProduct == nullptr)
  28. {
  29. return;
  30. }
  31. m_pTemplateCViewInterface = ns_module::CViewInterface::GetInstance();
  32. m_CamerAndLamp = ns_module::CCamerAndLamp::GetInstance();
  33. m_vecPrTemplate = m_manageDB->GetCProduct()->GetPrTemplate();
  34. m_pProgramCViewInterface = ns_module::CViewInterface::GetInstance();
  35. for (int i = 0; i < m_vecPrTemplate.size(); i++)
  36. {
  37. AddPrTemplatePage(i, m_vecPrTemplate[i]);
  38. }
  39. ui->tempComboBox->setStyleSheet("QComboBox::item:selected {color: red;"); // 字体颜色变红
  40. }
  41. void TemplateControl::AddPrTemplatePage(int vectorIndex, PR_TEMPLATE& prTemplate)
  42. {
  43. // 显示模板ID列表
  44. ui->tempComboBox->addItem(QString::number(prTemplate.iTemplateId));
  45. }
  46. void TemplateControl::TemplateMoveToXYZRAxisPosition(UINT iModuleType, X_Y_Z_R_STRUCT pos)
  47. {
  48. // 将 iModuleType 转换为对应的字符串
  49. auto it = g_mapModuleList.find(static_cast<MODULE_LIST>(iModuleType));
  50. if (it != g_mapModuleList.end())
  51. {
  52. // 获取模块类型的字符串
  53. std::string moduleTypeStr = it->second;
  54. // 通过调用 ModuleMoveTo 函数,传递不同的轴类型和位置
  55. m_pTemplateCViewInterface->GetViewMotion()->ModuleMoveTo(moduleTypeStr, "X", pos.x);
  56. m_pTemplateCViewInterface->GetViewMotion()->ModuleMoveTo(moduleTypeStr, "Y", pos.y);
  57. m_pTemplateCViewInterface->GetViewMotion()->ModuleMoveTo(moduleTypeStr, "Z", pos.z);
  58. m_pTemplateCViewInterface->GetViewMotion()->ModuleMoveTo(moduleTypeStr, "R", pos.r);
  59. }
  60. else
  61. {
  62. // 如果找不到对应的模块类型,抛出错误或处理异常
  63. std::cerr << "Invalid module type!" << std::endl;
  64. }
  65. }
  66. void TemplateControl::onCreateParamPickTempClicked()
  67. {
  68. // TODO: 创建模板理解还有点问题
  69. int nCount = ui->tempComboBox->count();
  70. UINT iBondInfoId = ui->tempComboBox->itemText(nCount - 1).toInt() + 1;//当前模板叠加1
  71. ui->tempComboBox->addItem(QString::number(iBondInfoId));
  72. m_pProgramCViewInterface->GetViewMatrix()->CreateBondMatrixTemplate(BOND_MATRIX_TEMPLATE_TYPE::TEMPLATE_WAFER_PICK, iBondInfoId);
  73. //UpdateShowBondInfoData(iBondInfoId);
  74. BOND_INFO_STRUCT _stBondInfoData;
  75. m_manageDB->GetCProduct()->GetBondInfoData(iBondInfoId, _stBondInfoData);
  76. //m_curBondInfo.iPickPRStrategyId = _stBondInfoData.iPickPRStrategyId;
  77. m_vecPrTemplate = m_manageDB->GetCProduct()->GetPrTemplate();
  78. //m_vecPrStrategy = m_manageDB->GetCProduct()->GetPrStrategy();
  79. // UpdateTemplateParamCombox(1, _stBondInfoData.iPickPRStrategyId);
  80. // 更新样式
  81. ui->tempComboBox->setCurrentIndex(nCount);
  82. }
  83. void TemplateControl::on_TemplateControl_customContextMenuRequested(const QPoint &pos)
  84. {
  85. QMenu menu;
  86. QAction* pEditTemplate = menu.addAction(tr("Edit Template", "编辑模板"));
  87. connect(pEditTemplate, &QAction::triggered, [&]()
  88. {
  89. if (m_pTemplateCViewInterface)
  90. {
  91. m_pTemplateCViewInterface->GetViewMatrix()->ModifyBondMatrixTemplate(m_vecPrTemplate[m_nIndexvecPrTemplate].iTemplateId);
  92. }
  93. });
  94. QAction* pCreateTemplate = menu.addAction(tr("Create Template", "创建模板"));
  95. connect(pCreateTemplate, &QAction::triggered, [&]() {
  96. onCreateParamPickTempClicked();
  97. });
  98. QAction* pPositioningTemplate = menu.addAction(tr("Positioning Template", "定位模板"));
  99. connect(pPositioningTemplate, &QAction::triggered, [&]()
  100. {
  101. bool reply = JMessageTip::Message_question(tr("Confirmation", "确认操作"), tr("Are all the axes confirmed to have moved to the template position ?", "确定所有轴移动到模板位置?"), this);
  102. if (reply)
  103. {
  104. ns_db::PR_TEMPLATE pr = m_vecPrTemplate[m_nIndexvecPrTemplate];
  105. TemplateMoveToXYZRAxisPosition(pr.iModuleType, pr.stGrabPos);
  106. }
  107. });
  108. QAction* pLightadjus = menu.addAction(tr("Light adjus", "灯光调节"));
  109. connect(pLightadjus, &QAction::triggered, [&]()
  110. {
  111. if (m_CamerAndLamp!=nullptr)
  112. {
  113. //TODO: 为什么联提供一起设置在呢?
  114. ns_db::PR_TEMPLATE pr = m_vecPrTemplate[m_nIndexvecPrTemplate];
  115. m_CamerAndLamp->SetRedLight(pr.iCameraId, pr.iRedLight);
  116. m_CamerAndLamp->SetBlueLight(pr.iCameraId, pr.iBlueLight);
  117. m_CamerAndLamp->SetGreenLight(pr.iCameraId, pr.iBlueLight);
  118. m_CamerAndLamp->SetPointLight(pr.iCameraId, pr.iPointLight);
  119. }
  120. });
  121. menu.exec(this->mapToGlobal(pos));
  122. }
  123. void TemplateControl::on_tempComboBox_currentIndexChanged(int index)
  124. {
  125. m_nIndexvecPrTemplate = index;
  126. }