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. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  130. int width = int.Parse(ImageResolution.Split('_')[1]);
  131. return width;
  132. }
  133. public int GetImageHeight()
  134. {
  135. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  136. Dictionary<string, object> imageScanParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageScanParam"];
  137. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  138. int height = int.Parse(ImageResolution.Split('_')[2]);
  139. return height;
  140. }
  141. public float GetPixelSize()
  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. Dictionary<string, object> SEMDataMsr = (Dictionary<string, object>)sampleMembers["SEMDataMsr"];
  146. float ScanFieldSizeX = float.Parse(SEMDataMsr["ScanFieldSize"].ToString());
  147. string ImageResolution = imageScanParam["ImageResolution"].ToString();
  148. int width = int.Parse(ImageResolution.Split('_')[1]);
  149. int height = int.Parse(ImageResolution.Split('_')[2]);
  150. float m_pixelSize = ScanFieldSizeX / width;
  151. return m_pixelSize;
  152. }
  153. public string GetSTDName()
  154. {
  155. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  156. string STDName = ((Dictionary<string, object>)sampleMembers["MsrParams"])["STDName"].ToString();
  157. return STDName;
  158. }
  159. public bool GetUseSysSTD()
  160. {
  161. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  162. string UseSysSTD = ((Dictionary<string, object>)sampleMembers["MsrParams"])["UseSysSTD"].ToString();
  163. return Convert.ToBoolean(UseSysSTD);
  164. }
  165. public int GetOverlapParam()
  166. {
  167. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  168. Dictionary<string, object> imageProcParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageProcessParam"];
  169. try
  170. {
  171. string overlap = imageProcParam["OverlapParam"].ToString();
  172. return Convert.ToInt32(overlap);
  173. }
  174. catch
  175. {
  176. return 0;
  177. }
  178. }
  179. public double GetTotalArea()
  180. {
  181. try
  182. {
  183. double dTotalArea = -1;
  184. Dictionary<string, object> valuePairs=(Dictionary<string, object>)ResultInfo["Sample"];
  185. if (valuePairs.ContainsKey("TotalArea"))
  186. {
  187. dTotalArea = Convert.ToDouble(valuePairs["TotalArea"]) /**1000000*/ ;
  188. return dTotalArea;
  189. }
  190. else
  191. {
  192. return -1;
  193. }
  194. }
  195. catch
  196. {
  197. return -1;
  198. }
  199. }
  200. public int GetIncASteeltech()
  201. {
  202. //--------the int number meaning----------
  203. //GeneralProcessMode = 0,
  204. //CaProcessMode = 1,
  205. //MgProcessMode = 2,
  206. //RareEarthMode = 3
  207. //------------------
  208. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  209. int steeltech = Convert.ToInt32(((Dictionary<string, object>)sampleMembers["MsrParams"])["SteelTech"]);
  210. return steeltech;
  211. }
  212. public string GetResultDBPath()
  213. {
  214. string ResultDbPath = FilePath + "\\FIELD_FILES\\Inclusion.db";
  215. return ResultDbPath;
  216. }
  217. public string FileId
  218. {
  219. get;
  220. set;
  221. }
  222. /// <summary>
  223. /// FileName
  224. /// </summary>
  225. public string anotherFileName
  226. {
  227. get;
  228. set;
  229. }
  230. /// <summary>
  231. /// FileName
  232. /// </summary>
  233. public string FileName_real
  234. {
  235. get;
  236. set;
  237. }
  238. /// <summary>
  239. /// FilePath
  240. /// </summary>
  241. public string FilePath
  242. {
  243. get;
  244. set;
  245. }
  246. /// <summary>
  247. /// ResuitInfo
  248. /// </summary>
  249. public Dictionary<string, object> ResultInfo
  250. {
  251. get;
  252. set;
  253. }
  254. public void SetResultInfoDic(Dictionary<string, object> info)
  255. {
  256. ResultInfo = info;
  257. }
  258. public List<Field> List_OTSField { get => list_OTSField; set => list_OTSField = value; }
  259. //public OTS_SysType_ID GetResultSystype()
  260. //{
  261. // var Systype = ((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)(Dictionary<string, object>)this.ResultInfo["Sample"])["Members"])["MsrParams"])["SysType"];
  262. // return (OTS_SysType_ID)(Convert.ToInt32( Systype.ToString().Split(':')[0]));
  263. //}
  264. }
  265. }