ResultFile.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. using System;
  2. using System.Collections.Generic;
  3. namespace OTSCommon.Model
  4. {
  5. /// <summary>
  6. /// 样品台X轴方向
  7. /// </summary>
  8. public enum OTS_X_AXIS_DIRECTION
  9. {
  10. LEFT_TOWARD = 0,
  11. RIGHT_TOWARD = 1
  12. }
  13. /// <summary>
  14. /// 样品台Y轴方向
  15. /// </summary>
  16. public enum OTS_Y_AXIS_DIRECTION
  17. {
  18. UP_TOWARD = 0,
  19. DOWN_TOWARD = 1
  20. }
  21. [Serializable]
  22. public class ResultFile
  23. {
  24. /// <summary>
  25. /// FileId
  26. /// </summary>
  27. /// //全局对象,为了能够快速的获取到xray数据,而做为一个临时变量进行保存,使用前应该判断是否为空
  28. private List<Field> list_OTSField = null;
  29. public int GetTotalFields()
  30. {
  31. int all_FiledCount = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"])["SEMDataMsr"])["TotalFields"]);
  32. return all_FiledCount;
  33. }
  34. public float GetScanFieldSizeX()
  35. {
  36. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  37. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  38. //Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  39. float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString());
  40. return ScanFieldSizeX;
  41. }
  42. public float GetScanFieldSizeX100()
  43. {
  44. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  45. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  46. //Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  47. float ScanFieldSizeX100 = float.Parse(SEMDataMsr["ScanFieldSize100"].ToString());
  48. return ScanFieldSizeX100;
  49. }
  50. public float GetMeasurementMagnification()
  51. {
  52. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  53. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  54. //Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  55. float ScanMagnification = 0;
  56. try
  57. {
  58. ScanMagnification = float.Parse(SEMDataMsr["Magnification"].ToString());
  59. }
  60. catch
  61. {
  62. ScanMagnification = GetScanFieldSizeX100() * 100 / GetScanFieldSizeX();
  63. }
  64. return ScanMagnification;
  65. }
  66. public float GetScanFieldSizeY()
  67. {
  68. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  69. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  70. float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString());
  71. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  72. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  73. int width = int.Parse(ImageResolution.Split('_')[1]);
  74. int height = int.Parse(ImageResolution.Split('_')[2]);
  75. float ScanFieldSizeY = ScanFieldSizeX * height / width;
  76. return ScanFieldSizeY;
  77. }
  78. public string GetXAxisDir()
  79. {
  80. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  81. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  82. string leftOrRight = SEMStageData["xAxisDir"].ToString().Split(':')[1];
  83. return leftOrRight;
  84. }
  85. public OTS_X_AXIS_DIRECTION GetXAxisDirEnum()
  86. {
  87. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  88. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  89. int leftOrRight = Convert.ToInt32(SEMStageData["xAxisDir"].ToString().Split(':')[0]);
  90. return (OTS_X_AXIS_DIRECTION)leftOrRight;
  91. }
  92. public OTS_Y_AXIS_DIRECTION GetYAxisDirEnum()
  93. {
  94. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  95. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  96. int dir = Convert.ToInt32(SEMStageData["yAxisDir"].ToString().Split(':')[0]);
  97. return (OTS_Y_AXIS_DIRECTION)dir;
  98. }
  99. public string GetYAxisDir()
  100. {
  101. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  102. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  103. string downOrUp = SEMStageData["yAxisDir"].ToString().Split(':')[1];
  104. return downOrUp;
  105. }
  106. public int GetXAxisStart()
  107. {
  108. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  109. int xStart = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["XAxis"])["start"]);
  110. int xEnd = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["XAxis"])["end"]);
  111. return xStart;
  112. }
  113. public int GetXAxisEnd()
  114. {
  115. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  116. int xEnd = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["XAxis"])["end"]);
  117. return xEnd;
  118. }
  119. public int GetYAxisStart()
  120. {
  121. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  122. int yStart = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["YAxis"])["start"]);
  123. return yStart;
  124. }
  125. public int GetYAxisEnd()
  126. {
  127. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  128. int yEnd = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["YAxis"])["end"]);
  129. return yEnd;
  130. }
  131. public string GetImageResolution()
  132. {
  133. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  134. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  135. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  136. return ImageResolution;
  137. }
  138. public int GetImageWidth()
  139. {
  140. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  141. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  142. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  143. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  144. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  145. int width = int.Parse(ImageResolution.Split('_')[1]);
  146. return width;
  147. //int height = int.Parse(ImageResolution.Split('_')[2]);
  148. }
  149. public int GetImageHeight()
  150. {
  151. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  152. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  153. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  154. int height = int.Parse(ImageResolution.Split('_')[2]);
  155. return height;
  156. }
  157. public float GetPixelSize()
  158. {
  159. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  160. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  161. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  162. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  163. float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString());
  164. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  165. int width = int.Parse(ImageResolution.Split('_')[1]);
  166. int height = int.Parse(ImageResolution.Split('_')[2]);
  167. float m_pixelSize = ScanFieldSizeX / width;
  168. return m_pixelSize;
  169. }
  170. public string GetSTDName()
  171. {
  172. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  173. string STDName = ((Dictionary<string, object>)sampleMembers["MsrParams"])["STDName"].ToString();
  174. return STDName;
  175. }
  176. public bool GetUseSysSTD()
  177. {
  178. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  179. string UseSysSTD = ((Dictionary<string, object>)sampleMembers["MsrParams"])["UseSysSTD"].ToString();
  180. return Convert.ToBoolean(UseSysSTD);
  181. }
  182. public int GetOverlapParam()
  183. {
  184. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  185. Dictionary<string, object> imageProcParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageProcessParam"];
  186. try
  187. {
  188. string overlap = imageProcParam["OverlapParam"].ToString();
  189. return Convert.ToInt32(overlap);
  190. }
  191. catch
  192. {
  193. return 0;
  194. }
  195. }
  196. public int GetIncASteeltech()
  197. {
  198. //--------the int number meaning----------
  199. //GeneralProcessMode = 0,
  200. //CaProcessMode = 1,
  201. //MgProcessMode = 2,
  202. //RareEarthMode = 3
  203. //------------------
  204. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  205. int steeltech = Convert.ToInt32(((Dictionary<string, object>)sampleMembers["MsrParams"])["SteelTech"]);
  206. return steeltech;
  207. }
  208. public string GetResultDBPath()
  209. {
  210. string ResultDbPath = FilePath + "\\FIELD_FILES\\Inclusion.db";
  211. return ResultDbPath;
  212. }
  213. public string FileId
  214. {
  215. get;
  216. set;
  217. }
  218. /// <summary>
  219. /// FileName
  220. /// </summary>
  221. public string anotherFileName
  222. {
  223. get;
  224. set;
  225. }
  226. /// <summary>
  227. /// FileName
  228. /// </summary>
  229. public string FileName_real
  230. {
  231. get;
  232. set;
  233. }
  234. /// <summary>
  235. /// FilePath
  236. /// </summary>
  237. public string FilePath
  238. {
  239. get;
  240. set;
  241. }
  242. /// <summary>
  243. /// ResuitInfo
  244. /// </summary>
  245. public Dictionary<string, object> ResultInfo
  246. {
  247. get;
  248. set;
  249. }
  250. public void SetResultInfoDic(Dictionary<string, object> info)
  251. {
  252. ResultInfo = info;
  253. }
  254. public List<Field> List_OTSField { get => list_OTSField; set => list_OTSField = value; }
  255. //public OTS_SysType_ID GetResultSystype()
  256. //{
  257. // var Systype = ((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)(Dictionary<string, object>)this.ResultInfo["Sample"])["Members"])["MsrParams"])["SysType"];
  258. // return (OTS_SysType_ID)(Convert.ToInt32( Systype.ToString().Split(':')[0]));
  259. //}
  260. }
  261. }