ResultFile.cs 15 KB

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