ResultFile.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  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 = float.Parse(SEMDataMsr["Magnification"].ToString());
  56. return ScanMagnification;
  57. }
  58. public float GetScanFieldSizeY()
  59. {
  60. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  61. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  62. float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString());
  63. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  64. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  65. int width = int.Parse(ImageResolution.Split('_')[1]);
  66. int height = int.Parse(ImageResolution.Split('_')[2]);
  67. float ScanFieldSizeY = ScanFieldSizeX * height / width;
  68. return ScanFieldSizeY;
  69. }
  70. public string GetXAxisDir()
  71. {
  72. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  73. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  74. string leftOrRight = SEMStageData["xAxisDir"].ToString().Split(':')[1];
  75. return leftOrRight;
  76. }
  77. public OTS_X_AXIS_DIRECTION GetXAxisDirEnum()
  78. {
  79. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  80. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  81. int leftOrRight = Convert.ToInt32(SEMStageData["xAxisDir"].ToString().Split(':')[0]);
  82. return (OTS_X_AXIS_DIRECTION)leftOrRight;
  83. }
  84. public OTS_Y_AXIS_DIRECTION GetYAxisDirEnum()
  85. {
  86. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  87. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  88. int dir = Convert.ToInt32(SEMStageData["yAxisDir"].ToString().Split(':')[0]);
  89. return (OTS_Y_AXIS_DIRECTION)dir;
  90. }
  91. public string GetYAxisDir()
  92. {
  93. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  94. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  95. string downOrUp = SEMStageData["yAxisDir"].ToString().Split(':')[1];
  96. return downOrUp;
  97. }
  98. public int GetXAxisStart()
  99. {
  100. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  101. int xStart = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["XAxis"])["start"]);
  102. int xEnd = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["XAxis"])["end"]);
  103. return xStart;
  104. }
  105. public int GetXAxisEnd()
  106. {
  107. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  108. int xEnd = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["XAxis"])["end"]);
  109. return xEnd;
  110. }
  111. public int GetYAxisStart()
  112. {
  113. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  114. int yStart = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["YAxis"])["start"]);
  115. return yStart;
  116. }
  117. public int GetYAxisEnd()
  118. {
  119. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  120. int yEnd = Convert.ToInt32(((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["SEMStageData"])["Members"])["YAxis"])["end"]);
  121. return yEnd;
  122. }
  123. public string GetImageResolution()
  124. {
  125. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  126. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  127. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  128. return ImageResolution;
  129. }
  130. public int GetImageWidth()
  131. {
  132. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  133. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  134. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  135. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  136. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  137. int width = int.Parse(ImageResolution.Split('_')[1]);
  138. return width;
  139. //int height = int.Parse(ImageResolution.Split('_')[2]);
  140. }
  141. public int GetImageHeight()
  142. {
  143. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  144. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  145. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  146. int height = int.Parse(ImageResolution.Split('_')[2]);
  147. return height;
  148. }
  149. public float GetPixelSize()
  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. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  154. Dictionary<string, object> SEMStageData = (Dictionary<string, object>)ResultInfo["SEMStageData"];
  155. float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString());
  156. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  157. int width = int.Parse(ImageResolution.Split('_')[1]);
  158. int height = int.Parse(ImageResolution.Split('_')[2]);
  159. float m_pixelSize = ScanFieldSizeX / width;
  160. return m_pixelSize;
  161. }
  162. public string GetSTDName()
  163. {
  164. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  165. string STDName = ((Dictionary<string, object>)sampleMembers["MsrParams"])["STDName"].ToString();
  166. return STDName;
  167. }
  168. public bool GetUseSysSTD()
  169. {
  170. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  171. string UseSysSTD = ((Dictionary<string, object>)sampleMembers["MsrParams"])["UseSysSTD"].ToString();
  172. return Convert.ToBoolean(UseSysSTD);
  173. }
  174. public int GetOverlapParam()
  175. {
  176. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  177. Dictionary<string, object> imageProcParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageProcessParam"];
  178. try
  179. {
  180. string overlap = imageProcParam["OverlapParam"].ToString();
  181. return Convert.ToInt32(overlap);
  182. }
  183. catch
  184. {
  185. return 0;
  186. }
  187. }
  188. public int GetIncASteeltech()
  189. {
  190. //--------the int number meaning----------
  191. //GeneralProcessMode = 0,
  192. //CaProcessMode = 1,
  193. //MgProcessMode = 2,
  194. //RareEarthMode = 3
  195. //------------------
  196. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  197. int steeltech = Convert.ToInt32(((Dictionary<string, object>)sampleMembers["MsrParams"])["SteelTech"]);
  198. return steeltech;
  199. }
  200. public string GetResultDBPath()
  201. {
  202. string ResultDbPath = FilePath + "\\FIELD_FILES\\Inclusion.db";
  203. return ResultDbPath;
  204. }
  205. public string FileId
  206. {
  207. get;
  208. set;
  209. }
  210. /// <summary>
  211. /// FileName
  212. /// </summary>
  213. public string anotherFileName
  214. {
  215. get;
  216. set;
  217. }
  218. /// <summary>
  219. /// FileName
  220. /// </summary>
  221. public string FileName_real
  222. {
  223. get;
  224. set;
  225. }
  226. /// <summary>
  227. /// FilePath
  228. /// </summary>
  229. public string FilePath
  230. {
  231. get;
  232. set;
  233. }
  234. /// <summary>
  235. /// ResuitInfo
  236. /// </summary>
  237. public Dictionary<string, object> ResultInfo
  238. {
  239. get;
  240. set;
  241. }
  242. public void SetResultInfoDic(Dictionary<string, object> info)
  243. {
  244. ResultInfo = info;
  245. }
  246. public List<Field> List_OTSField { get => list_OTSField; set => list_OTSField = value; }
  247. //public OTS_SysType_ID GetResultSystype()
  248. //{
  249. // var Systype = ((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)(Dictionary<string, object>)this.ResultInfo["Sample"])["Members"])["MsrParams"])["SysType"];
  250. // return (OTS_SysType_ID)(Convert.ToInt32( Systype.ToString().Split(':')[0]));
  251. //}
  252. }
  253. }