ResultFile.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  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 string GetSTDEngineType()
  160. {
  161. try
  162. {
  163. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  164. string STDEngineType = ((Dictionary<string, object>)sampleMembers["MsrParams"])["EngineType"].ToString();
  165. return STDEngineType;
  166. }
  167. catch
  168. {
  169. return "-1";
  170. }
  171. }
  172. public bool GetUseSysSTD()
  173. {
  174. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  175. string UseSysSTD = ((Dictionary<string, object>)sampleMembers["MsrParams"])["UseSysSTD"].ToString();
  176. return Convert.ToBoolean(UseSysSTD);
  177. }
  178. public int GetOverlapParam()
  179. {
  180. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  181. Dictionary<string, object> imageProcParam = (Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)sampleMembers["MsrParams"])["Members"])["ImageProcessParam"];
  182. try
  183. {
  184. string overlap = imageProcParam["OverlapParam"].ToString();
  185. return Convert.ToInt32(overlap);
  186. }
  187. catch
  188. {
  189. return 0;
  190. }
  191. }
  192. public double GetTotalArea()
  193. {
  194. try
  195. {
  196. double dTotalArea = -1;
  197. Dictionary<string, object> valuePairs=(Dictionary<string, object>)ResultInfo["Sample"];
  198. if (valuePairs.ContainsKey("TotalArea"))
  199. {
  200. dTotalArea = Convert.ToDouble(valuePairs["TotalArea"]) /**1000000*/ ;
  201. return dTotalArea;
  202. }
  203. else
  204. {
  205. return -1;
  206. }
  207. }
  208. catch
  209. {
  210. return -1;
  211. }
  212. }
  213. public int GetIncASteeltech()
  214. {
  215. //--------the int number meaning----------
  216. //GeneralProcessMode = 0,
  217. //CaProcessMode = 1,
  218. //MgProcessMode = 2,
  219. //RareEarthMode = 3
  220. //------------------
  221. Dictionary<string, object> sampleMembers = ((Dictionary<string, object>)((Dictionary<string, object>)ResultInfo["Sample"])["Members"]);
  222. int steeltech = Convert.ToInt32(((Dictionary<string, object>)sampleMembers["MsrParams"])["SteelTech"]);
  223. return steeltech;
  224. }
  225. public string GetResultDBPath()
  226. {
  227. string ResultDbPath = FilePath + "\\FIELD_FILES\\Inclusion.db";
  228. return ResultDbPath;
  229. }
  230. public string FileId
  231. {
  232. get;
  233. set;
  234. }
  235. /// <summary>
  236. /// FileName
  237. /// </summary>
  238. public string anotherFileName
  239. {
  240. get;
  241. set;
  242. }
  243. /// <summary>
  244. /// FileName
  245. /// </summary>
  246. public string FileName_real
  247. {
  248. get;
  249. set;
  250. }
  251. /// <summary>
  252. /// FilePath
  253. /// </summary>
  254. public string FilePath
  255. {
  256. get;
  257. set;
  258. }
  259. /// <summary>
  260. /// ResuitInfo
  261. /// </summary>
  262. public Dictionary<string, object> ResultInfo
  263. {
  264. get;
  265. set;
  266. }
  267. public void SetResultInfoDic(Dictionary<string, object> info)
  268. {
  269. ResultInfo = info;
  270. }
  271. public List<Field> List_OTSField { get => list_OTSField; set => list_OTSField = value; }
  272. //public OTS_SysType_ID GetResultSystype()
  273. //{
  274. // var Systype = ((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)(Dictionary<string, object>)this.ResultInfo["Sample"])["Members"])["MsrParams"])["SysType"];
  275. // return (OTS_SysType_ID)(Convert.ToInt32( Systype.ToString().Split(':')[0]));
  276. //}
  277. }
  278. }