mrDarker
2025-08-16 5e802e47375cb399b91f0abdc95420d6cce0b18b
EdgeInspector_App/Data/DefectStorage.cpp
@@ -1,4 +1,4 @@
#include "StdAfx.h"
#include "StdAfx.h"
#include "DefectStorage.h"
#include "SISBuffer.h"
#include "BlobStorage.h"
@@ -46,7 +46,7 @@
      delete[] m_pDefect;
   }
   // 16俺狼 咯盒阑 敌促..恐? 郴干..
   // 16俺狼 咯盒阑 敌促..恐? 郴干..
   int   DefectSapce= maxDefect+ 16;
   m_pDefect= new CDefect[DefectSapce];
@@ -309,6 +309,8 @@
   pDefect->m_bJudge_NG = TRUE;
   pDefect->m_dSizeX_um = dMeasureResult_um;
   pDefect->m_dSizeY_um = dMeasureDiff_um;
   pDefect->m_dChamfer_um = dMeasureResult_um;
   pDefect->m_dChamferOff_um = dMeasureDiff_um;
   pDefect->m_DefectInfo = defect;
   if(m_pGrabber->GetSmallImage(iScan,pDefect->m_Image
@@ -408,3 +410,42 @@
   MyLock.Unlock();
   return m_nDefect;
}
int CDefectControl::ExtractDefect_RipThickness(DimensionDir emDim, int iCam, int iScan, const CDefect_Info& defectInfo, double dMeasured_um, double dSpecDiff_um)
{
   if (m_pGrabber == NULL) {
      return m_nDefect;
   }
   CSingleLock MyLock(&m_csDefect);
   MyLock.Lock();
   if (m_nDefect >= m_maxDefect) {
      MyLock.Unlock();
      return m_nDefect;
   }
   CDefect* pDefect = GetDefect(m_nDefect);
   if (pDefect == NULL) {
      MyLock.Unlock();
      return m_nDefect;
   }
   pDefect->Reset();
   pDefect->m_bJudge_NG = TRUE;         // RIP 厚度异常即 NG
   pDefect->m_nJudge_X_um = dMeasured_um;  // 记录测得厚度
   pDefect->m_nJudge_Y_um = dSpecDiff_um;  // 记录与规格差值
   pDefect->m_DefectInfo = defectInfo;
   int nXStart = defectInfo.m_ptDefectPos_pxl.x - (DEFECTIMAGE_WIDTH / 2);
   int nYStart = defectInfo.m_ptDefectPos_pxl.y - (DEFECTIMAGE_HEIGHT / 2);
   if (!m_pGrabber->GetSmallImage(iScan, pDefect->m_Image, nXStart, nYStart, DEFECTIMAGE_WIDTH, DEFECTIMAGE_HEIGHT, FALSE)) {
      MyLock.Unlock();
      return m_nDefect;
   }
   m_nDefect++;
   MyLock.Unlock();
   return m_nDefect;
}