From 1e751a5eb3c23d932b5de94456b5a8741f28c7cc Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期六, 16 八月 2025 17:37:49 +0800
Subject: [PATCH] 1. 修复离线测试设置错误的扫描个数,应该设置的是需要扫描的个数(非相机个数)

---
 EdgeInspector_App/View/EdgeImageViewer.cpp |   99 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 1 deletions(-)

diff --git a/EdgeInspector_App/View/EdgeImageViewer.cpp b/EdgeInspector_App/View/EdgeImageViewer.cpp
index 418d499..c0bacd7 100644
--- a/EdgeInspector_App/View/EdgeImageViewer.cpp
+++ b/EdgeInspector_App/View/EdgeImageViewer.cpp
@@ -667,6 +667,8 @@
 	memDC.SetStretchBltMode(COLORONCOLOR);
 	pOldBitmap = (CBitmap*)memDC.SelectObject(&Bitmap);
 
+	DimensionDir eDim = (DimensionDir)m_nSideIdx;
+	bool bIsRipSide = (DIMENSION_A_RIP == m_nSideIdx) || (DIMENSION_B_RIP == eDim) || (DIMENSION_C_RIP == eDim) || (DIMENSION_D_RIP == eDim);
 
 	// 1. Draw Buffer Image
 	UpdateView_Image(&memDC);
@@ -688,7 +690,7 @@
 
 	// 7. Draw Exception : MODE_VIEW_EXCEPTION_AREA
 	UpdateView_ExceptionArea(&memDC);
-	
+
 	// 8. Draw Inspect : MODE_VIEW_INSPECT_AREA
 	UpdateView_InspectArea(&memDC);
 
@@ -722,6 +724,8 @@
 	UpdateView_VisionResult(&memDC);
 #endif // HALCON_VISION_KEY
 
+	// 18. Side Rip Thickness : MODE_VIEW_MEASURE
+	UpdateView_SideRipThickness(&memDC);
 
 	pDC->BitBlt(0,0,m_rtWnd.Width(),m_rtWnd.Height(),&memDC,0,0,SRCCOPY);
 	memDC.SelectObject(pOldBitmap);
@@ -2160,6 +2164,99 @@
 	memDC->SelectObject(pOldPen);
 }
 
+void CEdgeImageViewer::UpdateView_SideRipThickness(CDC* memDC)
+{
+	if (m_pBuffer == NULL || memDC == NULL || m_pGlassData == NULL || m_pRecipe == NULL) {
+		return;
+	}
+
+	DimensionDir eDim = (DimensionDir)m_nSideIdx;
+	bool bIsRipSide = (DIMENSION_A_RIP == eDim) || (DIMENSION_B_RIP == eDim) || (DIMENSION_C_RIP == eDim) || (DIMENSION_D_RIP == eDim);
+	if (!bIsRipSide) {
+		return;
+	}
+
+	CRIP_THICKNESS_PARM& rip = m_pRecipe->m_SideParam[eDim].m_RipThk;
+	if (rip.m_bUseInspect != TRUE) {
+		return;
+	}
+
+	CSide_Data* pSideData = m_pGlassData->GetSideData(eDim);
+	if (pSideData == NULL) {
+		return;
+	}
+
+	if (m_MenuStatus[MODE_VIEW_MEASURE] == FALSE) {
+		return;
+	}
+
+	CPen penOK(PS_SOLID, 1, RGB(0, 255, 0));
+	CPen penNG(PS_SOLID, 1, RGB(255, 0, 0));
+	CPen penNone(PS_DOT, 1, RGB(180, 180, 180));
+
+	CBrush brNull; brNull.CreateStockObject(NULL_BRUSH);
+	CPen* pOldPen = memDC->SelectObject(&penOK);
+	CBrush* pOldBrush = memDC->SelectObject(&brNull);
+
+	auto DrawOne = [&](const CPoint(&pts)[RIP_POINT_COUNT], int nStatus, LPCTSTR label, double value_um, int index, int nAnchorX, int dy) {
+		if (nStatus == 0) { 
+			return;
+		}
+
+		if (nStatus == 1) { 
+			memDC->SelectObject(&penOK);
+			memDC->SetTextColor(RGB(0, 255, 0));
+		}
+		else { 
+			memDC->SelectObject(&penNG);
+			memDC->SetTextColor(RGB(255, 0, 0));
+		}
+
+		CPoint p0 = GetWndPos(pts[0]);
+		CPoint p1 = GetWndPos(pts[1]);
+
+		memDC->MoveTo(p0); memDC->LineTo(p1);
+		auto Cross = [&](const CPoint& p) {
+			memDC->MoveTo(p.x - 3, p.y - 3); memDC->LineTo(p.x + 3, p.y + 3);
+			memDC->MoveTo(p.x + 3, p.y - 3); memDC->LineTo(p.x - 3, p.y + 3);
+		};
+		Cross(p0); Cross(p1);
+
+		CPoint mid{ (p0.x + p1.x) / 2, (p0.y + p1.y) / 2 };
+		CString s; s.Format(_T("%s[%02d]: %.1f um"), label, index + 1, value_um);
+
+		memDC->TextOut(nAnchorX, mid.y + dy, s);
+	};
+
+	const int DY = 16;
+	for (int i = 0; i < MAX_RIP_SAMPLE_COUNT; ++i) {
+		CPoint L0 = GetWndPos(pSideData->m_ptSideRip_Left_pxl[i][0]);
+		CPoint L1 = GetWndPos(pSideData->m_ptSideRip_Left_pxl[i][1]);
+		CPoint R0 = GetWndPos(pSideData->m_ptSideRip_Right_pxl[i][0]);
+		CPoint R1 = GetWndPos(pSideData->m_ptSideRip_Right_pxl[i][1]);
+		CPoint G0 = GetWndPos(pSideData->m_ptSideRip_Glass_pxl[i][0]);
+		CPoint G1 = GetWndPos(pSideData->m_ptSideRip_Glass_pxl[i][1]);
+
+		int nAnchorX = max(max(max(L0.x, L1.x), max(R0.x, R1.x)), max(G0.x, G1.x)) + 6;
+		if (nAnchorX > DISPLAY_FRAME_WIDTH / 2) {
+			nAnchorX = DISPLAY_FRAME_WIDTH / 2 - 100;
+		}
+
+		// Left
+		DrawOne(pSideData->m_ptSideRip_Left_pxl[i], pSideData->m_nSideRip_Left_Status[i], _T("Rip-Left"), pSideData->m_dSideRip_Left_um[i], i, nAnchorX , -DY);
+
+		// Glass
+		DrawOne(pSideData->m_ptSideRip_Glass_pxl[i], pSideData->m_nSideRip_Glass_Status[i], _T("Rip-Glass"), pSideData->m_dSideRip_Glass_um[i], i, nAnchorX, 0);
+
+		// Right
+		DrawOne(pSideData->m_ptSideRip_Right_pxl[i], pSideData->m_nSideRip_Right_Status[i], _T("Rip-Right"), pSideData->m_dSideRip_Right_um[i], i, nAnchorX, +DY);
+	}
+
+	memDC->SelectObject(pOldPen);
+	memDC->SelectObject(pOldBrush);
+	brNull.DeleteObject();
+}
+
 CRect CEdgeImageViewer::GetManualMeasureRect()
 {
 	bool bManualMeasure = m_MenuStatus[MODE_USER_SELECT];

--
Gitblit v1.9.3