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]));
//}
}
}