|
@@ -0,0 +1,2223 @@
|
|
|
+using OTSDataType;
|
|
|
+using static OTSModelSharp.ResourceManage.ResourceID;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Drawing;
|
|
|
+using static OTSDataType.otsdataconst;
|
|
|
+using OTSModelSharp.ResourceManage;
|
|
|
+using OTSModelSharp;
|
|
|
+using System.IO;
|
|
|
+
|
|
|
+namespace OTSMeasureApp
|
|
|
+{
|
|
|
+ public enum OTS_ITEM_TYPES
|
|
|
+ {
|
|
|
+ INVALID = -1,
|
|
|
+
|
|
|
+ BOOL = 0,
|
|
|
+ INT = 1,
|
|
|
+ DOUBLE = 2,
|
|
|
+ STRING = 3,
|
|
|
+ COMBO = 4,
|
|
|
+ TIME = 5,
|
|
|
+ TIME_SPAN = 6
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ public class CTreeSampleParam
|
|
|
+ {
|
|
|
+ public string sSampleTitleName; //样品树显示的样品标题名称
|
|
|
+ public string sWorkSampleName; // 工作样品名称
|
|
|
+ public bool bSwitch; //样品执行开关
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ public struct SampleMeasurePara
|
|
|
+ {
|
|
|
+
|
|
|
+ public string sSampleName;
|
|
|
+ public string sampleHoleName;
|
|
|
+ public ShapeType iShape; //测量区域形状
|
|
|
+
|
|
|
+ public List<PointF> DrawPolygonPointList;//多边形点集合
|
|
|
+ public RectangleF MeasureRect; //测量区域大小
|
|
|
+ };
|
|
|
+
|
|
|
+ //样品属性数据
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public class OTSSampleVisualPropertyInfo
|
|
|
+ {
|
|
|
+ const string NOT_APPLIED = "N/A";
|
|
|
+ COTSSample m_Sample;
|
|
|
+ private List<CPropItemGrp> m_listPropItemGrp;
|
|
|
+ private List<CPropItem> sampleDataList;//保持一个所有条目列表,目的为了兼容以前的代码
|
|
|
+ private OTS_SysType_ID m_systype;
|
|
|
+ //构造函数
|
|
|
+ public OTSSampleVisualPropertyInfo(COTSSample WSample,OTS_SysType_ID systype)
|
|
|
+ {
|
|
|
+ m_Sample = WSample;
|
|
|
+ m_systype = systype;
|
|
|
+
|
|
|
+ SMeasurePara = new SampleMeasurePara();
|
|
|
+ SampleDataList = new List<CPropItem>();
|
|
|
+ TSampleParam = new CTreeSampleParam();
|
|
|
+
|
|
|
+
|
|
|
+ m_listPropItemGrp = new List<CPropItemGrp>();
|
|
|
+ InitPropItemGrps();
|
|
|
+ UpdatePropertyData();
|
|
|
+
|
|
|
+ }
|
|
|
+ public void InitPropItemGrps()
|
|
|
+ {
|
|
|
+ this.ClearGrp();
|
|
|
+ //设置工作样品属性项
|
|
|
+
|
|
|
+ if (m_systype == OTS_SysType_ID.CleannessA)
|
|
|
+ {
|
|
|
+ SetPropItemGrpsWithOutIncASysLib();
|
|
|
+ }
|
|
|
+ else if (m_systype == OTS_SysType_ID.IncA)
|
|
|
+ {
|
|
|
+ SetPropItemGrpsForIncA();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //样品的标题名 (Treeview的根节点名)
|
|
|
+ this.sSampleSoluName = m_Sample.GetName();//.GetFileName();
|
|
|
+
|
|
|
+ // Treeview 的样品信息
|
|
|
+ TSampleParam.sSampleTitleName = m_Sample.GetName();
|
|
|
+
|
|
|
+ //获得 样品属性值
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ bSwitch = m_Sample.GetSwitch();
|
|
|
+
|
|
|
+
|
|
|
+ SMeasurePara.sSampleName = m_Sample.GetName();
|
|
|
+ // 获取测量区域形状
|
|
|
+ SMeasurePara.iShape = (ShapeType)m_Sample.GetMsrDomain().GetShape();
|
|
|
+ //获取样品孔名称
|
|
|
+ SMeasurePara.sampleHoleName = m_Sample.GetSampleHoleName();
|
|
|
+
|
|
|
+ RectangleF rec = m_Sample.GetMsrDomain().GetDomainRect();
|
|
|
+ SMeasurePara.MeasureRect = new Rectangle((int)rec.X, (int)rec.Y, (int)rec.Width, (int)rec.Height);
|
|
|
+
|
|
|
+
|
|
|
+ TSampleParam.sWorkSampleName = m_Sample.GetName();
|
|
|
+ TSampleParam.bSwitch = m_Sample.GetSwitch();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ public bool GetPropBOOLData(int a_nId, out bool a_bValue)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case (int)OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH:
|
|
|
+ {
|
|
|
+ a_bValue = m_Sample.GetSwitch() ;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case (int)OTS_SAMPLE_PROP_GRID_ITEMS.SYS_STD_SWITCH:
|
|
|
+ {
|
|
|
+ a_bValue = m_poMsrParams.GetSysSTDSwitch();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case (int)OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY:
|
|
|
+ {
|
|
|
+ a_bValue = m_poMsrParams.GetXRayParam().GetUsingXray();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ a_bValue = false;
|
|
|
+ // something wrong, return FALSE
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // ok, return TRUE
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool GetPropIntData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, out int a_nValue)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamParticles();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamFields();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamMeasTime();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_AREA:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamArea();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetImageProcessParam().GetBGGray().GetStart();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetImageProcessParam().GetBGGray().GetEnd();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetImageProcessParam().GetParticleGray().GetStart();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetImageProcessParam().GetParticleGray().GetEnd();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetXRayParam().GetAnalyExpCount();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrParams.GetXRayParam().GetMidAnalyAQTime();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
|
|
|
+ {
|
|
|
+ a_nValue = m_poSEMDataMsr.GetTotalFields();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS:
|
|
|
+ {
|
|
|
+ a_nValue = m_Status.GetCompletedFields();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrResults.GetTotalParticleNumber();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetXRayParam().GetFastXrayTime();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit:
|
|
|
+ {
|
|
|
+ a_nValue = m_poMsrParams.GetXRayParam().GetXrayLimit();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ // something wrong, return false
|
|
|
+ a_nValue = -1;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ //样品属性数据
|
|
|
+ public bool SetParamVal(OTS_SAMPLE_PROP_GRID_ITEMS ItemId, OTS_ITEM_TYPES ValType, object objVal)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+ var logstr = "set value " + ItemId.ToString() + "=" + objVal.ToString();
|
|
|
+ NLog.LogManager.GetCurrentClassLogger().Warn(logstr);
|
|
|
+
|
|
|
+ bool bSetFalg = true;
|
|
|
+
|
|
|
+ switch (ItemId)
|
|
|
+ {
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH:
|
|
|
+ {
|
|
|
+ m_Sample.SetSwitch((bool)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.SYS_STD_SWITCH:
|
|
|
+ {
|
|
|
+ m_poMsrParams.SetSysSTDSwitch((bool)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY:
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ m_poMsrParams.GetXRayParam().SetUsingXray((bool)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE:
|
|
|
+ {
|
|
|
+ // value validation
|
|
|
+ if (STOP_PARAM_PARTICLE_MIN >= (int)objVal || (int)objVal > STOP_PARAM_PARTICLE_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (m_poMsrParams.GetImageScanParam().GetStopParamParticles() != (int)objVal)
|
|
|
+ {
|
|
|
+ m_poMsrParams.GetImageScanParam().SetStopParamParticles((int)objVal);
|
|
|
+ m_Status.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD:
|
|
|
+ {
|
|
|
+ if (STOP_PARAM_FIELD_MIN >= (int)objVal || (int)objVal > STOP_PARAM_FIELD_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (m_poMsrParams.GetImageScanParam().GetStopParamFields() != (int)objVal)
|
|
|
+ {
|
|
|
+ m_poMsrParams.GetImageScanParam().SetStopParamFields((int)objVal);
|
|
|
+ m_Status.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME:
|
|
|
+ {
|
|
|
+ if (STOP_PARAM_MSR_TINE_MIN >= (int)objVal || (int)objVal > STOP_PARAM_MSR_TINE_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (m_poMsrParams.GetImageScanParam().GetStopParamMeasTime() != (int)objVal)
|
|
|
+ {
|
|
|
+ m_poMsrParams.GetImageScanParam().SetStopParamMeasTime((int)objVal);
|
|
|
+ m_Status.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_AREA:
|
|
|
+ {
|
|
|
+ if (STOP_PARAM_MSR_TINE_MIN >= (int)objVal || (int)objVal > STOP_PARAM_FIELD_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (m_poMsrParams.GetImageScanParam().GetStopParamArea() != (int)objVal)
|
|
|
+ {
|
|
|
+ m_poMsrParams.GetImageScanParam().SetStopParamArea((int)objVal);
|
|
|
+ m_Status.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN:
|
|
|
+ {
|
|
|
+ if (GRAY_LEVEL_MIN > (int)objVal || (int)objVal > GRAY_LEVEL_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (m_poMsrParams == null)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ COTSImageProcParam pImageProcessParam = m_poMsrParams.GetImageProcessParam();
|
|
|
+ if (pImageProcessParam == null)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ CIntRange oBGGray = m_poMsrParams.GetImageProcessParam().GetBGGray();
|
|
|
+ oBGGray.SetStart((int)objVal);
|
|
|
+ m_poMsrParams.GetImageProcessParam().SetBGGray(oBGGray);
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX:
|
|
|
+ {
|
|
|
+ if (GRAY_LEVEL_MIN > (int)objVal || (int)objVal > GRAY_LEVEL_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ CIntRange oBGGray = m_poMsrParams.GetImageProcessParam().GetBGGray();
|
|
|
+ oBGGray.SetEnd((int)objVal);
|
|
|
+ m_poMsrParams.GetImageProcessParam().SetBGGray(oBGGray);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN:
|
|
|
+ {
|
|
|
+ if (GRAY_LEVEL_MIN > (int)objVal || (int)objVal > GRAY_LEVEL_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ CIntRange oParticleGray = m_poMsrParams.GetImageProcessParam().GetParticleGray();
|
|
|
+ oParticleGray.SetStart((int)objVal);
|
|
|
+ m_poMsrParams.GetImageProcessParam().SetParticleGray(oParticleGray);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX:
|
|
|
+ {
|
|
|
+ if (GRAY_LEVEL_MIN > (int)objVal || (int)objVal > GRAY_LEVEL_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ CIntRange oParticleGray = m_poMsrParams.GetImageProcessParam().GetParticleGray();
|
|
|
+ oParticleGray.SetEnd((int)objVal);
|
|
|
+ m_poMsrParams.GetImageProcessParam().SetParticleGray(oParticleGray);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS:
|
|
|
+ {
|
|
|
+ if (COUNTS_MIN > (int)objVal)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poMsrParams.GetXRayParam().SetAnalyExpCount((int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
|
|
|
+ {
|
|
|
+ if (0 >= (int)objVal)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poMsrParams.GetXRayParam().SetMidAnalyAQTime((int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME:
|
|
|
+ {
|
|
|
+ if (0 >= (int)objVal)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poMsrParams.GetXRayParam().SetFastXrayTime((int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit:
|
|
|
+ {
|
|
|
+ if (0 >= (int)objVal)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poMsrParams.GetXRayParam().SetXrayLimit((int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS:
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE:
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
|
|
|
+ {
|
|
|
+ // value validation
|
|
|
+ if ((double)objVal < MAGNIFICATION_MIN || (double)objVal > MAGNIFICATION_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poSEMDataMsr.SetMagnification((double)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGERESOLUTION_SIZE:
|
|
|
+ {
|
|
|
+ if ((double)objVal < RESOLUTION_MIN || (double)objVal > RESOLUTION_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ int nScanFieldSize = 0;
|
|
|
+ int nScanFieldHeight = 0;
|
|
|
+ m_Sample.CalculateScanFieldSize((double)objVal, ref nScanFieldSize, ref nScanFieldHeight);
|
|
|
+
|
|
|
+ m_poSEMDataMsr.SetScanFieldWidth(nScanFieldSize);
|
|
|
+ m_poSEMDataMsr.SetScanFieldHeight(nScanFieldHeight);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN:
|
|
|
+ {
|
|
|
+ if (PARTICLE_AREA_MIN > (double)objVal || (double)objVal > PARTICLE_AREA_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ CDoubleRange oIncArea = new CDoubleRange();
|
|
|
+ double start = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetStart();
|
|
|
+ double end = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetEnd();
|
|
|
+ oIncArea.SetStart((double)objVal);
|
|
|
+ oIncArea.SetEnd(end);
|
|
|
+ m_poMsrParams.GetImageProcessParam().SetIncAreaRange(oIncArea);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX:
|
|
|
+ {
|
|
|
+ if (PARTICLE_AREA_MIN > (double)objVal || (double)objVal > PARTICLE_AREA_MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ CDoubleRange oIncArea = new CDoubleRange();
|
|
|
+ double start = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetStart();
|
|
|
+ double end = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetEnd();
|
|
|
+ oIncArea.SetStart(start);
|
|
|
+ oIncArea.SetEnd((double)objVal);
|
|
|
+ m_poMsrParams.GetImageProcessParam().SetIncAreaRange(oIncArea);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE:
|
|
|
+ {
|
|
|
+ if (0 >= (double)objVal)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poMsrParams.GetXRayParam().SetQuantifyMinSize((double)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.RATIO:
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA:
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA:
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME:
|
|
|
+ {
|
|
|
+ string m_strName=m_Sample.GetName();
|
|
|
+ //we think the samplename as the Identification of the sample,if we change the name then reset the status.
|
|
|
+ //so we can remeasure the sample by change the sample name.
|
|
|
+ if (m_strName != (string)objVal)
|
|
|
+ {
|
|
|
+ m_strName = (string)objVal;
|
|
|
+ m_Status = new CMsrSampleStatus();
|
|
|
+ }
|
|
|
+ m_Sample.SetName(m_strName);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
|
|
|
+ {
|
|
|
+ if (m_poMsrParams.GetImageScanParam().GetStopMode() != (string)objVal)
|
|
|
+ {
|
|
|
+ m_poMsrParams.GetImageScanParam().SetStopMode((string)objVal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME:
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU:
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY:
|
|
|
+ {
|
|
|
+ if (STEEL_TECHNOLOGY.GeneralProcessMode > (STEEL_TECHNOLOGY)(int)objVal || (STEEL_TECHNOLOGY)(int)objVal > STEEL_TECHNOLOGY.RareEarthMode)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ m_poMsrParams.SetSteelTechnology((STEEL_TECHNOLOGY)(int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.START_PHOTO_MODE:
|
|
|
+ {
|
|
|
+ if (OTS_GET_IMAGE_MODE.FROM_CENTER > (OTS_GET_IMAGE_MODE)(int)objVal || (OTS_GET_IMAGE_MODE)(int)objVal > OTS_GET_IMAGE_MODE.DOWN_TO_UP)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ m_poMsrParams.GetImageScanParam().SetStartImageMode((OTS_GET_IMAGE_MODE)(int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
|
|
|
+ {
|
|
|
+ if (OTS_IMAGE_SCANSPEED_OPTIONS.low > (OTS_IMAGE_SCANSPEED_OPTIONS)(int)objVal || (OTS_IMAGE_SCANSPEED_OPTIONS)(int)objVal > OTS_IMAGE_SCANSPEED_OPTIONS.high)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poMsrParams.GetImageScanParam().SetScanImageSpeed((OTS_IMAGE_SCANSPEED_OPTIONS)(int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
|
|
|
+ {
|
|
|
+ if (OTS_IMAGE_RESULOTION_OPTIONS._512_384 > (OTS_IMAGE_RESULOTION_OPTIONS)(int)objVal || (OTS_IMAGE_RESULOTION_OPTIONS)(int)objVal > OTS_IMAGE_RESULOTION_OPTIONS._4096_3072)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poMsrParams.GetImageScanParam().SetImageResulotion((OTS_IMAGE_RESULOTION_OPTIONS)(int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.XRAYSCAN_MODE:
|
|
|
+ {
|
|
|
+ if (OTS_X_RAY_SCAN_MODE.PointMode > (OTS_X_RAY_SCAN_MODE)(int)objVal || (OTS_X_RAY_SCAN_MODE)(int)objVal > OTS_X_RAY_SCAN_MODE.FeatureMode)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_poMsrParams.GetXRayParam().SetScanMode((OTS_X_RAY_SCAN_MODE)(int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.MEMBRANE_TYPE:
|
|
|
+ {
|
|
|
+ if (MEMBRANE_TYPE.MIN > (MEMBRANE_TYPE)(int)objVal || (MEMBRANE_TYPE)(int)objVal > MEMBRANE_TYPE.MAX)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ m_Sample.SetMembraneType((MEMBRANE_TYPE)(int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE:
|
|
|
+ {
|
|
|
+
|
|
|
+ m_poMsrParams.GetImageProcessParam().SetBGRemoveType((OTS_BGREMOVE_TYPE)(int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE:
|
|
|
+ {
|
|
|
+
|
|
|
+ m_poMsrParams.GetImageProcessParam().SetAutoBGRemoveType((OTS_AUTOBGREMOVE_TYPE)(int)objVal);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+
|
|
|
+ bSetFalg = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (bSetFalg)
|
|
|
+ {
|
|
|
+ m_Sample.GetMsrStatus().SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);//change the state so that this sample can be processed again.
|
|
|
+ }
|
|
|
+
|
|
|
+ return bSetFalg;
|
|
|
+ }
|
|
|
+ // get std file list, a_nPos = -1, current do not use any STD lib, a_nPos = 0, current use STD lib.
|
|
|
+ private bool GetSTDFileList(ref int a_nPos, ref List<String> a_listSTDLibName)
|
|
|
+ {
|
|
|
+
|
|
|
+ String a_strFolderName = COTSDefaultParam.GetPartSTDLibFolderName();
|
|
|
+
|
|
|
+
|
|
|
+ if (a_strFolderName == "")
|
|
|
+ {
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // lib name list
|
|
|
+ a_listSTDLibName.Clear();
|
|
|
+
|
|
|
+ // file list
|
|
|
+ List<String> listSTDFile = new List<string>();
|
|
|
+ listSTDFile.Clear();
|
|
|
+ const String STD_LIB_EXT = ".db";
|
|
|
+ // get file list
|
|
|
+ if (!GetFileNameList(a_strFolderName, STD_LIB_EXT, listSTDFile))
|
|
|
+ {
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (var file in listSTDFile)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ a_listSTDLibName.Add(file);
|
|
|
+ }
|
|
|
+ a_listSTDLibName.Add("NoSTDDB");
|
|
|
+
|
|
|
+
|
|
|
+ //before the use choose one STD, always should be null.
|
|
|
+ a_nPos = -1;
|
|
|
+
|
|
|
+ String sCurrentSTD;
|
|
|
+ CSampleParam pCurrentParam;
|
|
|
+ COTSSample pSample = m_Sample;
|
|
|
+
|
|
|
+ pCurrentParam = pSample.GetMsrParams();
|
|
|
+
|
|
|
+
|
|
|
+ //将当前使用的数据库的名字与下拉菜单的名字对应起来
|
|
|
+ sCurrentSTD = pCurrentParam.GetSTDName();
|
|
|
+ for (int i = 0; i < (int)a_listSTDLibName.Count; i++)
|
|
|
+ {
|
|
|
+ a_nPos++;
|
|
|
+ if (a_listSTDLibName[i].CompareTo(sCurrentSTD) == 0)
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ // get file name list in a folder
|
|
|
+ private bool GetFileNameList(String a_strFolderName, String a_strFileType, List<String> a_listFileName)
|
|
|
+ {
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+
|
|
|
+ string path = a_strFolderName;
|
|
|
+ List<string> lineStringList = new List<string>();//存储所有读取到的文件
|
|
|
+ DirectoryInfo[] dateDirArr = new DirectoryInfo(path).GetDirectories(); //取指定路径下的所有目录
|
|
|
+
|
|
|
+ string[] dir = Directory.GetDirectories(path); //文件夹列表
|
|
|
+ DirectoryInfo fdir = new DirectoryInfo(path);
|
|
|
+ FileInfo[] files = fdir.GetFiles();
|
|
|
+ foreach (FileInfo file in files)
|
|
|
+ {
|
|
|
+ string extensionName = Path.GetExtension(file.FullName);
|
|
|
+ if (extensionName == a_strFileType)
|
|
|
+ {
|
|
|
+ string FileNameWithoutExtension = Path.GetFileNameWithoutExtension(file.FullName);
|
|
|
+ a_listFileName.Add(FileNameWithoutExtension);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ catch (Exception pe)
|
|
|
+ {
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+ private bool ChangeSTDFromList(int a_nPos)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ String a_strFolderName = COTSDefaultParam.GetPartSTDLibFolderName();
|
|
|
+ if (a_strFolderName == "")
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // file list
|
|
|
+ List<String> listSTDFile = new List<string>();
|
|
|
+ listSTDFile.Clear();
|
|
|
+ const String STD_LIB_EXT = ".db";
|
|
|
+ // get file list
|
|
|
+ if (!GetFileNameList(a_strFolderName, STD_LIB_EXT, listSTDFile))
|
|
|
+ {
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> listSTDLibName = new List<string>();
|
|
|
+ listSTDLibName.Clear();
|
|
|
+
|
|
|
+ foreach (var file in listSTDFile)
|
|
|
+ {
|
|
|
+ //string fileName = file.Left(file.GetLength() - 3);
|
|
|
+ String fileName = file;
|
|
|
+ listSTDLibName.Add(fileName);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (a_nPos > (int)listSTDLibName.Count)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ String STDName = listSTDLibName[a_nPos];
|
|
|
+
|
|
|
+ // updata STD to working sample
|
|
|
+ COTSSample pSample = m_Sample;
|
|
|
+
|
|
|
+
|
|
|
+ CSampleParam pParam = pSample.GetMsrParams();
|
|
|
+
|
|
|
+ pParam.SetSTDName(STDName);
|
|
|
+ pSample.SetMsrParams(pParam);
|
|
|
+
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+ public bool SetPropItemGrpsForIncA()
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+
|
|
|
+ if (m_listPropItemGrp != null)
|
|
|
+ {
|
|
|
+ if (m_listPropItemGrp.Count > 0)
|
|
|
+ {
|
|
|
+ m_listPropItemGrp.Clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // property items group
|
|
|
+ OTS_SAMPLE_PROP_GRID_ITEM_GROUPS a_nId;
|
|
|
+ for (int i = (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MIN; i <= (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MAX; i++)
|
|
|
+ {
|
|
|
+
|
|
|
+ // items list
|
|
|
+ List<CPropItem> a_listPropItems = new List<CPropItem>();
|
|
|
+ a_nId = (OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)i;
|
|
|
+ if (m_poMsrParams.m_runmode == RunMode.PlainMode)
|
|
|
+ {
|
|
|
+ if (a_nId != OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL)
|
|
|
+ {
|
|
|
+ break;//if it's plainmode then only display the general parameter section.
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ CPropItemGrp poPropItemGrp = new CPropItemGrp();
|
|
|
+ // property items group name
|
|
|
+ string strGrpName = string.Empty;
|
|
|
+ strGrpName = ResourceData.GetSourceTitleString((OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)a_nId);
|
|
|
+ //if (strGrpName == "")
|
|
|
+ //{
|
|
|
+ // return false;
|
|
|
+ //}
|
|
|
+ // group name and id
|
|
|
+ poPropItemGrp.SetSTitle(strGrpName);
|
|
|
+ poPropItemGrp.SetGroupId(a_nId);
|
|
|
+ // set group items list
|
|
|
+ OTS_SAMPLE_PROP_GRID_ITEMS nItemId;
|
|
|
+ CPropItem poPropItem;
|
|
|
+ bool bShow = true;
|
|
|
+ //分组编号
|
|
|
+ //int a_nId = ResourceID.GrpGeneral;
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpGeneral;
|
|
|
+ // name
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // hole
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // switch
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // system STD
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SYS_STD_SWITCH;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // STD file name
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ int val = 0;
|
|
|
+ List<string> comboDownlist = new List<string>();
|
|
|
+ GetSTDFileList(ref val, ref comboDownlist);
|
|
|
+ poPropItem.comboDownList = comboDownlist;
|
|
|
+ poPropItem.SetSampleVal(val);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+ // Steel technology
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGESCAN:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpImageScan;
|
|
|
+ // start mode
|
|
|
+ COTSImgScanPrm pScanParam = m_poMsrParams.GetImageScanParam();
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_PHOTO_MODE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ //// stop mode
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ //// stop parameter
|
|
|
+
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // field
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // used time
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // area
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // scan speed
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // image resolution
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGE_PROCESS:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpImageProcess;
|
|
|
+ COTSImageProcParam pProcParam = m_poMsrParams.GetImageProcessParam();
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ switch (m_poMsrParams.GetImageProcessParam().GetBGRemoveType())
|
|
|
+ {
|
|
|
+ case OTS_BGREMOVE_TYPE.AUTO:
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ // particle area min
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // particle area max
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ break;
|
|
|
+ case OTS_BGREMOVE_TYPE.MANUAL:
|
|
|
+
|
|
|
+
|
|
|
+ // BG gray level min
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // BG gray level max
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ //---------------------------------------
|
|
|
+ // particle gray level min
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // particle gray level max
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ //----------------------------------------
|
|
|
+
|
|
|
+ // particle area min
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // particle area max
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.XRAY:
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ // UsingXray
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+ //quantify size
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ // scan mode
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAYSCAN_MODE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // analysis
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION;//big particle AQTime
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ //fast xray time.
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME;//small particle AQTime
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ // analysis counts
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // XrayLimit
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.SEM:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpSEMParameter;
|
|
|
+ // does SEM data (measure) set?
|
|
|
+ CSEMDataMsr m_TempSEMDataMsr = new CSEMDataMsr();
|
|
|
+ if ((m_poSEMDataMsr.GetScanFieldSize100() == m_TempSEMDataMsr.GetScanFieldSize100())
|
|
|
+ && (m_poSEMDataMsr.GetTotalFields() == m_TempSEMDataMsr.GetTotalFields())
|
|
|
+ && (m_poSEMDataMsr.GetWorkingDistance() == m_TempSEMDataMsr.GetWorkingDistance())
|
|
|
+ && (m_poSEMDataMsr.GetScanFieldSize() == m_TempSEMDataMsr.GetScanFieldSize()))
|
|
|
+ {
|
|
|
+ // magnification
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // pixel size
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGERESOLUTION_SIZE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // working distance
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total field
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total area
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // magnification
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // pixel size
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGERESOLUTION_SIZE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // working distance
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total field
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total area
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_STATUS:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpMeasureState;
|
|
|
+ // measure status
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // has measure result?
|
|
|
+ if (m_Sample. HasMeasureResult())
|
|
|
+ {
|
|
|
+ // start time
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // used time
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME_SPAN, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // finish time
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // completed fields
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_RESULTS:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpMeasureResult;
|
|
|
+ // has measure result?
|
|
|
+ if (m_Sample. HasMeasureResult())
|
|
|
+ {
|
|
|
+
|
|
|
+ // radio
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.RATIO;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total measured area
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total particles
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total particle area
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ // something wrong here, return nullptr
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ poPropItemGrp.SetSampleDataList(a_listPropItems);
|
|
|
+ this.AddASampleDataGrp(poPropItemGrp);
|
|
|
+ }
|
|
|
+ // return property items group
|
|
|
+ return true; ;
|
|
|
+ }
|
|
|
+ public bool SetPropItemGrpsWithOutIncASysLib()
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+ if (m_listPropItemGrp != null)
|
|
|
+ {
|
|
|
+ if (m_listPropItemGrp.Count > 0)
|
|
|
+ {
|
|
|
+ m_listPropItemGrp.Clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // property items group
|
|
|
+ OTS_SAMPLE_PROP_GRID_ITEM_GROUPS a_nId;
|
|
|
+ for (int i = (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MIN; i <= (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MAX; i++)
|
|
|
+ {
|
|
|
+
|
|
|
+ List<CPropItem> a_listPropItems = new List<CPropItem>();
|
|
|
+ a_nId = (OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)i;
|
|
|
+ if (m_poMsrParams.m_runmode == RunMode.PlainMode)
|
|
|
+ {
|
|
|
+ if (a_nId != OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL)
|
|
|
+ {
|
|
|
+ break;//if it's plain mode then only display the general parameter section.
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ CPropItemGrp poPropItemGrp = new CPropItemGrp();
|
|
|
+ // property items group name
|
|
|
+ string strGrpName = string.Empty;
|
|
|
+ strGrpName = ResourceData.GetSourceTitleString((OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)a_nId);
|
|
|
+ if (strGrpName == "")
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // group name and id
|
|
|
+ poPropItemGrp.SetSTitle(strGrpName);
|
|
|
+ poPropItemGrp.SetGroupId(a_nId);
|
|
|
+ // set group items list
|
|
|
+ OTS_SAMPLE_PROP_GRID_ITEMS nItemId;
|
|
|
+ CPropItem poPropItem;
|
|
|
+ bool bShow = true;
|
|
|
+ //分组编号
|
|
|
+ //int a_nId = ResourceID.GrpGeneral;
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL:
|
|
|
+ {
|
|
|
+ a_nId = ResourceID.GrpGeneral;
|
|
|
+ // name
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // hole
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // switch
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // STD file name
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGESCAN:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpImageScan;
|
|
|
+ // start mode
|
|
|
+ COTSImgScanPrm pScanParam = m_poMsrParams.GetImageScanParam();
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_PHOTO_MODE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ //// stop mode
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+ // particle
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // used time
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+ // area
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, false);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // scan speed
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // image resolution
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGE_PROCESS:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpImageProcess;
|
|
|
+ COTSImageProcParam pProcParam = m_poMsrParams.GetImageProcessParam();
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ switch (m_poMsrParams.GetImageProcessParam().GetBGRemoveType())
|
|
|
+ {
|
|
|
+ case OTS_BGREMOVE_TYPE.AUTO:
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ // particle area min
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // particle area max
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ break;
|
|
|
+ case OTS_BGREMOVE_TYPE.MANUAL:
|
|
|
+
|
|
|
+
|
|
|
+ // BG gray level min
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // BG gray level max
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ //here,no longer consider the gray range of particles,for we can get the same result by regulate the background range.(gsp 2021.8.13)
|
|
|
+ //---------------------------------------------
|
|
|
+ // particle gray level min
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // particle gray level max
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ //----------------------------------------------
|
|
|
+
|
|
|
+ // particle area min
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // particle area max
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.XRAY:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpXray;
|
|
|
+ //COTSXRayParam pXrayParam = m_poMsrParams.GetXRayParam();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //using xray
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // scan mode
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAYSCAN_MODE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ //quantify analysis min size
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // analysis
|
|
|
+
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ //fast xray time.
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // analysis counts
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // XrayLimit
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.SEM:
|
|
|
+ {
|
|
|
+
|
|
|
+ CSEMDataMsr m_TempSEMDataMsr = new CSEMDataMsr();
|
|
|
+ if ((m_poSEMDataMsr.GetScanFieldSize100() == m_TempSEMDataMsr.GetScanFieldSize100())
|
|
|
+ && (m_poSEMDataMsr.GetTotalFields() == m_TempSEMDataMsr.GetTotalFields())
|
|
|
+ && (m_poSEMDataMsr.GetWorkingDistance() == m_TempSEMDataMsr.GetWorkingDistance())
|
|
|
+ && (m_poSEMDataMsr.GetScanFieldSize() == m_TempSEMDataMsr.GetScanFieldSize()))
|
|
|
+ {
|
|
|
+ // magnification
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // pixel size
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGERESOLUTION_SIZE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // working distance
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total field
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total area
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // magnification
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // pixel size
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGERESOLUTION_SIZE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // working distance
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total field
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total area
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_STATUS:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpMeasureState;
|
|
|
+ // measure status
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.STRING, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // has measure result?
|
|
|
+ if (m_Sample. HasMeasureResult())
|
|
|
+ {
|
|
|
+ // start time
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // used time
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME_SPAN, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // finish time
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.TIME, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // completed fields
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_RESULTS:
|
|
|
+ {
|
|
|
+ //a_nId = ResourceID.GrpMeasureResult;
|
|
|
+ // has measure result?
|
|
|
+ if (m_Sample. HasMeasureResult())
|
|
|
+ {
|
|
|
+
|
|
|
+ // radio
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.RATIO;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total measured area
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total particles
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+
|
|
|
+ // total particle area
|
|
|
+ poPropItem = new CPropItem();
|
|
|
+ nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA;
|
|
|
+ poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.INT, true, true);
|
|
|
+ a_listPropItems.Add(poPropItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ // something wrong here, return nullptr
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ poPropItemGrp.SetSampleDataList(a_listPropItems);
|
|
|
+ this.AddASampleDataGrp(poPropItemGrp);
|
|
|
+
|
|
|
+ }
|
|
|
+ // return property items group
|
|
|
+ return true; ;
|
|
|
+ }
|
|
|
+ public void UpdatePropertyData()
|
|
|
+ {
|
|
|
+ for (int j = 0; j < SampleDataList.Count; j++)
|
|
|
+ {
|
|
|
+ var propertyItem = SampleDataList[j];
|
|
|
+ var provertyValue = GetItemValueStr(propertyItem.SampleId);
|
|
|
+ propertyItem.SetSampleVal(provertyValue);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ public bool SetSTDFileName(int iNamePos)
|
|
|
+ {
|
|
|
+ if (!ChangeSTDFromList(iNamePos))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ public string GetItemValueStr(OTS_SAMPLE_PROP_GRID_ITEMS ItemID)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+ COTSSample cSample = new COTSSample();
|
|
|
+ //CString strItemID = ItemId;
|
|
|
+ string valStr = "";
|
|
|
+ CPropItem itm = GetPropItemById(ItemID);
|
|
|
+ switch (itm.SampleValType)
|
|
|
+ {
|
|
|
+ case OTS_ITEM_TYPES.BOOL:
|
|
|
+ {
|
|
|
+ bool bflag;
|
|
|
+ if (GetPropBOOLData((int)ItemID, out bflag))
|
|
|
+ {
|
|
|
+ valStr = bflag ? "1" : "0";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_ITEM_TYPES.INT:
|
|
|
+ {
|
|
|
+ int iVal = 0;
|
|
|
+ if (GetPropIntData(ItemID, out iVal))
|
|
|
+ {
|
|
|
+ valStr = iVal.ToString();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_ITEM_TYPES.DOUBLE:
|
|
|
+ {
|
|
|
+ double dVal = 0;
|
|
|
+ if (GetPropdoubleData(ItemID, out dVal))
|
|
|
+ {
|
|
|
+ valStr = dVal.ToString("f2");//点后面几个0就保留几位
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_ITEM_TYPES.STRING:
|
|
|
+ {
|
|
|
+ string StrVal = "";
|
|
|
+ if (GetPropStringData(ItemID, out StrVal))
|
|
|
+ {
|
|
|
+ valStr = StrVal;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_ITEM_TYPES.COMBO:
|
|
|
+ {
|
|
|
+ List<string> StrVal = new List<string>();
|
|
|
+ if (GetPropComboStrings(ItemID,ref StrVal))
|
|
|
+ {
|
|
|
+ if (StrVal.Count > 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ int index = 0;
|
|
|
+ GetPropComboData(ItemID, out index);
|
|
|
+ if (index > (int)StrVal.Count)
|
|
|
+ {
|
|
|
+ valStr = StrVal[0];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ valStr = StrVal[index];
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_ITEM_TYPES.TIME:
|
|
|
+ {
|
|
|
+ System.DateTime dt = new System.DateTime();
|
|
|
+ if (GetPropTimeData(ItemID, ref dt))
|
|
|
+ {
|
|
|
+ valStr = dt.ToString();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_ITEM_TYPES.TIME_SPAN:
|
|
|
+ {
|
|
|
+ System.TimeSpan TimeSpanValue = new System.TimeSpan();
|
|
|
+ if (GetPropTimeSpanData(ItemID, ref TimeSpanValue))
|
|
|
+ {
|
|
|
+ int v = (int)TimeSpanValue.TotalSeconds;
|
|
|
+ valStr = v.ToString();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return valStr;
|
|
|
+ }
|
|
|
+ public bool GetPropdoubleData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, out double a_dValue)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
|
|
|
+ {
|
|
|
+ a_dValue = m_poSEMDataMsr.GetMagnification();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGERESOLUTION_SIZE:
|
|
|
+ {
|
|
|
+ a_dValue =m_Sample. CalculatePixelSize();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
|
|
|
+ {
|
|
|
+ a_dValue = m_poSEMDataMsr.GetWorkingDistance();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.RATIO:
|
|
|
+ {
|
|
|
+ a_dValue = m_poMsrResults.GetRatio();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN:
|
|
|
+ {
|
|
|
+ a_dValue = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetStart();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX:
|
|
|
+ {
|
|
|
+ a_dValue = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetEnd();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
|
|
|
+ {
|
|
|
+
|
|
|
+ double dFieldArea = 0; // this area should be the field area
|
|
|
+ dFieldArea = m_Sample. CalculateAFieldArea();
|
|
|
+ a_dValue = m_poSEMDataMsr.GetTotalFields() * dFieldArea;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA:
|
|
|
+ {
|
|
|
+ a_dValue = m_poMsrResults.GetMeasuredArea();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA:
|
|
|
+ {
|
|
|
+ a_dValue = m_poMsrResults.GetTotalParticleArea();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE:
|
|
|
+ {
|
|
|
+ a_dValue = m_poMsrParams.GetXRayParam().GetFeatureModeMinSize();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ // something wrong, return false
|
|
|
+ a_dValue = -1;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // ok, return true
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // string data (7)
|
|
|
+ public bool GetPropStringData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, out string a_strValue)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME:
|
|
|
+ {
|
|
|
+ a_strValue = m_Sample.GetName();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME:
|
|
|
+ {
|
|
|
+ a_strValue = m_Sample.GetSampleHoleName();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
|
|
|
+ {
|
|
|
+ a_strValue = NOT_APPLIED;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGERESOLUTION_SIZE:
|
|
|
+ {
|
|
|
+ a_strValue = NOT_APPLIED;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
|
|
|
+ {
|
|
|
+ a_strValue = NOT_APPLIED;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
|
|
|
+ {
|
|
|
+ a_strValue = NOT_APPLIED;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
|
|
|
+ {
|
|
|
+ a_strValue = NOT_APPLIED;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU:
|
|
|
+ {
|
|
|
+ OTS_MSR_SAMPLE_STATUS nStatus = m_Status.GetStatus();
|
|
|
+ string strStatus = nStatus.ToString();
|
|
|
+ strStatus = XmlResourceData.GetInstance().GetStringByKey(GrpMeasureResult, IDS_MEASURE_STATUS_FIRST + (int)nStatus);
|
|
|
+ a_strValue = strStatus;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
|
|
|
+ {
|
|
|
+ a_strValue = m_poMsrParams.GetImageScanParam().GetStopMode();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ // something wrong, return false
|
|
|
+ a_strValue = NOT_APPLIED;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //break;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool GetPropComboData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, out int a_nValue)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.START_PHOTO_MODE:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrParams.GetImageScanParam().GetFieldStartMode();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrParams.GetImageScanParam().GetScanImageSpeed();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrParams.GetImageScanParam().GetImageResulotion();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.XRAYSCAN_MODE:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrParams.GetXRayParam().GetScanMode();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrParams.GetImageProcessParam().GetBGRemoveType();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrParams.GetImageProcessParam().GetAutoBGRemoveType();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY:
|
|
|
+ {
|
|
|
+ a_nValue = (int)m_poMsrParams.GetSteelTechnology();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME:
|
|
|
+ {
|
|
|
+ int val = 0;
|
|
|
+ List<string> combo = new List<string>();
|
|
|
+ GetSTDFileList(ref val, ref combo);
|
|
|
+ a_nValue = val;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ // something wrong, return false
|
|
|
+ a_nValue = 0;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //break;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // ok, return true
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ public bool GetPropTimeData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, ref DateTime a_oValue)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME:
|
|
|
+ {
|
|
|
+ a_oValue = m_Status.GetStartTime();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME:
|
|
|
+ {
|
|
|
+ a_oValue = m_Status.GetEndTime();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ // something wrong, return false
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public bool GetPropTimeSpanData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, ref TimeSpan a_oValue)
|
|
|
+ {
|
|
|
+ var m_poMsrParams = m_Sample.GetMsrParams();
|
|
|
+ var m_poSEMDataMsr = m_Sample.GetSEMDataMsr();
|
|
|
+ var m_Status = m_Sample.GetMsrStatus();
|
|
|
+ var m_poMsrResults = m_Sample.GetMsrResults();
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME:
|
|
|
+ {
|
|
|
+ a_oValue = m_Status.GetUsedTime();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ // something wrong, return false
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ private CPropItem GetPropItemById(OTS_SAMPLE_PROP_GRID_ITEMS a_nId)
|
|
|
+ {
|
|
|
+ CPropItem pPropItem = new CPropItem();
|
|
|
+ bool isExist = false;
|
|
|
+ if (m_listPropItemGrp.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (CPropItemGrp poPropItemGrp in m_listPropItemGrp)
|
|
|
+ {
|
|
|
+ List<CPropItem> listPropItems = poPropItemGrp.GetSampleDataList();
|
|
|
+ if (listPropItems.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (CPropItem cPropItem in listPropItems)
|
|
|
+ {
|
|
|
+ if (cPropItem.SampleId == a_nId)
|
|
|
+ {
|
|
|
+ pPropItem = cPropItem;
|
|
|
+ isExist = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (isExist)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return pPropItem;
|
|
|
+ }
|
|
|
+ public bool GetPropComboStrings(OTS_SAMPLE_PROP_GRID_ITEMS a_nId,ref List<string> a_listComboStrings)
|
|
|
+ {
|
|
|
+ OTS_SAMPLE_PROP_GRID_ITEM_GROUPS g = ResourceData.GetResourceGrpIdOfPropItem(a_nId);
|
|
|
+
|
|
|
+ a_listComboStrings.Clear();
|
|
|
+
|
|
|
+ switch (a_nId)
|
|
|
+ {
|
|
|
+
|
|
|
+ case OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME:
|
|
|
+ {
|
|
|
+
|
|
|
+ int val = 0;
|
|
|
+ List<string> combo = new List<string>();
|
|
|
+ GetSTDFileList(ref val, ref combo);
|
|
|
+ a_listComboStrings = combo;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ var strRes = XmlResourceData.GetInstance().GetStringResourceByKey(g, a_nId);
|
|
|
+
|
|
|
+ a_listComboStrings = strRes.combolist;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public void AddASampleDataGrp(CPropItemGrp g)
|
|
|
+ {
|
|
|
+ m_listPropItemGrp.Add(g);
|
|
|
+ SampleDataList .AddRange(g.GetSampleDataList());//保持一个所有条目列表目的为了兼容以前的代码
|
|
|
+ }
|
|
|
+ public List<CPropItemGrp> GetSampleDataGroups()
|
|
|
+ {
|
|
|
+ return m_listPropItemGrp;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void ClearGrp()
|
|
|
+ {
|
|
|
+ m_listPropItemGrp.Clear();
|
|
|
+ SampleDataList.Clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ public String sSampleSoluName; //样品的标题名 (Treeview的根节点名)
|
|
|
+ private bool bSwitch; //样品参数锁,默认都是false, 当执行测量完成后,设置为true,则客户不允许修改GRID等数据。
|
|
|
+
|
|
|
+ //MeasureApp 给SampleWindow窗口发送添加样品的样品孔名,测量区域信息
|
|
|
+ public SampleMeasurePara SMeasurePara;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public CTreeSampleParam TSampleParam;
|
|
|
+
|
|
|
+ public List<CPropItem> SampleDataList { get => sampleDataList; set => sampleDataList = value; }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|