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, BUTTON=7 } public class CTreeSampleParam { public string sSampleTitleName; //样品树显示的样品标题名称 public string sWorkSampleName; // 工作样品名称 public bool bSwitch; //样品执行开关 }; public class SampleMeasurePara { public string sSampleName; public string sampleHoleName; public ShapeType iShape; //测量区域形状 public List DrawPolygonPointList;//多边形点集合 public RectangleF MeasureRect; //测量区域大小 public SampleMeasurePara() { } public SampleMeasurePara(COTSSample sample) { //获取样品名称 this.sSampleName = sample.GetName(); // 获取测量区域形状 this.iShape = (ShapeType)sample.GetMsrDomain().GetShape(); //获取样品孔名称 this.sampleHoleName = sample.GetSampleHoleName(); //样品测量区域 this.MeasureRect = sample.GetMsrDomain().GetRectDomain(); //多边形点集合 List PointRegionF = new List(); List PolygonPoint = sample.GetMsrDomain().GetPolygonPoint(); if (PolygonPoint != null) { foreach (var item in sample.GetMsrDomain().GetPolygonPoint()) { PointRegionF.Add(new PointF(item.X, item.Y)); } } this.DrawPolygonPointList = PointRegionF; } } public class OTSSampleVisualPropertyInfo { const string NOT_APPLIED = "N/A"; COTSSample m_Sample; private List m_listPropItemGrp; private List sampleDataList;//保持一个所有条目列表,目的为了兼容以前的代码 private OTS_SysType_ID m_systype; //构造函数 public OTSSampleVisualPropertyInfo(COTSSample WSample,OTS_SysType_ID systype) { m_Sample = WSample; m_systype = systype; SMeasurePara = new SampleMeasurePara(m_Sample); SampleDataList = new List(); TSampleParam = new CTreeSampleParam(); m_listPropItemGrp = new List(); InitPropItemGrps(); UpdatePropertyData(); } public void InitPropItemGrps() { this.ClearGrp(); //设置工作样品属性项 if (m_systype == OTS_SysType_ID.CleannessA) { SetPropItemGrpsForCleannessA(); } 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().GetSmallPartXrayTime(); } 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().SetSmallPartXrayTime((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().SetFeatureModeMinSize((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.Spiral > (OTS_GET_IMAGE_MODE)(int)objVal || (OTS_GET_IMAGE_MODE)(int)objVal > OTS_GET_IMAGE_MODE.Zshape) { 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; case OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection: { m_poMsrParams.GetImageProcessParam().SetParticleSelectCondition((string)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 a_listSTDLibName) { String a_strFolderName = COTSDefaultParam.GetPartSTDLibFolderName(); if (a_strFolderName == "") { return false; } // lib name list a_listSTDLibName.Clear(); // file list List listSTDFile = new List(); 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 a_listFileName) { try { string path = a_strFolderName; List lineStringList = new List();//存储所有读取到的文件 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 listSTDFile = new List(); listSTDFile.Clear(); const String STD_LIB_EXT = ".db"; // get file list if (!GetFileNameList(a_strFolderName, STD_LIB_EXT, listSTDFile)) { return false; } List listSTDLibName = new List(); listSTDLibName.Clear(); foreach (var file in listSTDFile) { //string fileName = file.Left(file.GetLength() - 3); String fileName = file; listSTDLibName.Add(fileName); } if (listSTDLibName.Count > 0) { listSTDLibName.Add("NoSTDDB"); } 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 a_listPropItems = new List(); 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); // 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; switch (a_nId) { case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL: { // 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 comboDownlist = new List(); 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.BUTTON, 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); poPropItem = new CPropItem(); nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection; poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BUTTON, true, 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 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); poPropItem = new CPropItem(); nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection; poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BUTTON, true, 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 SetPropItemGrpsForCleannessA() { 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 a_listPropItems = new List(); 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); int val = 0; List comboDownlist = new List(); GetSTDFileList(ref val, ref comboDownlist); poPropItem.comboDownList = comboDownlist; poPropItem.SetSampleVal(val); 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.BUTTON, 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); //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); poPropItem = new CPropItem(); nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection; poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BUTTON, true, 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 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); poPropItem = new CPropItem(); nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection; poPropItem.InitialSmplParameter(a_nId, nItemId, OTS_ITEM_TYPES.BUTTON, true, bShow); a_listPropItems.Add(poPropItem); break; } } break; case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.XRAY: { //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); //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; 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: { 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 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)) { if (ItemID == OTS_SAMPLE_PROP_GRID_ITEMS.RATIO) { valStr = dVal.ToString("f6");//点后面几个0就保留几位 } else { 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 StrVal = new List(); 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.BUTTON: { string StrVal = ""; if (GetPropButtonData(ItemID, out StrVal)) { valStr = StrVal; } } 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(GrpMeasureState, 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; case OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection: { a_strValue = m_poMsrParams.GetImageProcessParam().GetParticleSelectCondition(); } break; default: { // something wrong, return false a_strValue = NOT_APPLIED; return false; } //break; } return true; } public bool GetPropButtonData(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.STOP_MODE: { a_strValue = m_poMsrParams.GetImageScanParam().GetStopMode(); } break; case OTS_SAMPLE_PROP_GRID_ITEMS.OtherSelection: { a_strValue = m_poMsrParams.GetImageProcessParam().GetParticleSelectCondition(); } break; default: { // something wrong, return false a_strValue = NOT_APPLIED; return false; } } 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 combo = new List(); 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 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 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 combo = new List(); 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 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 SampleDataList { get => sampleDataList; set => sampleDataList = value; } } }