|
@@ -44,8 +44,9 @@ namespace OTSModelSharp
|
|
|
|
|
|
protected Queue<COTSField> fieldQueue=new Queue<COTSField>();
|
|
protected Queue<COTSField> fieldQueue=new Queue<COTSField>();
|
|
|
|
|
|
- protected IClassifyEngine m_classifyEngine;
|
|
|
|
|
|
+ protected IClassifyEngine m_classifyEngine;
|
|
|
|
|
|
|
|
+ private bool m_ifAquireClearParticleImage=false;
|
|
|
|
|
|
public CSmplMeasure( string a_strWorkingFolder, COTSSample a_pSample)
|
|
public CSmplMeasure( string a_strWorkingFolder, COTSSample a_pSample)
|
|
{
|
|
{
|
|
@@ -64,8 +65,9 @@ namespace OTSModelSharp
|
|
m_EDSController = EDSController.GetEDSController(imgwidth,imgheight,expC,ifautoid,knownelements);
|
|
m_EDSController = EDSController.GetEDSController(imgwidth,imgheight,expC,ifautoid,knownelements);
|
|
m_listHoleBSEImg = new CHoleBSEImgsList();
|
|
m_listHoleBSEImg = new CHoleBSEImgsList();
|
|
m_Sample = a_pSample;
|
|
m_Sample = a_pSample;
|
|
|
|
+ m_ifAquireClearParticleImage = FileHelper.GetIfAquireClearParticleImage();
|
|
|
|
+
|
|
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public void SetSample(COTSSample a_pSample)
|
|
public void SetSample(COTSSample a_pSample)
|
|
@@ -747,9 +749,27 @@ namespace OTSModelSharp
|
|
// image process
|
|
// image process
|
|
|
|
|
|
FieldImageProcess(curFld);
|
|
FieldImageProcess(curFld);
|
|
|
|
+
|
|
MsgFieldBSE.InitFieldBSEAnalysisPartsDataMsg();
|
|
MsgFieldBSE.InitFieldBSEAnalysisPartsDataMsg();
|
|
|
|
|
|
m_pMsrThread.SendMessageToMeasureGUI(MsgFieldBSE);
|
|
m_pMsrThread.SendMessageToMeasureGUI(MsgFieldBSE);
|
|
|
|
+
|
|
|
|
+ if (m_ifAquireClearParticleImage)
|
|
|
|
+ {
|
|
|
|
+ var listAnalysisParts = curFld.GetListAnalysisParticles();
|
|
|
|
+ foreach (var p in listAnalysisParts)
|
|
|
|
+ {
|
|
|
|
+ Rectangle r = (Rectangle)p.GetParticleRect();
|
|
|
|
+ var img = m_ScanHardwareMgr.AcquireRectangleBSEImage(r);
|
|
|
|
+ if (img != null)
|
|
|
|
+ {
|
|
|
|
+ curFld.particleImages.Add(img);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
COTSXRayParam pXRayParam = m_Sample.GetMsrParams().GetXRayParam();
|
|
COTSXRayParam pXRayParam = m_Sample.GetMsrParams().GetXRayParam();
|
|
|
|
|
|
if (pXRayParam.GetUsingXray() == true)
|
|
if (pXRayParam.GetUsingXray() == true)
|
|
@@ -869,6 +889,8 @@ namespace OTSModelSharp
|
|
curFldData.CalculateParticleAbsolutPos(m_pMsrThread.GetProjResultData().GetSEMStageData());
|
|
curFldData.CalculateParticleAbsolutPos(m_pMsrThread.GetProjResultData().GetSEMStageData());
|
|
|
|
|
|
curFldData.InitParticles(pImgProcessParam);
|
|
curFldData.InitParticles(pImgProcessParam);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
return ;
|
|
return ;
|
|
|
|
|
|
@@ -1174,7 +1196,6 @@ namespace OTSModelSharp
|
|
|
|
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1197,7 +1218,17 @@ namespace OTSModelSharp
|
|
log.Error("SaveFieldFiles: save BSE file failed.");
|
|
log.Error("SaveFieldFiles: save BSE file failed.");
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+ if (fldData.particleImages.Count > 0)
|
|
|
|
+ {
|
|
|
|
+ for (int i=0;i<fldData.particleImages.Count;i++)
|
|
|
|
+ {
|
|
|
|
+ strBSEFilePathname= m_pSampleRstFile.GetParticleImageFolder() + "\\" + sFieldId +"_" +i.ToString()+pBSEImgFileMgr.BMP_IMG_FILE_EXT;
|
|
|
|
|
|
|
|
+ pBSEImgFileMgr.SetBSEImg(fldData.particleImages[i]);
|
|
|
|
+ pBSEImgFileMgr.SaveIntoBitmap(strBSEFilePathname);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
// IncA Data list
|
|
// IncA Data list
|
|
|
|
|
|
CIncAFileMgr pDBFileMgr = m_pSampleRstFile.DBFileMgr;
|
|
CIncAFileMgr pDBFileMgr = m_pSampleRstFile.DBFileMgr;
|