ResultFile.cs 14 KB

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