ResultFile.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  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 double GetTotalArea()
  197. {
  198. try
  199. {
  200. double dTotalArea = -1;
  201. Dictionary<string, object> valuePairs=(Dictionary<string, object>)ResultInfo["Sample"];
  202. if (valuePairs.ContainsKey("TotalArea"))
  203. {
  204. dTotalArea = Convert.ToDouble(valuePairs["TotalArea"]) *1000000 ;
  205. return dTotalArea;
  206. }
  207. else
  208. {
  209. return -1;
  210. }
  211. }
  212. catch
  213. {
  214. return -1;
  215. }
  216. }
  217. public int GetIncASteeltech()
  218. {
  219. //--------the int number meaning----------
  220. //GeneralProcessMode = 0,
  221. //CaProcessMode = 1,
  222. //MgProcessMode = 2,
  223. //RareEarthMode = 3
  224. //------------------
  225. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  226. int steeltech = Convert.ToInt32(((Dictionary<string, object>)sampleMembers["MsrParams"])["SteelTech"]);
  227. return steeltech;
  228. }
  229. public string GetResultDBPath()
  230. {
  231. string ResultDbPath = FilePath + "\\FIELD_FILES\\Inclusion.db";
  232. return ResultDbPath;
  233. }
  234. public string FileId
  235. {
  236. get;
  237. set;
  238. }
  239. /// <summary>
  240. /// FileName
  241. /// </summary>
  242. public string anotherFileName
  243. {
  244. get;
  245. set;
  246. }
  247. /// <summary>
  248. /// FileName
  249. /// </summary>
  250. public string FileName_real
  251. {
  252. get;
  253. set;
  254. }
  255. /// <summary>
  256. /// FilePath
  257. /// </summary>
  258. public string FilePath
  259. {
  260. get;
  261. set;
  262. }
  263. /// <summary>
  264. /// ResuitInfo
  265. /// </summary>
  266. public Dictionary<string, object> ResultInfo
  267. {
  268. get;
  269. set;
  270. }
  271. public void SetResultInfoDic(Dictionary<string, object> info)
  272. {
  273. ResultInfo = info;
  274. }
  275. public List<Field> List_OTSField { get => list_OTSField; set => list_OTSField = value; }
  276. //public OTS_SysType_ID GetResultSystype()
  277. //{
  278. // var Systype = ((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)(Dictionary<string, object>)this.ResultInfo["Sample"])["Members"])["MsrParams"])["SysType"];
  279. // return (OTS_SysType_ID)(Convert.ToInt32( Systype.ToString().Split(':')[0]));
  280. //}
  281. }
  282. }