using System; using System.Collections.Generic; namespace OTSCommon.Model { /// /// 样品台X轴方向 /// public enum OTS_X_AXIS_DIRECTION { LEFT_TOWARD = 0, RIGHT_TOWARD = 1 } /// /// 样品台Y轴方向 /// public enum OTS_Y_AXIS_DIRECTION { UP_TOWARD = 0, DOWN_TOWARD = 1 } [Serializable] public class ResultFile { /// /// FileId /// /// //全局对象,为了能够快速的获取到xray数据,而做为一个临时变量进行保存,使用前应该判断是否为空 private List list_OTSField = null; public int GetTotalFields() { int all_FiledCount = Convert.ToInt32(((Dictionary)((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"])["SEMDataMsr"])["TotalFields"]); return all_FiledCount; } public float GetScanFieldSizeX() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary SEMDataMsr = (Dictionary)sampleMembers["SEMDataMsr"]; //Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString()); return ScanFieldSizeX; } public float GetScanFieldSizeX100() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary SEMDataMsr = (Dictionary)sampleMembers["SEMDataMsr"]; //Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; float ScanFieldSizeX100 = float.Parse(SEMDataMsr["ScanFieldSize100"].ToString()); return ScanFieldSizeX100; } public float GetMeasurementMagnification() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary SEMDataMsr = (Dictionary)sampleMembers["SEMDataMsr"]; //Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; float ScanMagnification = 0; try { ScanMagnification = float.Parse(SEMDataMsr["Magnification"].ToString()); } catch { ScanMagnification = GetScanFieldSizeX100() * 100 / GetScanFieldSizeX(); } return ScanMagnification; } public float GetScanFieldSizeY() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary SEMDataMsr = (Dictionary)sampleMembers["SEMDataMsr"]; float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString()); Dictionary imageScanParam = (Dictionary)((Dictionary)((Dictionary)sampleMembers["MsrParams"])["Members"])["ImageScanParam"]; string ImageResolution = imageScanParam["ImageResolution"].ToString(); int width = int.Parse(ImageResolution.Split('_')[1]); int height = int.Parse(ImageResolution.Split('_')[2]); float ScanFieldSizeY = ScanFieldSizeX * height / width; return ScanFieldSizeY; } public string GetXAxisDir() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; string leftOrRight = SEMStageData["xAxisDir"].ToString().Split(':')[1]; return leftOrRight; } public OTS_X_AXIS_DIRECTION GetXAxisDirEnum() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; int leftOrRight = Convert.ToInt32(SEMStageData["xAxisDir"].ToString().Split(':')[0]); return (OTS_X_AXIS_DIRECTION)leftOrRight; } public OTS_Y_AXIS_DIRECTION GetYAxisDirEnum() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; int dir = Convert.ToInt32(SEMStageData["yAxisDir"].ToString().Split(':')[0]); return (OTS_Y_AXIS_DIRECTION)dir; } public string GetYAxisDir() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; string downOrUp = SEMStageData["yAxisDir"].ToString().Split(':')[1]; return downOrUp; } public int GetXAxisStart() { Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; int xStart = Convert.ToInt32(((Dictionary)((Dictionary)((Dictionary)ResultInfo["SEMStageData"])["Members"])["XAxis"])["start"]); int xEnd = Convert.ToInt32(((Dictionary)((Dictionary)((Dictionary)ResultInfo["SEMStageData"])["Members"])["XAxis"])["end"]); return xStart; } public int GetXAxisEnd() { Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; int xEnd = Convert.ToInt32(((Dictionary)((Dictionary)((Dictionary)ResultInfo["SEMStageData"])["Members"])["XAxis"])["end"]); return xEnd; } public int GetYAxisStart() { Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; int yStart = Convert.ToInt32(((Dictionary)((Dictionary)((Dictionary)ResultInfo["SEMStageData"])["Members"])["YAxis"])["start"]); return yStart; } public int GetYAxisEnd() { Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; int yEnd = Convert.ToInt32(((Dictionary)((Dictionary)((Dictionary)ResultInfo["SEMStageData"])["Members"])["YAxis"])["end"]); return yEnd; } public string GetImageResolution() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary imageScanParam = (Dictionary)((Dictionary)((Dictionary)sampleMembers["MsrParams"])["Members"])["ImageScanParam"]; string ImageResolution = imageScanParam["ImageResolution"].ToString(); return ImageResolution; } public int GetImageWidth() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary imageScanParam = (Dictionary)((Dictionary)((Dictionary)sampleMembers["MsrParams"])["Members"])["ImageScanParam"]; Dictionary SEMDataMsr = (Dictionary)sampleMembers["SEMDataMsr"]; Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; string ImageResolution = imageScanParam["ImageResolution"].ToString(); int width = int.Parse(ImageResolution.Split('_')[1]); return width; //int height = int.Parse(ImageResolution.Split('_')[2]); } public int GetImageHeight() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary imageScanParam = (Dictionary)((Dictionary)((Dictionary)sampleMembers["MsrParams"])["Members"])["ImageScanParam"]; string ImageResolution = imageScanParam["ImageResolution"].ToString(); int height = int.Parse(ImageResolution.Split('_')[2]); return height; } public float GetPixelSize() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary imageScanParam = (Dictionary)((Dictionary)((Dictionary)sampleMembers["MsrParams"])["Members"])["ImageScanParam"]; Dictionary SEMDataMsr = (Dictionary)sampleMembers["SEMDataMsr"]; Dictionary SEMStageData = (Dictionary)ResultInfo["SEMStageData"]; float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString()); string ImageResolution = imageScanParam["ImageResolution"].ToString(); int width = int.Parse(ImageResolution.Split('_')[1]); int height = int.Parse(ImageResolution.Split('_')[2]); float m_pixelSize = ScanFieldSizeX / width; return m_pixelSize; } public string GetSTDName() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); string STDName = ((Dictionary)sampleMembers["MsrParams"])["STDName"].ToString(); return STDName; } public bool GetUseSysSTD() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); string UseSysSTD = ((Dictionary)sampleMembers["MsrParams"])["UseSysSTD"].ToString(); return Convert.ToBoolean(UseSysSTD); } public int GetOverlapParam() { Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); Dictionary imageProcParam = (Dictionary)((Dictionary)((Dictionary)sampleMembers["MsrParams"])["Members"])["ImageProcessParam"]; try { string overlap = imageProcParam["OverlapParam"].ToString(); return Convert.ToInt32(overlap); } catch { return 0; } } public double GetTotalArea() { try { double dTotalArea = -1; Dictionary valuePairs=(Dictionary)ResultInfo["Sample"]; if (valuePairs.ContainsKey("TotalArea")) { dTotalArea = Convert.ToDouble(valuePairs["TotalArea"]) *1000000 ; return dTotalArea; } else { return -1; } } catch { return -1; } } public int GetIncASteeltech() { //--------the int number meaning---------- //GeneralProcessMode = 0, //CaProcessMode = 1, //MgProcessMode = 2, //RareEarthMode = 3 //------------------ Dictionary sampleMembers = ((Dictionary)((Dictionary)ResultInfo["Sample"])["Members"]); int steeltech = Convert.ToInt32(((Dictionary)sampleMembers["MsrParams"])["SteelTech"]); return steeltech; } public string GetResultDBPath() { string ResultDbPath = FilePath + "\\FIELD_FILES\\Inclusion.db"; return ResultDbPath; } public string FileId { get; set; } /// /// FileName /// public string anotherFileName { get; set; } /// /// FileName /// public string FileName_real { get; set; } /// /// FilePath /// public string FilePath { get; set; } /// /// ResuitInfo /// public Dictionary ResultInfo { get; set; } public void SetResultInfoDic(Dictionary info) { ResultInfo = info; } public List List_OTSField { get => list_OTSField; set => list_OTSField = value; } //public OTS_SysType_ID GetResultSystype() //{ // var Systype = ((Dictionary)((Dictionary)((Dictionary)(Dictionary)this.ResultInfo["Sample"])["Members"])["MsrParams"])["SysType"]; // return (OTS_SysType_ID)(Convert.ToInt32( Systype.ToString().Split(':')[0])); //} } }