From 47873f48d17bb8f7602fda73d29b19adcf43fdd0 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期四, 14 八月 2025 15:50:27 +0800
Subject: [PATCH] 1. 修复执行界面没有显示侧面检数据的问题
---
EdgeInspector_App/ViewMain_Recipe.cpp | 449 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 442 insertions(+), 7 deletions(-)
diff --git a/EdgeInspector_App/ViewMain_Recipe.cpp b/EdgeInspector_App/ViewMain_Recipe.cpp
index fae101f..c6b393c 100644
--- a/EdgeInspector_App/ViewMain_Recipe.cpp
+++ b/EdgeInspector_App/ViewMain_Recipe.cpp
@@ -167,6 +167,10 @@
ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_B_BOT, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_C_BOT, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_D_BOT, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
+ ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_A_RIP, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
+ ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_B_RIP, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
+ ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_C_RIP, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
+ ON_EVENT(CViewMain_Recipe, IDC_RDO_SIDE_D_RIP, DISPID_CLICK, CViewMain_Recipe::ClickSideSelButton, VTS_NONE)
ON_EVENT(CViewMain_Recipe, IDC_RDO_INSTYPE_CHIP, DISPID_CLICK, CViewMain_Recipe::ClickRdoInsType, VTS_NONE)
ON_EVENT(CViewMain_Recipe, IDC_RDO_INSTYPE_CRACK, DISPID_CLICK, CViewMain_Recipe::ClickRdoInsType, VTS_NONE)
@@ -178,6 +182,7 @@
ON_EVENT(CViewMain_Recipe, IDC_RDO_INSTYPE_IN_CHAMFER, DISPID_CLICK, CViewMain_Recipe::ClickRdoInsType, VTS_NONE)
ON_EVENT(CViewMain_Recipe, IDC_RDO_INSTYPE_TOP_CORNER, DISPID_CLICK, CViewMain_Recipe::ClickRdoInsType, VTS_NONE)
ON_EVENT(CViewMain_Recipe, IDC_RDO_INSTYPE_BOT_CORNER, DISPID_CLICK, CViewMain_Recipe::ClickRdoInsType, VTS_NONE)
+ ON_EVENT(CViewMain_Recipe, IDC_RDO_INSTYPE_RIP_THICKNESS, DISPID_CLICK, CViewMain_Recipe::ClickRdoInsType, VTS_NONE)
ON_EVENT(CViewMain_Recipe, IDC_BTN_TOP_MARK_UPDATE_0, DISPID_CLICK, CViewMain_Recipe::ClickBtnMarkUpdate, VTS_NONE)
ON_EVENT(CViewMain_Recipe, IDC_BTN_TOP_MARK_UPDATE_1, DISPID_CLICK, CViewMain_Recipe::ClickBtnMarkUpdate, VTS_NONE)
@@ -1118,12 +1123,25 @@
case IDC_RDO_SIDE_D_BOT:
eSelView = eRcp_SideRD_D_DN;
break;
+ case IDC_RDO_SIDE_A_RIP:
+ eSelView = eRcp_SideRD_A_RIP;
+ break;
+ case IDC_RDO_SIDE_B_RIP:
+ eSelView = eRcp_SideRD_B_RIP;
+ break;
+ case IDC_RDO_SIDE_C_RIP:
+ eSelView = eRcp_SideRD_C_RIP;
+ break;
+ case IDC_RDO_SIDE_D_RIP:
+ eSelView = eRcp_SideRD_D_RIP;
+ break;
default:
return;
}
- if(m_eSelectSide == eSelView)
+ if (m_eSelectSide == eSelView) {
return;
+ }
m_eSelectSide = eSelView;
@@ -1133,11 +1151,17 @@
double dPixelSizeX = 1.0;
double dPixelSizeY = 1.0;
- int nFrameWidth = IMAGE_WIDTH;
+
+ int nFrameWidth = IMAGE_WIDTH / 2;
+ if (eSelView < eRcp_SideRD_A_RIP){
+ nFrameWidth = IMAGE_WIDTH;
+ }
+
int nFrameHeight = IMAGE_HEIGHT;
int nFrameCount = MAX_FRAM_COUNT;
GetResolution(dPixelSizeX, dPixelSizeY, nFrameWidth, nFrameHeight, nFrameCount);
m_frameImg.SetPixelSize(dPixelSizeX, dPixelSizeY);
+ m_frameImg.SetImageSize(nFrameWidth, nFrameHeight, nFrameCount);
#if HALCON_VISION_KEY
if (NULL != m_pVisionSetDlg) {
@@ -1176,15 +1200,21 @@
break;
case IDC_RDO_INSTYPE_BOT_CORNER: eSelInsType = eRcp_InsType_BotCorner;
break;
+ case IDC_RDO_INSTYPE_RIP_THICKNESS: eSelInsType = eRcp_InsType_RipThickness;
+ break;
default:
return;
}
- if(m_eSelectInsType == eSelInsType)
+ // Check Ins Type
+ if (m_eSelectInsType == eSelInsType) {
return;
+ }
+ // Change Ins Type
m_eSelectInsType = eSelInsType;
+ // Update UI
Init_SideInsInfo();
Fill_SideInsInfo(FALSE);
@@ -1541,6 +1571,14 @@
m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("C Bot"));
m_PanelInfo.SetColumnWidth(nColIdx, 80);
m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("D Bot"));
+ m_PanelInfo.SetColumnWidth(nColIdx, 80);
+ m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("A RIP"));
+ m_PanelInfo.SetColumnWidth(nColIdx, 80);
+ m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("B RIP"));
+ m_PanelInfo.SetColumnWidth(nColIdx, 80);
+ m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("C RIP"));
+ m_PanelInfo.SetColumnWidth(nColIdx, 80);
+ m_PanelInfo.SetItemText(nRowIdx, nColIdx++, _T("D RIP"));
nColIdx = 0;
nRowIdx = 1;
@@ -1618,6 +1656,9 @@
case eRcp_InsType_BotCorner :
nRows = 14;
break;
+ case eRcp_InsType_RipThickness:
+ nRows = 15;
+ break;
default:
break;
}
@@ -1674,6 +1715,14 @@
m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("C Bot"));
m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("D Bot"));
+ m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
+ m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("A RIP"));
+ m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
+ m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("B RIP"));
+ m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
+ m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("C RIP"));
+ m_SideInspectInfo.SetColumnWidth(nColIdx, 80);
+ m_SideInspectInfo.SetItemText(nRowIdx, nColIdx++, _T("D RIP"));
nColIdx = 0;
nRowIdx = 1;
@@ -1786,6 +1835,57 @@
m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, vecParams[i]);
}
}
+ else if (m_eSelectInsType == eRcp_InsType_RipThickness) {
+ std::vector<CString> vecParams;
+ strTemp.Format(_T("%s Use (0:OFF/1:ON)"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. Left Thres"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. Right Thres"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Glsss Thres"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Rip Dir. (0:Left/1:Right/2:Both)"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. Rect L"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. T Offset"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. Rect R"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. B Offset"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. Use (0:OFF/1:ON)"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. Range (um)"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. SideLine Offset (um)"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. Min Thres"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Ins. Max Thres"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+
+ CLanguageControl* pLanguageControl = g_pStatus->m_pLanguageControl;
+
+ if (pLanguageControl != NULL) {
+ for (int i = 0; i < vecParams.size(); i++) {
+ CString strParam = pLanguageControl->GetString(m_eSelectLangType, vecParams[i]);
+
+ if (strParam.IsEmpty() || strParam.GetLength() == 0) {
+ continue;
+ }
+
+ vecParams[i] = strParam;
+ }
+ }
+
+ for (int i = 0; i < vecParams.size(); i++) {
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetState(GVIS_READONLY);
+ m_SideInspectInfo.SetRowHeight(nRowIdx, 19);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, vecParams[i]);
+ }
+ }
m_SideInspectInfo.SetFixedRowSelection(FALSE);
m_SideInspectInfo.SetFixedColumnSelection(FALSE);
@@ -1819,6 +1919,9 @@
case eRcp_InsType_TopCorner :
case eRcp_InsType_BotCorner :
nRows = 11;
+ break;
+ case eRcp_InsType_RipThickness:
+ nRows = 10;
break;
default:
break;
@@ -1876,6 +1979,14 @@
m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("C Bot"));
m_JudgementInfo.SetColumnWidth(nColIdx, 80);
m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("D Bot"));
+ m_JudgementInfo.SetColumnWidth(nColIdx, 80);
+ m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("A RIP"));
+ m_JudgementInfo.SetColumnWidth(nColIdx, 80);
+ m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("B RIP"));
+ m_JudgementInfo.SetColumnWidth(nColIdx, 80);
+ m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("C RIP"));
+ m_JudgementInfo.SetColumnWidth(nColIdx, 80);
+ m_JudgementInfo.SetItemText(nRowIdx, nColIdx++, _T("D RIP"));
nColIdx = 0;
nRowIdx = 1;
@@ -1961,6 +2072,46 @@
for(int i=0; i<vecParams.size(); i++)
{
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetState(GVIS_READONLY);
+ m_JudgementInfo.SetRowHeight(nRowIdx, 19);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, vecParams[i]);
+ }
+ }
+ else if (eRcp_InsType_RipThickness == m_eSelectInsType) {
+ std::vector<CString> vecParams;
+ strTemp.Format(_T("Glass %s Size Min um"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("Glass %s Size Max um"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("Left %s Rip Size Min um"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("Left %s Rip Size Max um"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("Right %s Rip Size Min um"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("Right %s Rip Size Max um"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Rip Judge Size Min X um"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Rip Judge Size Min Y um"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+ strTemp.Format(_T("%s Rip Judge Mode (0:NoUse/1:OR/2:AND)"), g_strInsType[m_eSelectInsType]);
+ vecParams.push_back(strTemp);
+
+ CLanguageControl* pLanguageControl = g_pStatus->m_pLanguageControl;
+
+ if (pLanguageControl != NULL) {
+ for (int i = 0; i < vecParams.size(); i++) {
+ CString strParam = pLanguageControl->GetString(m_eSelectLangType, vecParams[i]);
+
+ if (strParam.IsEmpty() || strParam.GetLength() == 0)
+ continue;
+
+ vecParams[i] = strParam;
+ }
+ }
+
+ for (int i = 0; i < vecParams.size(); i++) {
m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetState(GVIS_READONLY);
m_JudgementInfo.SetRowHeight(nRowIdx, 19);
m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, vecParams[i]);
@@ -2424,6 +2575,81 @@
strTemp.Format(_T("%d"), pSideParam->m_nBottomCornerEdgeThreshold );
m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
}
+ else if (m_eSelectInsType == eRcp_InsType_RipThickness)
+ {
+ CRIP_THICKNESS_PARM& rip = pSideParam->m_RipThk;
+ // 1. Use (0/1)
+ if (rip.m_bUseInspect) m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(RGB(50, 255, 50));
+ else m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(RGB(255, 50, 50));
+ strTemp.Format(_T("%d"), rip.m_bUseInspect);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 2. Left Thres
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nLeftThres);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 3. Right Thres
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRightThres);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 4. Glass Thres
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nGlassThres);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 5. Rip Direction (0/1/2)
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRipDir);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 6. Rect L
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRectLeft);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 7. T Offset
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nTopOffset);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 8. Rect R
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRectRight);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 9. B Offset
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nBottomOffset);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 10. RIP Inspect Use
+ if (rip.m_bRipUseInspect) m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(RGB(50, 255, 50));
+ else m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(RGB(255, 50, 50));
+ strTemp.Format(_T("%d"), rip.m_bRipUseInspect);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 11. RIP Inspect Range
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRipInspect_Range_um);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 12. RIP Inspect SideLine Offset
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRipInspect_SideLine_Offset_um);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 13. RIP Min Threshold
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRipMin_Threshold);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 14. RIP Min Threshold
+ m_SideInspectInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRipMax_Threshold);
+ m_SideInspectInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+ }
}
m_SideInspectInfo.Invalidate();
@@ -2592,10 +2818,69 @@
strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
pSideParam->m_nBottomCornerEdgeThreshold = _wtoi(strTemp);
}
+ else if (m_eSelectInsType == eRcp_InsType_RipThickness)
+ {
+ CRIP_THICKNESS_PARM& rip = pSideParam->m_RipThk;
+
+ // 1. Use
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_bUseInspect = _wtoi(strTemp);
+
+ // 2. Left Thres
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nLeftThres = _wtoi(strTemp);
+
+ // 3. Right Thres
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRightThres = _wtoi(strTemp);
+
+ // 4. Glass Thres
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nGlassThres = _wtoi(strTemp);
+
+ // 5. Rip Direction
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRipDir = _wtoi(strTemp);
+
+ // 6. Rect L
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRectLeft = _wtoi(strTemp);
+
+ // 7. T Offset
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nTopOffset = _wtoi(strTemp);
+
+ // 8. Rect R
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRectRight = _wtoi(strTemp);
+
+ // 9. B Offset
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nBottomOffset = _wtoi(strTemp);
+
+ // 10. RIP Inspect Use
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_bRipUseInspect = _wtoi(strTemp);
+
+ // 11. RIP Inspect Range
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRipInspect_Range_um = _wtoi(strTemp);
+
+ // 12. RIP Inspect SideLine Offset
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRipInspect_SideLine_Offset_um = _wtoi(strTemp);
+
+ // 13. RIP Min Threshold
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRipMin_Threshold = _wtoi(strTemp);
+
+ // 14. RIP Min Threshold
+ strTemp = m_SideInspectInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRipMax_Threshold = _wtoi(strTemp);
+ }
}
}
}
-
void CViewMain_Recipe::Fill_JudgementInfo(BOOL bGetData)
{
@@ -2744,6 +3029,52 @@
strTemp.Format(_T("%d"), pSideParam->m_nBottomCorner_Measure_Judge_OR_AND );
m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
}
+ else if (m_eSelectInsType == eRcp_InsType_RipThickness)
+ {
+ const CRIP_THICKNESS_PARM& rip = pSideParam->m_RipThk;
+
+ // 1. Glass Size Min um
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nGlassSizeMin_um);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 2. Glass Size Max um
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nGlassSizeMax_um);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 3. Left Rip Size Min um
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nLeftRipSizeMin_um);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 4. Left Rip Size Max um
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nLeftRipSizeMax_um);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 5. Right Rip Size Min um
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRightRipSizeMin_um);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+
+ // 6. Right Rip Size Max um
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRightRipSizeMax_um);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+ // 7. Rip chip Size Min um
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRipJudge_Size_Min_X_um);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+ // 8. Rip chip Size Max um
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRipJudge_Size_Min_Y_um);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+ // 9. Rip chip OR/AND
+ m_JudgementInfo.GetCell(nRowIdx, nColIdx)->SetBackClr(uCellColor);
+ strTemp.Format(_T("%d"), rip.m_nRipJudge_Size_Min_OR_AND);
+ m_JudgementInfo.SetItemText(nRowIdx++, nColIdx, strTemp);
+ }
}
m_JudgementInfo.Invalidate();
@@ -2860,6 +3191,43 @@
strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
pSideParam->m_nBottomCorner_Measure_Judge_OR_AND = _wtoi(strTemp);
}
+ else if (m_eSelectInsType == eRcp_InsType_RipThickness)
+ {
+ CRIP_THICKNESS_PARM& rip = pSideParam->m_RipThk;
+
+ // 1. Glass Size Min um
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nGlassSizeMin_um = _wtoi(strTemp);
+
+ // 2. Glass Size Max um
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nGlassSizeMax_um = _wtoi(strTemp);
+
+ // 3. Left Rip Size Min um
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nLeftRipSizeMin_um = _wtoi(strTemp);
+
+ // 4. Left Rip Size Max um
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nLeftRipSizeMax_um = _wtoi(strTemp);
+
+ // 5. Right Rip Size Min um
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRightRipSizeMin_um = _wtoi(strTemp);
+
+ // 6. Right Rip Size Max um
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRightRipSizeMax_um = _wtoi(strTemp);
+ // 7. Rip chip Size Min um
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRipJudge_Size_Min_X_um = _wtoi(strTemp);
+ // 8. Rip chip Size Max um
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRipJudge_Size_Min_Y_um = _wtoi(strTemp);
+ // 9. Rip chip OR/AND
+ strTemp = m_JudgementInfo.GetItemText(nRowIdx++, nColIdx);
+ rip.m_nRipJudge_Size_Min_OR_AND = _wtoi(strTemp);
+ }
}
}
}
@@ -2893,8 +3261,8 @@
UINT nID = GetFocus()->GetDlgCtrlID();
UpdateRecipe(TRUE);
-
ChangViewCdmSide(nID);
+ RefreshRadioStates();
}
@@ -2902,10 +3270,10 @@
{
UINT nID = GetFocus()->GetDlgCtrlID();
- Fill_SideInsInfo(TRUE); // Get Data..
+ Fill_SideInsInfo(TRUE);
Fill_JudgementInfo(TRUE);
-
ChangInsTypeSide(nID);
+ RefreshRadioStates();
}
void CViewMain_Recipe::ClickButtonLang()
@@ -3210,3 +3578,70 @@
pApp->ChangeDimension(m_pVisionSetDlg, nDir);
#endif // HALCON_VISION_KEY
}
+
+void CViewMain_Recipe::RefreshRadioStates()
+{
+ // 鍐呴儴鏄犲皠 lambda锛氭灇涓� -> 鎺т欢 ID
+ auto InsTypeToCtrlId = [](eViewCmdInsType t) -> UINT {
+ switch (t) {
+ case eRcp_InsType_Chip: return IDC_RDO_INSTYPE_CHIP;
+ case eRcp_InsType_Crack: return IDC_RDO_INSTYPE_CRACK;
+ case eRcp_InsType_Burr: return IDC_RDO_INSTYPE_BURR;
+ case eRcp_InsType_Chamfer: return IDC_RDO_INSTYPE_CHAMFER;
+ case eRcp_InsType_In_Chip: return IDC_RDO_INSTYPE_IN_CHIP;
+ case eRcp_InsType_In_Crack: return IDC_RDO_INSTYPE_IN_CRACK;
+ case eRcp_InsType_In_Burr: return IDC_RDO_INSTYPE_IN_BURR;
+ case eRcp_InsType_In_Chamfer: return IDC_RDO_INSTYPE_IN_CHAMFER;
+ case eRcp_InsType_TopCorner: return IDC_RDO_INSTYPE_TOP_CORNER;
+ case eRcp_InsType_BotCorner: return IDC_RDO_INSTYPE_BOT_CORNER;
+ case eRcp_InsType_RipThickness: return IDC_RDO_INSTYPE_RIP_THICKNESS;
+ default: return 0;
+ }
+ };
+
+ auto SideToCtrlId = [](eViewCmdSide s) -> UINT {
+ switch (s) {
+ case eRcp_SideRD_A: return IDC_RDO_SIDE_A_TOP;
+ case eRcp_SideRD_B: return IDC_RDO_SIDE_B_TOP;
+ case eRcp_SideRD_C: return IDC_RDO_SIDE_C_TOP;
+ case eRcp_SideRD_D: return IDC_RDO_SIDE_D_TOP;
+ case eRcp_SideRD_A_DN: return IDC_RDO_SIDE_A_BOT;
+ case eRcp_SideRD_B_DN: return IDC_RDO_SIDE_B_BOT;
+ case eRcp_SideRD_C_DN: return IDC_RDO_SIDE_C_BOT;
+ case eRcp_SideRD_D_DN: return IDC_RDO_SIDE_D_BOT;
+ case eRcp_SideRD_A_RIP: return IDC_RDO_SIDE_A_RIP;
+ case eRcp_SideRD_B_RIP: return IDC_RDO_SIDE_B_RIP;
+ case eRcp_SideRD_C_RIP: return IDC_RDO_SIDE_C_RIP;
+ case eRcp_SideRD_D_RIP: return IDC_RDO_SIDE_D_RIP;
+ default: return 0;
+ }
+ };
+
+ const UINT nInsIds[] = {
+ IDC_RDO_INSTYPE_CHIP, IDC_RDO_INSTYPE_CRACK, IDC_RDO_INSTYPE_BURR,
+ IDC_RDO_INSTYPE_CHAMFER, IDC_RDO_INSTYPE_IN_CHIP, IDC_RDO_INSTYPE_IN_CRACK,
+ IDC_RDO_INSTYPE_IN_BURR, IDC_RDO_INSTYPE_IN_CHAMFER,
+ IDC_RDO_INSTYPE_TOP_CORNER, IDC_RDO_INSTYPE_BOT_CORNER,
+ IDC_RDO_INSTYPE_RIP_THICKNESS
+ };
+
+ const UINT nSideIds[] = {
+ IDC_RDO_SIDE_A_TOP, IDC_RDO_SIDE_B_TOP, IDC_RDO_SIDE_C_TOP, IDC_RDO_SIDE_D_TOP,
+ IDC_RDO_SIDE_A_BOT, IDC_RDO_SIDE_B_BOT, IDC_RDO_SIDE_C_BOT, IDC_RDO_SIDE_D_BOT,
+ IDC_RDO_SIDE_A_RIP, IDC_RDO_SIDE_B_RIP, IDC_RDO_SIDE_C_RIP, IDC_RDO_SIDE_D_RIP
+ };
+
+ const UINT nSelIns = InsTypeToCtrlId(m_eSelectInsType);
+ for (UINT id : nInsIds) {
+ if (auto* p = (CButton*)GetDlgItem(id)) {
+ p->SetCheck(id == nSelIns ? 1 : 0);
+ }
+ }
+
+ const UINT nSelSide = SideToCtrlId(m_eSelectSide);
+ for (UINT id : nSideIds) {
+ if (auto* p = (CButton*)GetDlgItem(id)) {
+ p->SetCheck(id == nSelSide ? 1 : 0);
+ }
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.3