frmReportSysConfig.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813
  1. using OTSCommon.Model;
  2. using OTSIncAReportApp;
  3. using OTSIncAReportApp.Controls;
  4. using OTSIncAReportApp.OTSDataMgrFunction;
  5. using OTSIncAReportApp.OTSMgrInfo;
  6. using OTSIncAReportApp.SysMgrTools;
  7. using OTSRptPeriodicTable;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.IO;
  12. using System.Windows.Forms;
  13. namespace OTSIncAReprotCharts
  14. {
  15. public partial class frmReportSysConfig : Form
  16. {
  17. #region 变量
  18. public ResultDataMgr m_DataMgrFun = null;
  19. //粒级文件夹路径
  20. public static string m_PathName = "";
  21. //粒级文件夹获取
  22. public static string m_strPath = "";
  23. /// <summary>
  24. /// 保存的全局主窗体对象
  25. /// </summary>
  26. frmReportApp m_ReportApp;
  27. #endregion
  28. #region 构造函数及窗体加载
  29. public frmReportSysConfig(frmReportApp ReportApp)
  30. {
  31. InitializeComponent();
  32. //粒级部分
  33. this.m_DataMgrFun = ReportApp.m_rstDataMgr;
  34. m_ReportApp = ReportApp;
  35. //参数设置
  36. tb_sjtmbwj.Text = "";
  37. #region 国际化语言
  38. Language lan = new Language(this);
  39. #endregion
  40. }
  41. /// <summary>
  42. /// 加载下拉框控件数据
  43. /// </summary>
  44. private void BindCombobox()
  45. {
  46. //加载默认显示列名下拉框
  47. foreach (OTSIncAReportApp.OTSSampleReportInfo.ComputedColNameEnum enum_one in Enum.GetValues(typeof(OTSIncAReportApp.OTSSampleReportInfo.ComputedColNameEnum)))
  48. {
  49. string str_text = string.Empty;
  50. string str_value = string.Empty;
  51. if (enum_one == OTSIncAReportApp.OTSSampleReportInfo.ComputedColNameEnum.Area)
  52. {
  53. str_text = "面积";
  54. }
  55. if (enum_one == OTSIncAReportApp.OTSSampleReportInfo.ComputedColNameEnum.EquivalentCircleDiameter)
  56. {
  57. str_text = "等效圆直径";
  58. }
  59. if (enum_one == OTSIncAReportApp.OTSSampleReportInfo.ComputedColNameEnum.MaxDiameter)
  60. {
  61. str_text = "最长直径";
  62. }
  63. if (enum_one == OTSIncAReportApp.OTSSampleReportInfo.ComputedColNameEnum.MinDiameter)
  64. {
  65. str_text = "最短直径";
  66. }
  67. if (enum_one == OTSIncAReportApp.OTSSampleReportInfo.ComputedColNameEnum.DiameterRatio)
  68. {
  69. str_text = "长短直径比";
  70. }
  71. if (enum_one == OTSIncAReportApp.OTSSampleReportInfo.ComputedColNameEnum.FerretDiameter)
  72. {
  73. str_text = "费雷特直径";
  74. }
  75. }
  76. }
  77. private void ReportMgrInfoForm_Load(object sender, EventArgs e)
  78. {
  79. //初始化数据
  80. InitMyComponent();
  81. }
  82. #endregion
  83. #region 自定义方法
  84. public void InitMyComponent()
  85. {
  86. string imagepath;
  87. //显示程序管理对话框参数设置
  88. string strbpath = ".\\Config\\ProData\\";
  89. tb_PartiSizeFileFolder.Text = strbpath;
  90. imagepath = strbpath;
  91. tb_sjtmb.Text = strbpath;
  92. tb_sjtmbwj.Text = "DefaultTriTemplateFile.tpf";
  93. //一般参数内的所有textbox不可修改
  94. tb_sjtmb.ReadOnly = true;
  95. tb_sjtmbwj.ReadOnly = true;
  96. tb_PartiSizeFileFolder.ReadOnly = true;
  97. string str_DefaultComputedColName = "", str_ElementsColName = "";
  98. DataSet ds = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.GetXmlData(Application.StartupPath + m_ReportApp.m_OTSReportMgrParamFile, "XMLData");
  99. DataTable dt = ds.Tables["Member"];
  100. string str_scale="";
  101. foreach (DataRow element in dt.Rows)
  102. {
  103. string RegName = element["RegName"].ToString();
  104. if (RegName == "DefaultComputedColName")
  105. {
  106. str_DefaultComputedColName = element["strValue"].ToString();
  107. }
  108. if (RegName == "ElementsColName")
  109. {
  110. str_ElementsColName = element["strValue"].ToString();
  111. }
  112. if (RegName == "Scale")
  113. {
  114. str_scale = element["strValue"].ToString();
  115. }
  116. }
  117. //比例因子
  118. tb_blyz.Text = str_scale;
  119. //显示元素
  120. tb_xsys.Text = str_ElementsColName;
  121. //设置计算显示列
  122. SetShowColumnsListStr(str_DefaultComputedColName);
  123. }
  124. private void tb_blyz_KeyPress(object sender, KeyPressEventArgs e)
  125. {
  126. if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8 && (int)e.KeyChar != 46)
  127. e.Handled = true;
  128. //小数点的处理。
  129. if ((int)e.KeyChar == 46) //小数点
  130. {
  131. if (tb_blyz.Text.Length <= 0)
  132. e.Handled = true; //小数点不能在第一位
  133. else
  134. {
  135. float f;
  136. float oldf;
  137. bool b1 = false, b2 = false;
  138. b1 = float.TryParse(tb_blyz.Text, out oldf);
  139. b2 = float.TryParse(tb_blyz.Text + e.KeyChar.ToString(), out f);
  140. if (b2 == false)
  141. {
  142. if (b1 == true)
  143. e.Handled = true;
  144. else
  145. e.Handled = false;
  146. }
  147. }
  148. }
  149. }
  150. #endregion
  151. #region 三元相图相关
  152. //三元相图模板文件夹
  153. private void btn_klljwjj_Click(object sender, EventArgs e)
  154. {
  155. if (tb_PartiSizeFileFolder.Text == ".\\Config\\ProData\\")
  156. {
  157. string strb = ".\\Config\\ProData\\";
  158. folderBrowserDialog1.SelectedPath = strb;
  159. if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
  160. {
  161. tb_PartiSizeFileFolder.Text = folderBrowserDialog1.SelectedPath;
  162. }
  163. }
  164. else
  165. {
  166. if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
  167. {
  168. tb_PartiSizeFileFolder.Text = folderBrowserDialog1.SelectedPath;
  169. }
  170. else
  171. {
  172. tb_PartiSizeFileFolder.Text = folderBrowserDialog1.SelectedPath;
  173. }
  174. }
  175. }
  176. private void btn_sjtwj_Click(object sender, EventArgs e)
  177. {
  178. Triangulation_List tl = new Triangulation_List(m_ReportApp);
  179. tl.ShowDialog();
  180. }
  181. #endregion
  182. #region 粒级相关
  183. //颗粒粒级文件夹
  184. private void btn_sjtmbwjj_Click(object sender, EventArgs e)
  185. {
  186. //点击颗粒粒级文件夹按钮
  187. folderBrowserDialog1.ShowDialog();
  188. tb_sjtmb.Text = folderBrowserDialog1.SelectedPath;
  189. }
  190. private void btn_PartSize_Click(object sender, EventArgs e)
  191. {
  192. frmPartSizeEditorNew fPSEN = new frmPartSizeEditorNew(m_ReportApp, tb_PartiSizeFileFolder.Text);
  193. if (fPSEN.ShowDialog() == DialogResult.OK)
  194. {
  195. }
  196. }
  197. #endregion
  198. #region 报告模板相关
  199. //报表模板
  200. private void btn_bbmbwjj_Click(object sender, EventArgs e)
  201. {
  202. FolderBrowserDialog ofd = new FolderBrowserDialog();
  203. if (ofd.ShowDialog() == DialogResult.OK)
  204. {
  205. //tb_bgmb.Text = ofd.SelectedPath + @"\";
  206. }
  207. }
  208. //参数设置,报告模板文件
  209. private void button2_Click(object sender, EventArgs e)
  210. {
  211. //if (tb_bgmb.Text != "")
  212. //{
  213. // OpenFileDialog op = new OpenFileDialog();
  214. // string strpath = "";
  215. // op.InitialDirectory = tb_bgmb.Text;
  216. // if (op.ShowDialog() == DialogResult.OK)
  217. // {
  218. // strpath = op.FileName;
  219. // tb_bgmbwj.Text = strpath;
  220. // }
  221. //}
  222. }
  223. #endregion
  224. #region 报告参数设置相关
  225. //取消
  226. private void btn_ybcsqx_Click(object sender, EventArgs e)
  227. {
  228. this.Close();
  229. }
  230. public string strParSizeFile = "";
  231. //保存报告文件
  232. private void btn_ybcsbc_Click(object sender, EventArgs e)
  233. {
  234. //参数设置保存功能粒级文件
  235. strParSizeFile = tb_PartiSizeFileFolder.Text;
  236. String strTritempFile = tb_sjtmb.Text;
  237. string strTritemp = tb_sjtmbwj.Text;
  238. //保存显示计算项
  239. string[] AttributeName_DefaultComputedColName = new string[] { "RegName", "strValue" };
  240. string[] Value_DefaultComputedColName = new string[] { "DefaultComputedColName", GetShowColumnsListStr() };
  241. bool ret = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.UpdateByAttribute(Application.StartupPath + m_ReportApp.m_OTSReportMgrParamFile, AttributeName_DefaultComputedColName, Value_DefaultComputedColName);
  242. //保存显示元素信息
  243. string[] AttributeName_ElementsColName = new string[] { "RegName", "strValue" };
  244. string[] Value_ElementsColName = new string[] { "ElementsColName", tb_xsys.Text.Trim()};
  245. ret = OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.UpdateByAttribute(Application.StartupPath + m_ReportApp.m_OTSReportMgrParamFile, AttributeName_ElementsColName, Value_ElementsColName);
  246. //比例因子
  247. OTSIncAReportApp.DataOperation.DataAccess.XMLoperate.EditXmlInfo(Application.StartupPath + m_ReportApp.m_OTSReportMgrParamFile, "Scale", "strValue", tb_blyz.Text.ToString());
  248. //因为设置了颗粒列表的显示列,颗粒列表则需要重新加载,设置为null,后面可以重新加载
  249. m_ReportApp.im_ParticlesGridDevidePage = null;
  250. this.Close();
  251. }
  252. #endregion
  253. #region 规则标准库部份
  254. private void button2_Click_1(object sender, EventArgs e)
  255. {
  256. //标准库规则编辑器
  257. string exefile = "OTSPartA_STDEditor_d.exe";
  258. if (File.Exists(exefile))
  259. {
  260. System.Diagnostics.Process process = new System.Diagnostics.Process();
  261. // params 为 string 类型的参数,多个参数以空格分隔,如果某个参数为空,可以传入””
  262. System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(exefile, "");
  263. process.StartInfo = startInfo;
  264. process.Start();
  265. }
  266. }
  267. #endregion
  268. private void btn_xsys_Click(object sender, EventArgs e)
  269. {
  270. //打开编辑元素列表窗体
  271. OTSPeriodicTableForm_Small opts = new OTSPeriodicTableForm_Small();
  272. //获取需要显示的元素列表,并转换成元素周期表窗体可接受的格式,传入----------------------
  273. string str_xsys = tb_xsys.Text.Trim();
  274. List<string> list_str = new List<string>();
  275. string[] strs = str_xsys.Split(',');
  276. for (int i = 0; i < strs.Length; i++)
  277. {
  278. list_str.Add(strs[i]);
  279. }
  280. //清除元素周期表中所有的记录
  281. opts.m_List_Periodic.Clear();
  282. //将该分类下的元素添加到元素周期表窗体的List_periodic中
  283. for (int i = 0; i < strs.Length; i++)
  284. {
  285. string str_ysm = strs[i];
  286. Periodic ls_periodic = new Periodic();
  287. ls_periodic = CListPeriodic.GetPeriodicByYsm(CListPeriodic.GetListPeriodic(), str_ysm);
  288. opts.m_List_Periodic.Add(ls_periodic);
  289. }
  290. //----------------------------------------------------------------------------------------
  291. opts.StartPosition = FormStartPosition.CenterScreen;
  292. opts.ShowDialog();
  293. List<string> PeriodicFH = new List<string>();
  294. for (int j = 0; j < opts.m_List_Periodic.Count; j++)
  295. {
  296. PeriodicFH.Add(opts.m_List_Periodic[j].FH);
  297. }
  298. PeriodicFH.Sort(delegate (string a, string b) { return ReturnsAtomicNumberByElementName(a).CompareTo(ReturnsAtomicNumberByElementName(b)); });//排序 从小到大原子序数
  299. list_str = list_str.FindAll(delegate (string a) { return PeriodicFH.Contains(a); });
  300. PeriodicFH = PeriodicFH.FindAll(delegate (string a) { return !list_str.Contains(a); });
  301. //先清空元素
  302. str_xsys = "";
  303. //然后再将选择的元素,组合起来,返回显示到该窗体上
  304. for (int i = 0; i < list_str.Count; i++)
  305. {
  306. if (str_xsys == "")
  307. {
  308. str_xsys = list_str[i];
  309. }
  310. else
  311. {
  312. str_xsys = str_xsys + "," + list_str[i];
  313. }
  314. }
  315. for (int i = 0; i < PeriodicFH.Count; i++)
  316. {
  317. if (str_xsys == "")
  318. {
  319. str_xsys = PeriodicFH[i];
  320. }
  321. else
  322. {
  323. str_xsys = str_xsys + "," + PeriodicFH[i];
  324. }
  325. }
  326. //再对选择的元素进行显示
  327. tb_xsys.Text = str_xsys;
  328. }
  329. /// <summary>
  330. /// 将配置文件中的字段,拆分设置到各checkbox中
  331. /// </summary>
  332. private void SetShowColumnsListStr(string in_str)
  333. {
  334. cb_Area.Checked = false;
  335. cb_EquivalentCircleDiameter.Checked = false;
  336. cb_MaxDiameter.Checked = false;
  337. cb_MinDiameter.Checked = false;
  338. cb_DiameterRatio.Checked = false;
  339. cb_FerretDiameter.Checked = false;
  340. cb_PERP.Checked = false;
  341. cb_PERI.Checked = false;
  342. cb_INSCR.Checked = false;
  343. cb_MEAN.Checked = false;
  344. cb_ELONG.Checked = false;
  345. cb_ASPECT_ELONG.Checked = false;
  346. cb_Orientation.Checked = false;
  347. cB_Hardness.Checked = false;
  348. cB_Density.Checked = false;
  349. cB_Electrical_conductivity.Checked = false;
  350. //面积
  351. if (in_str.IndexOf("Area") > -1)
  352. {
  353. cb_Area.Checked = true;
  354. }
  355. //等效圆直径
  356. if (in_str.IndexOf("EquivalentCircleDiameter") > -1)
  357. {
  358. cb_EquivalentCircleDiameter.Checked = true;
  359. }
  360. //最长直径
  361. if (in_str.IndexOf("MaxDiameter") > -1)
  362. {
  363. cb_MaxDiameter.Checked = true;
  364. }
  365. //最短直径
  366. if (in_str.IndexOf("MinDiameter") > -1)
  367. {
  368. cb_MinDiameter.Checked = true;
  369. }
  370. //长短直径比
  371. if (in_str.IndexOf("DiameterRatio") > -1)
  372. {
  373. cb_DiameterRatio.Checked = true;
  374. }
  375. //费雷特直径
  376. if (in_str.IndexOf("FerretDiameter") > -1)
  377. {
  378. cb_FerretDiameter.Checked = true;
  379. }
  380. //正交直径
  381. if (in_str.IndexOf("PERP") > -1)
  382. {
  383. cb_PERP.Checked = true;
  384. }
  385. //周长
  386. if (in_str.IndexOf("PERI") > -1)
  387. {
  388. cb_PERI.Checked = true;
  389. }
  390. //内接圆直径
  391. if (in_str.IndexOf("INSCR") > -1)
  392. {
  393. cb_INSCR.Checked = true;
  394. }
  395. //内接圆平均直径
  396. if (in_str.IndexOf("MEAN") > -1)
  397. {
  398. cb_MEAN.Checked = true;
  399. }
  400. //展开长度
  401. if (in_str.IndexOf("ELONG") > -1)
  402. {
  403. cb_ELONG.Checked = true;
  404. }
  405. //展开长度比
  406. if (in_str.IndexOf("ASPECT_ELONG") > -1)
  407. {
  408. cb_ASPECT_ELONG.Checked = true;
  409. }
  410. //朝向角度
  411. if (in_str.IndexOf("Orientation") > -1)
  412. {
  413. cb_Orientation.Checked = true;
  414. }
  415. //帧图坐标
  416. if (in_str.IndexOf("FiledCoordinate") > -1)
  417. {
  418. cb_FiledCoordinate.Checked = true;
  419. }
  420. List<ResultFile> resfileList = m_ReportApp.m_rstDataMgr.ResultFilesList;
  421. if (resfileList.Count > 0)
  422. {
  423. ResultFile resfile = resfileList[m_ReportApp.m_rstDataMgr.GetWorkingResult()];
  424. if (((Dictionary<string, object>)((Dictionary<string, object>)((Dictionary<string, object>)resfile.ResultInfo["Sample"])["Members"])["MsrParams"])["SysType"].ToString() == "1:CleannessA")
  425. {
  426. cB_Hardness.Enabled = true;
  427. cB_Density.Enabled = true;
  428. cB_Electrical_conductivity.Enabled = true;
  429. //硬度
  430. if (in_str.IndexOf("Hardness") > -1)
  431. {
  432. cB_Hardness.Checked = true;
  433. }
  434. //密度
  435. if (in_str.IndexOf("Density") > -1)
  436. {
  437. cB_Density.Checked = true;
  438. }
  439. //导电性
  440. if (in_str.IndexOf("Electrical_conductivity") > -1)
  441. {
  442. cB_Electrical_conductivity.Checked = true;
  443. }
  444. }
  445. else
  446. {
  447. cB_Hardness.Enabled = false;
  448. cB_Density.Enabled = false;
  449. cB_Electrical_conductivity.Enabled = false;
  450. }
  451. }
  452. else
  453. {
  454. cB_Hardness.Enabled = false;
  455. cB_Density.Enabled = false;
  456. cB_Electrical_conductivity.Enabled = false;
  457. }
  458. //按高经理要求,先都默认全部都是勾选上
  459. //cb_Area.Checked = true;
  460. //cb_EquivalentCircleDiameter.Checked = true;
  461. //cb_MaxDiameter.Checked = true;
  462. //cb_MinDiameter.Checked = true;
  463. //cb_DiameterRatio.Checked = true;
  464. //cb_FerretDiameter.Checked = true;
  465. //cb_PERP.Checked = true;
  466. //cb_PERI.Checked = true;
  467. //cb_INSCR.Checked = true;
  468. //cb_MEAN.Checked = true;
  469. //cb_ELONG.Checked = true;
  470. //cb_ASPECT_ELONG.Checked = true;
  471. //cb_ASPECT_MAX.Checked = true;
  472. //cb_Orientation.Checked = true;
  473. }
  474. /// <summary>
  475. /// 获取从各checkbox中组合完成的字段
  476. /// </summary>
  477. private string GetShowColumnsListStr()
  478. {
  479. string str_ret = "";
  480. //帧图坐标
  481. if (cb_FiledCoordinate.Checked == true)
  482. {
  483. str_ret = str_ret + "FiledCoordinate" + ",";
  484. }
  485. //面积
  486. if (cb_Area.Checked == true)
  487. {
  488. str_ret = str_ret + "Area" + ",";
  489. }
  490. //等效圆直径
  491. if (cb_EquivalentCircleDiameter.Checked == true)
  492. {
  493. str_ret = str_ret + "EquivalentCircleDiameter" + ",";
  494. }
  495. //最长直径
  496. if (cb_MaxDiameter.Checked == true)
  497. {
  498. str_ret = str_ret + "MaxDiameter" + ",";
  499. }
  500. //最短直径
  501. if (cb_MinDiameter.Checked == true)
  502. {
  503. str_ret = str_ret + "MinDiameter" + ",";
  504. }
  505. //长短直径比
  506. if (cb_DiameterRatio.Checked == true)
  507. {
  508. str_ret = str_ret + "DiameterRatio" + ",";
  509. }
  510. //费雷特直径
  511. if (cb_FerretDiameter.Checked == true)
  512. {
  513. str_ret = str_ret + "FerretDiameter" + ",";
  514. }
  515. //正交直径
  516. if (cb_PERP.Checked == true)
  517. {
  518. str_ret = str_ret + "PERP" + ",";
  519. }
  520. //周长
  521. if (cb_PERI.Checked == true)
  522. {
  523. str_ret = str_ret + "PERI" + ",";
  524. }
  525. //内接圆直径
  526. if (cb_INSCR.Checked == true)
  527. {
  528. str_ret = str_ret + "INSCR" + ",";
  529. }
  530. //内接圆平均直径
  531. if (cb_MEAN.Checked == true)
  532. {
  533. str_ret = str_ret + "MEAN" + ",";
  534. }
  535. //展开长度
  536. if (cb_ELONG.Checked == true)
  537. {
  538. str_ret = str_ret + "ELONG" + ",";
  539. }
  540. //展开长度比
  541. if (cb_ASPECT_ELONG.Checked == true)
  542. {
  543. str_ret = str_ret + "ASPECT_ELONG" + ",";
  544. }
  545. //朝向角度
  546. if (cb_Orientation.Checked == true)
  547. {
  548. str_ret = str_ret + "Orientation" + ",";
  549. }
  550. //导电性
  551. if (cB_Electrical_conductivity.Checked == true)
  552. {
  553. str_ret = str_ret + "Electrical_conductivity" + ",";
  554. }
  555. //密度
  556. if (cB_Density.Checked == true)
  557. {
  558. str_ret = str_ret + "Density" + ",";
  559. }
  560. //硬度
  561. if (cB_Hardness.Checked == true)
  562. {
  563. str_ret = str_ret + "Hardness" + ",";
  564. }
  565. if (str_ret.Length > 0)
  566. {
  567. str_ret = str_ret.Substring(0, str_ret.Length - 1);
  568. }
  569. return str_ret;
  570. }
  571. /// <summary>
  572. /// 返回原子序数
  573. /// </summary>
  574. /// <param name="ElementName"></param>
  575. /// <returns></returns>
  576. int ReturnsAtomicNumberByElementName(string ElementName)
  577. {
  578. switch (ElementName)
  579. {
  580. case "H": return 1;
  581. case "He": return 2;
  582. case "Li": return 3;
  583. case "Be": return 4;
  584. case "B": return 5;
  585. case "C": return 6;
  586. case "N": return 7;
  587. case "O": return 8;
  588. case "F": return 9;
  589. case "Ne": return 10;
  590. case "Na": return 11;
  591. case "Mg": return 12;
  592. case "Al": return 13;
  593. case "Si": return 14;
  594. case "P": return 15;
  595. case "S": return 16;
  596. case "Cl": return 17;
  597. case "Ar": return 18;
  598. case "K": return 19;
  599. case "Ca": return 20;
  600. case "Sc": return 21;
  601. case "Ti": return 22;
  602. case "V": return 23;
  603. case "Cr": return 24;
  604. case "Mn": return 25;
  605. case "Fe": return 26;
  606. case "Co": return 27;
  607. case "Ni": return 28;
  608. case "Cu": return 29;
  609. case "Zn": return 30;
  610. case "Ga": return 31;
  611. case "Ge": return 32;
  612. case "As": return 33;
  613. case "Se": return 34;
  614. case "Br": return 35;
  615. case "Kr": return 36;
  616. case "Rb": return 37;
  617. case "Sr": return 38;
  618. case "Y": return 39;
  619. case "Zr": return 40;
  620. case "Nb": return 41;
  621. case "Mo": return 42;
  622. case "Tc": return 43;
  623. case "Ru": return 44;
  624. case "Rh": return 45;
  625. case "Pd": return 46;
  626. case "Ag": return 47;
  627. case "Cd": return 48;
  628. case "In": return 49;
  629. case "Sn": return 50;
  630. case "Sb": return 51;
  631. case "Te": return 52;
  632. case "I": return 53;
  633. case "Xe": return 54;
  634. case "Cs": return 55;
  635. case "Ba": return 56;
  636. case "La": return 57;
  637. case "Ce": return 58;
  638. case "Pr": return 59;
  639. case "Nd": return 60;
  640. case "Pm": return 61;
  641. case "Sm": return 62;
  642. case "Eu": return 63;
  643. case "Gd": return 64;
  644. case "Tb": return 65;
  645. case "Dy": return 66;
  646. case "Ho": return 67;
  647. case "Er": return 68;
  648. case "Tm": return 69;
  649. case "Yb": return 70;
  650. case "Lu": return 71;
  651. case "Hf": return 72;
  652. case "Ta": return 73;
  653. case "W": return 74;
  654. case "Re": return 75;
  655. case "Os": return 76;
  656. case "Ir": return 77;
  657. case "Pt": return 78;
  658. case "Au": return 79;
  659. case "Hq": return 80;
  660. case "TI": return 81;
  661. case "Pb": return 82;
  662. case "Bi": return 83;
  663. case "Po": return 84;
  664. case "At": return 85;
  665. case "Rn": return 86;
  666. case "Fr": return 87;
  667. case "Ra": return 88;
  668. case "Ac": return 89;
  669. case "Th": return 90;
  670. case "Pa": return 91;
  671. case "U": return 92;
  672. case "Np": return 93;
  673. case "Pu": return 94;
  674. case "Am": return 95;
  675. case "Cm": return 96;
  676. case "Bk": return 97;
  677. case "Cf": return 98;
  678. case "Es": return 99;
  679. case "Fm": return 100;
  680. case "Mc": return 101;
  681. case "No": return 102;
  682. case "Lr": return 103;
  683. case "Rf": return 104;
  684. case "Db": return 105;
  685. case "Sg": return 106;
  686. case "Bh": return 107;
  687. case "Hs": return 108;
  688. case "Mt": return 109;
  689. case "Ds": return 110;
  690. case "Rg": return 111;
  691. case "Unb": return 112;
  692. default: return 1000;
  693. }
  694. }
  695. }
  696. }