Rules.cs 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows.Forms;
  7. namespace SmartCoalApplication.Base.AutoMeasure
  8. {
  9. //输出位置与名称
  10. public class Biaoxiang
  11. {
  12. public string content { get; set; }
  13. public string posizion { get; set; }
  14. }
  15. //规程类
  16. public class Rules
  17. {
  18. public string mingcheng { get; set; }
  19. public string beizhu { get; set; }
  20. public Biaoxiang liaohao = new Biaoxiang();
  21. public Biaoxiang banci = new Biaoxiang();
  22. public Biaoxiang shiyanshi = new Biaoxiang();
  23. public Biaoxiang shiyongchangqu = new Biaoxiang();
  24. public Biaoxiang zhichengbie = new Biaoxiang();
  25. public Biaoxiang danhao = new Biaoxiang();
  26. public Biaoxiang pihao = new Biaoxiang();
  27. public Biaoxiang cengbie = new Biaoxiang();
  28. public Biaoxiang dianduxianbie = new Biaoxiang();
  29. public Biaoxiang danwei = new Biaoxiang();
  30. public string number { get; set; }
  31. //储存分类
  32. public List<RootSort> sorts = new List<RootSort>();
  33. //初始化
  34. public void Initialize()
  35. {
  36. RootSort qianmangkong = new RootSort();
  37. string[] qianmangkongInfor = { "qianmangkong", "淺盲孔" };
  38. string[] qianmangkongErjiInfor = { "chujianQianmangkong", "初件淺盲孔" };
  39. qianmangkong.Initialize(qianmangkongInfor, qianmangkongErjiInfor, 1);
  40. qianmangkong.ConectTree();
  41. string[] celiangxianName = { "zuidazhi","zuixiaozhi","pingjunzhi","shangJicaitong","xiaJicaitong","shangMiantong+Jicaitong","xiaMiantong+Jicaitong"
  42. ,"shangMiantong","xiaMiantong","zuoKongtong","youKongtong","shangKongjing","xiaKongjing","kongdi","kongdiyaoshiliang"};
  43. string[] celiangxianText = {"最大值","最小值","平均值", "上基材銅","下基材銅","上面銅+基材銅","下面銅+基材銅","上面銅","下面銅","左孔銅",
  44. "右孔銅","上孔徑","下孔徑","孔底","孔底咬蝕量" };
  45. qianmangkong.erjimulus[0].InitializeCeliangxian(celiangxianName, celiangxianText, 15);
  46. sorts.Add(qianmangkong);
  47. RootSort shenmangkong = new RootSort();
  48. string[] shenmangkongInfor = { "shenamngkong", "深盲孔" };
  49. string[] shenmangkongErjiInfor = { "shenmangkongDanceng", "深盲孔單層", "shenmangkongShuangceng", "深盲孔雙層" };
  50. shenmangkong.Initialize(shenmangkongInfor, shenmangkongErjiInfor, 2);
  51. shenmangkong.ConectTree();
  52. string[] shenmangkongCeliangxianName1 = { "zuidazhi","zuixiaozhi","pingjunzhi","shangJicaitong","xiaJicaitong","shangMiantong+Jicaitong","xiaMiantong+Jicaitong"
  53. ,"shangMiantong","xiaMiantong","zuoKongtong","youKongtong","shangKongjing","xiaKongjing","kongdi","kongdiyaoshiliang","kongshen","zuoJiaohou","youJiaohou","zuoJiaoneisuo","youJiaoneisuo" };
  54. string[] shenmangkongCeliangxianText1 = { "最大值", "最小值", "平均值", "上基材銅","下基材銅","上面銅+基材銅","下面銅+基材銅","上面銅","下面銅","左孔銅",
  55. "右孔銅","上孔徑","下孔徑","孔底","孔底咬蝕量","孔深","左膠厚","右膠厚","左膠内縮","右膠内縮" };
  56. shenmangkong.erjimulus[0].InitializeCeliangxian(shenmangkongCeliangxianName1, shenmangkongCeliangxianText1, 20);
  57. string[] shenmangkongCeliangxianName2 = { "zuidazhi", "zuixiaozhi", "pingjunzhi","shangcengShangJicaitong","shangcengXiaJicaitong","shangcengShangMiantong+Jicaitong",
  58. "shangcengXiaMiantong+Jicaitong","shangcengShangMiantong","shangcengXiaMiantong","shangcengZuoKongtong","shangcengYouKongtong","shangcengShangKongjing","shangcengXiaKongjing",
  59. "shangcengKongdi","shangcengKongdiyaoshiliang","shangcengKongshen","shangcengZuoJiaohou","shangcengYouJiaohou","shangcengZuoJiaoneisuo","shangcengYouJiaoneisuo",
  60. "xiacengShangJicaitong","xiacengXiaJicaitong","xiacengShangMiantong+Jicaitong",
  61. "xiacengXiaMiantong+Jicaitong","xiacengShangMiantong","xiacengXiaMiantong","xiacengZuoKongtong","xiacengYouKongtong","xiacengShangKongjing","xiacengXiaKongjing",
  62. "xiacengKongdi","xiacengKongdiyaoshiliang","xiacengKongshen","xiacengZuoJiaohou","xiacengYouJiaohou","xiacengZuoJiaoneisuo","xiacengYouJiaoneisuo"};
  63. string[] shenmangkongCeliangxianText2 = {"最大值", "最小值", "平均值", "上層上基材銅","上層下基材銅","上層上面銅+基材銅","上層下面銅+基材銅","上層上面銅","上層下面銅","上層左孔銅",
  64. "上層右孔銅","上層上孔徑","上層下孔徑","上層孔底","上層孔底咬蝕量","上層孔深","上層左膠厚","上層右膠厚","上層左膠内縮","上層右膠内縮" ,"下層上基材銅","下層下基材銅","下層上面銅+基材銅"
  65. ,"下層下面銅+基材銅","下層上面銅","下層下面銅","下層左孔銅",
  66. "下層右孔銅","下層上孔徑","下層下孔徑","下層孔底","下層孔底咬蝕量","下層孔深","下層左膠厚","下層右膠厚","下層左膠内縮","下層右膠内縮" };
  67. shenmangkong.erjimulus[1].InitializeCeliangxian(shenmangkongCeliangxianName2, shenmangkongCeliangxianText2, 37);
  68. sorts.Add(shenmangkong);
  69. //string input="一+-一";
  70. //var arr = input.Split(mathMarks);char[] mathMarks = { '+', '-', '*', '/' };
  71. RootSort sicengban = new RootSort();
  72. string[] sicengbanInfor = { "sicengban","通孔-四層板" };
  73. string[] sicengbanErjiInfor = { "sicengbanZuo", "四層板左", "sicengbanYou", "四層板右", "sicengbanKongjing", "四層板孔徑" };
  74. sicengban.Initialize(sicengbanInfor, sicengbanErjiInfor, 3);
  75. sicengban.ConectTree();
  76. string[] sicengbanCeliangxianName1 = {"zuidazhi","zuixiaozhi","pingjunzhi","shangJicaitong","xiaJicaitong","shangMiantong+Jicaitong","xiaMiantong+Jicaitong"
  77. ,"shangMiantong","xiaMiantong","shangCucaodu","xiaCucaodu","shangKongtong","zhongKongtong","xiaKongtong" };
  78. string[] sicengbanCeliangxianText1 = { "最大值", "最小值", "平均值", "上基材銅", "下基材銅" , "上面銅+基材銅", "下面銅+基材銅", "上面銅", "下面銅","上粗糙度","下粗糙度","上孔銅","中孔銅","下孔銅" };
  79. sicengban.erjimulus[0].InitializeCeliangxian(sicengbanCeliangxianName1, sicengbanCeliangxianText1, 14);
  80. sicengban.erjimulus[1].InitializeCeliangxian(sicengbanCeliangxianName1, sicengbanCeliangxianText1, 14);
  81. string[] sicengbanCeliangxianName2 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "shangKongjing", "xiaKongjing" };
  82. string[] sicengbanCeliangxianText2 = { "最大值", "最小值", "平均值", "上孔徑", "下孔徑" };
  83. sicengban.erjimulus[2].InitializeCeliangxian(sicengbanCeliangxianName2, sicengbanCeliangxianText2, 5);
  84. sorts.Add(sicengban);
  85. RootSort sancengban = new RootSort();
  86. string[] sancengbanInfor = { "sancengban", "通孔-三層板" };
  87. string[] sancengbanErjiInfor = { "sancengbanZuo", "三層板左", "sancengbanYou", "三層板右","sancengbanQuan","三層板全" };
  88. sancengban.Initialize(sancengbanInfor, sancengbanErjiInfor, 3);
  89. sancengban.ConectTree();
  90. string[] sancengbanCeliangxianName1 = {"zuidazhi","zuixiaozhi","pingjunzhi","shangJicaitong","xiaJicaitong","shangMiantong+Jicaitong","xiaMiantong+Jicaitong"
  91. ,"shangMiantong","xiaMiantong","cucaodu","shangKongtong","xiaKongtong" };
  92. string[] sancengbanCeliangxianText1 = { "最大值", "最小值", "平均值", "上基材銅", "下基材銅", "上面銅+基材銅", "下面銅+基材銅", "上面銅", "下面銅", "粗糙度", "上孔銅", "下孔銅" };
  93. sancengban.erjimulus[0].InitializeCeliangxian(sancengbanCeliangxianName1, sancengbanCeliangxianText1, 12);
  94. sancengban.erjimulus[1].InitializeCeliangxian(sancengbanCeliangxianName1, sancengbanCeliangxianText1, 12);
  95. string[] sancengbanCeliangxianName2 = {"zuidazhi","zuixiaozhi","pingjunzhi","zuoceShangJicaitong","zuoceXiaJicaitong","zuoceShangMiantong+Jicaitong","zuoceXiaMiantong+Jicaitong"
  96. ,"zuoceShangMiantong","zuoceXiaMiantong","zuoceCucaodu","zuoceShangKongtong","zuoceXiaKongtong",
  97. "youceShangJicaitong","youceXiaJicaitong","youceShangMiantong+Jicaitong","youceXiaMiantong+Jicaitong"
  98. ,"youceShangMiantong","youceXiaMiantong","youceCucaodu","youceShangKongtong","youceXiaKongtong","shangKongjing","xiaKongjing"};
  99. string[] sancengbanCeliangxianText2 = { "最大值", "最小值", "平均值", "左側上基材銅", "左側下基材銅", "左側上面銅+基材銅", "左側下面銅+基材銅", "左側上面銅", "左側下面銅", "左側粗糙度", "左側上孔銅", "左側下孔銅",
  100. "右側上基材銅", "右側下基材銅", "右側上面銅+基材銅", "右側下面銅+基材銅", "右側上面銅", "右側下面銅", "右側粗糙度", "右側上孔銅", "右側下孔銅","上孔徑","下孔徑"};
  101. sancengban.erjimulus[2].InitializeCeliangxian(sancengbanCeliangxianName2, sancengbanCeliangxianText2, 23);
  102. sorts.Add(sancengban);
  103. RootSort liangcengban = new RootSort();
  104. string[] liangcengbanInfor = { "liangcengban", "通孔-兩層板" };
  105. string[] liangcengbanErjiInfor = { "liangcengbanZuo", "兩層板左", "liangcengbanYou", "兩層板右", "liangcengbanQuan", "兩層板全" };
  106. liangcengban.Initialize(liangcengbanInfor, liangcengbanErjiInfor, 3);
  107. liangcengban.ConectTree();
  108. string[] liangcengbanCeliangxianName1 = { "zuidazhi","zuixiaozhi","pingjunzhi","shangJicaitong","xiaJicaitong","shangMiantong+Jicaitong","xiaMiantong+Jicaitong"
  109. ,"shangMiantong","xiaMiantong","kongtong"};
  110. string[] liangcengbanCeliangxianText1 = { "最大值", "最小值", "平均值", "上基材銅", "下基材銅", "上面銅+基材銅", "下面銅+基材銅", "上面銅", "下面銅", "孔銅" };
  111. liangcengban.erjimulus[0].InitializeCeliangxian(liangcengbanCeliangxianName1, liangcengbanCeliangxianText1, 10);
  112. liangcengban.erjimulus[1].InitializeCeliangxian(liangcengbanCeliangxianName1, liangcengbanCeliangxianText1, 10);
  113. string[] liangcengbanCeliangxianName2 = { "zuidazhi","zuixiaozhi","pingjunzhi","zuoceShangJicaitong","zuoceXiaJicaitong","zuoceShangMiantong+Jicaitong","zuoceXiaMiantong+Jicaitong"
  114. ,"zuoceShangMiantong","zuoceXiaMiantong","zuocekongtong",
  115. "youceShangJicaitong","youceXiaJicaitong","youceShangMiantong+Jicaitong","youceXiaMiantong+Jicaitong"
  116. ,"youceShangMiantong","youceXiaMiantong","youcekongtong","shangKongjing","xiaKongjing"};
  117. string[] liangcengbanCeliangxianText2 = { "最大值", "最小值", "平均值", "左側上基材銅", "左側下基材銅", "左側上面銅+基材銅", "左側下面銅+基材銅", "左側上面銅", "左側下面銅", "左側孔銅",
  118. "右側上基材銅", "右側下基材銅", "右側上面銅+基材銅", "右側下面銅+基材銅", "右側上面銅", "右側下面銅", "右側孔銅","上孔徑","下孔徑"};
  119. liangcengban.erjimulus[2].InitializeCeliangxian(liangcengbanCeliangxianName2, liangcengbanCeliangxianText2, 19);
  120. sorts.Add(liangcengban);
  121. RootSort shikeyinzi = new RootSort();
  122. string[] shikeyinziInfor = { "shikeyinzi", "蝕刻因子" };
  123. string[] shikeyinziErjiInfor = { "shikeyinziDanceng", "蝕刻因子單層", "shikeyinziShuangceng", "蝕刻因子雙層" };
  124. shikeyinzi.Initialize(shikeyinziInfor, shikeyinziErjiInfor, 2);
  125. shikeyinzi.ConectTree();
  126. string[] shikeyinziCeliangxianName1 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "shangfu", "xiafu", "tonghou" };
  127. string[] shikeyinziCeliangxianText1 = { "最大值", "最小值", "平均值", "上幅", "下幅", "銅厚" };
  128. shikeyinzi.erjimulus[0].InitializeCeliangxian(shikeyinziCeliangxianName1, shikeyinziCeliangxianText1, 6);
  129. string[] shikeyinziCeliangxianName2 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "shangfu", "xiafu", "tonghou", "zonghou" };
  130. string[] shikeyinziCeliangxianText2 = { "最大值", "最小值", "平均值", "上幅", "下幅", "銅厚", "縂厚" };
  131. shikeyinzi.erjimulus[1].InitializeCeliangxian(shikeyinziCeliangxianName2, shikeyinziCeliangxianText2, 7);
  132. sorts.Add(shikeyinzi);
  133. RootSort fanghan = new RootSort();
  134. string[] fanghanInfor = { "fanghan", "防焊" };
  135. string[] fanghanErjiInfor = { "meikaikou", "沒開口", "youkaikou", "有開口", "shuangcengtong", "雙層銅" };
  136. fanghan.Initialize(fanghanInfor, fanghanErjiInfor, 3);
  137. fanghan.ConectTree();
  138. string[] fanghanCeliangxianName1 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "tonghou", "fanghanhoudu", "PIshangfanghanhoudu", "anquanjuli", "offset", "undercut" };
  139. string[] fanghanCeliangxianText1 = { "最大值", "最小值", "平均值", "銅厚", "防焊厚度", "PI上防焊厚度", "安全距離", "offset", "undercut" };
  140. fanghan.erjimulus[0].InitializeCeliangxian(fanghanCeliangxianName1, fanghanCeliangxianText1, 9);
  141. string[] fanghanCeliangxianName2 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "tonghou", "fanghanhoudu", "LPIhoudu", "anquanjuli", "offset", "undercut", "fanghankaikou" };
  142. string[] fanghanCeliangxianText2 = { "最大值", "最小值", "平均值", "銅厚", "防焊厚度", "LPI厚度", "安全距離", "offset", "undercut", "防焊開口" };
  143. fanghan.erjimulus[1].InitializeCeliangxian(fanghanCeliangxianName2, fanghanCeliangxianText2, 10);
  144. string[] fanghanCeliangxianName3 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "tonghou", "xianshangfanghan", "LPIhoudu", "安全距離", "offset", "undercut" };
  145. string[] fanghanCeliangxianText3 = { "最大值", "最小值", "平均值", "銅厚", "綫上防焊", "LPI厚度", "安全距離", "offset", "undercut" };
  146. fanghan.erjimulus[2].InitializeCeliangxian(fanghanCeliangxianName3, fanghanCeliangxianText3, 9);
  147. sorts.Add(fanghan);
  148. RootSort gaoducha = new RootSort();
  149. string[] gaoduchaInfor = { "gaoducha", "高度差" };
  150. string[] gaoduchaErjiInfor = { "zuoce", "左側", "youce", "右側", "quan", "全" };
  151. gaoducha.Initialize(gaoduchaInfor, gaoduchaErjiInfor, 3);
  152. gaoducha.ConectTree();
  153. string[] gaoduchaCeliangxianName1 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "B", "B*" };
  154. string[] gaoduchaCeliangxianText1 = { "最大值", "最小值", "平均值", "B", "B*" };
  155. gaoducha.erjimulus[0].InitializeCeliangxian(gaoduchaCeliangxianName1, gaoduchaCeliangxianText1, 5);
  156. gaoducha.erjimulus[1].InitializeCeliangxian(gaoduchaCeliangxianName1, gaoduchaCeliangxianText1, 5);
  157. string[] gaoduchaCeliangxianName2 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "PADtonghou1", "PIshangFanghan1", "PADtonghou2", "PIshangFanghan2" };
  158. string[] gaoduchaCeliangxianText2 = { "最大值", "最小值", "平均值", "PAD銅厚1", "PI上防焊1", "PAD銅厚2", "PI上防焊2" };
  159. gaoducha.erjimulus[2].InitializeCeliangxian(gaoduchaCeliangxianName2, gaoduchaCeliangxianText2, 7);
  160. sorts.Add(gaoducha);
  161. RootSort diegou = new RootSort();
  162. string[] diegouInfor = { "diegou", "曡構" };
  163. string[] diegouErjiInfor = { "diegou", "曡構" };
  164. diegou.Initialize(diegouInfor, diegouErjiInfor, 1);
  165. diegou.ConectTree();
  166. string[] diegouCeliangxianName1 = { "zuidazhi", "zuixiaozhi", "pingjunzhi", "dancenghou", "zonghou" };
  167. string[] diegouCeliangxianText1 = { "最大值", "最小值", "平均值", "單層厚", "縂厚" };
  168. diegou.erjimulus[0].InitializeCeliangxian(diegouCeliangxianName1, diegouCeliangxianText1, 5);
  169. sorts.Add(diegou);
  170. }
  171. //獲取分類序號
  172. public void GetSortPosition(string SortName, out int position)
  173. {
  174. position = 0;
  175. int count = sorts.Count;
  176. for (int i = 0; i < count; i++)
  177. {
  178. if (sorts[i].name == SortName)
  179. {
  180. position = i;
  181. break;
  182. }
  183. }
  184. }
  185. }
  186. //根目录,存末级分类名称和二级目录
  187. public class RootSort
  188. {
  189. public string name { set; get; }
  190. public string text { set; get; }
  191. public List<Erjimulu> erjimulus = new List<Erjimulu>();
  192. public TreeNode rootNode = new TreeNode();
  193. //初始化
  194. //預設一級分類、末級分類、末級分類預設測量綫
  195. //count:末級分類個數
  196. public void Initialize(string[] yiji, string[] erji, int count)
  197. {
  198. //一級信息
  199. name = yiji[0];
  200. text = yiji[1];
  201. //根節點信息
  202. rootNode.Name = yiji[0];
  203. rootNode.Text = yiji[1];
  204. //二級信息
  205. for (int i = 0; i < count; i++)
  206. {
  207. Erjimulu newErjimulu = new Erjimulu();
  208. newErjimulu.name = erji[2 * i];
  209. newErjimulu.text = erji[2 * i + 1];
  210. erjimulus.Add(newErjimulu);
  211. }
  212. }
  213. //新增檢驗項目和規格
  214. public void AddJianyanxiangmu(string jianyanxiangmuText, string guige1, string guige2, string erjiName)
  215. {
  216. int count = erjimulus.Count;
  217. int i;
  218. for (i = 0; i < count; i++)
  219. {
  220. if (erjimulus[i].name == erjiName)
  221. break;
  222. }
  223. int jianyanCount = erjimulus[i].jianyanxiangmus.Count;
  224. Jianyanxiangmu newJianyanxiangmu = new Jianyanxiangmu();
  225. newJianyanxiangmu.name = jianyanxiangmuText;
  226. newJianyanxiangmu.text = jianyanxiangmuText;
  227. newJianyanxiangmu.guigeSmaller = int.Parse(guige1);
  228. newJianyanxiangmu.guigeBigger = int.Parse(guige2);
  229. newJianyanxiangmu.parent = erjimulus[i].name;
  230. erjimulus[i].jianyanxiangmus.Add(newJianyanxiangmu);//之上為存儲信息
  231. erjimulus[i].jianyanxiangmus[jianyanCount].jianyanNode.Name = jianyanxiangmuText;
  232. erjimulus[i].jianyanxiangmus[jianyanCount].jianyanNode.Text = jianyanxiangmuText;//這裏為設置TreeNode參數
  233. erjimulus[i].erjiNode.Nodes.Add(erjimulus[i].jianyanxiangmus[jianyanCount].jianyanNode);//鏈接到二級目錄
  234. }
  235. //修改檢驗項目
  236. public void EditJianyanxiangmu(string jianyanxiangmuText, string guige1, string guige2, string erjiName, string jianyanName)
  237. {
  238. //尋找檢驗項目地址
  239. int erjiCount = erjimulus.Count;
  240. int i, j;
  241. for (i = 0; i < erjiCount; i++)
  242. {
  243. if (erjimulus[i].name == erjiName)
  244. break;
  245. }
  246. int jianyanCount = erjimulus[i].jianyanxiangmus.Count;
  247. for (j = 0; j < jianyanCount; j++)
  248. {
  249. if (erjimulus[i].jianyanxiangmus[j].name == jianyanName)
  250. break;
  251. }
  252. //修改檢驗項目
  253. erjimulus[i].jianyanxiangmus[j].name = jianyanxiangmuText;
  254. erjimulus[i].jianyanxiangmus[j].text = jianyanxiangmuText;
  255. erjimulus[i].jianyanxiangmus[j].guigeSmaller = int.Parse(guige1);
  256. erjimulus[i].jianyanxiangmus[j].guigeBigger = int.Parse(guige2);
  257. erjimulus[i].jianyanxiangmus[j].jianyanNode.Name = jianyanxiangmuText;
  258. erjimulus[i].jianyanxiangmus[j].jianyanNode.Text = jianyanxiangmuText;//這裏為設置TreeNode參數
  259. erjimulus[i].erjiNode.Nodes[j] = erjimulus[i].jianyanxiangmus[j].jianyanNode;
  260. }
  261. //傳遞規格
  262. public void GetGuige(string erjiName, string jianyanName, out int guige1, out int guige2)
  263. {
  264. // 尋找檢驗項目地址
  265. int erjiCount = erjimulus.Count;
  266. int i, j;
  267. for (i = 0; i < erjiCount; i++)
  268. {
  269. if (erjimulus[i].name == erjiName)
  270. break;
  271. }
  272. int jianyanCount = erjimulus[i].jianyanxiangmus.Count;
  273. for (j = 0; j < jianyanCount; j++)
  274. {
  275. if (erjimulus[i].jianyanxiangmus[j].name == jianyanName)
  276. break;
  277. }
  278. guige1 = erjimulus[i].jianyanxiangmus[j].guigeSmaller;
  279. guige2 = erjimulus[i].jianyanxiangmus[j].guigeBigger;
  280. }
  281. //根據名稱獲取二級目錄位置
  282. public void GetErjiPosizion(string erjiName, out int position)
  283. {
  284. position = 0;
  285. int erjiCount = erjimulus.Count;
  286. int i;
  287. for (i = 0; i < erjiCount; i++)
  288. {
  289. if (erjiName == erjimulus[i].name)
  290. {
  291. position = i; break;
  292. }
  293. }
  294. }
  295. //將二級目錄鏈接一級目錄成樹狀
  296. public void ConectTree()
  297. {
  298. int count = erjimulus.Count;
  299. for (int i = 0; i < count; i++)
  300. {
  301. erjimulus[i].erjiNode.Name = erjimulus[i].name;
  302. erjimulus[i].erjiNode.Text = erjimulus[i].text;
  303. //rootNode.Nodes.Add(erjimulus[i].erjiNode);
  304. }
  305. }
  306. }
  307. //二級目錄,存二级分类名称,檢驗項目,以及初始測量綫
  308. public class Erjimulu
  309. {
  310. public string name { set; get; }
  311. public string text { set; get; }
  312. public List<Jianyanxiangmu> jianyanxiangmus = new List<Jianyanxiangmu>();
  313. public string parent { set; get; }
  314. public TreeNode erjiNode = new TreeNode();
  315. public List<InitialCeliangxian> initialCeliangxian = new List<InitialCeliangxian>();
  316. //初始化測量綫
  317. //initializeCeliangxianName:測量綫名稱
  318. //celiangxianCount:測量綫數量
  319. public void InitializeCeliangxian(string[] initializeCeliangxianName, string[] initializeCeliangxianText, int celiangxianCount)
  320. {
  321. for (int i = 0; i < celiangxianCount; i++)
  322. {
  323. InitialCeliangxian newCeliangxian = new InitialCeliangxian();
  324. newCeliangxian.name = initializeCeliangxianName[i];
  325. newCeliangxian.text = initializeCeliangxianText[i];
  326. initialCeliangxian.Add(newCeliangxian);
  327. }
  328. }
  329. //得到檢驗項目序號
  330. public void GetjianyanPosition(string jianyanName, out int position)
  331. {
  332. position = 0;
  333. int count = jianyanxiangmus.Count;
  334. for (int i = 0; i < count; i++)
  335. {
  336. if (jianyanxiangmus[i].name == jianyanName)
  337. {
  338. position = i; break;
  339. }
  340. }
  341. }
  342. //刪除檢驗項目
  343. public void DeleteJianyanxiangmu(string jianyanxiangmuName)
  344. {
  345. int count = jianyanxiangmus.Count;
  346. int i;
  347. for (i = 0; i < count; i++)
  348. {
  349. if (jianyanxiangmus[i].name == jianyanxiangmuName)
  350. break;
  351. }
  352. erjiNode.Nodes.RemoveAt(i);
  353. jianyanxiangmus.RemoveAt(i);
  354. }
  355. }
  356. //檢驗項目,存检测项目名称和測量綫和規格
  357. public class Jianyanxiangmu
  358. {
  359. public List<Celiangxian> celiangxians = new List<Celiangxian>();
  360. public string name { set; get; }
  361. public string text { set; get; }
  362. public int guigeSmaller { set; get; }
  363. public int guigeBigger { set; get; }
  364. public string parent { set; get; }
  365. public TreeNode jianyanNode = new TreeNode();
  366. //新增測量綫
  367. public void AddCeliangxian(string bieming, string gongshi,List<string> gongshiDataList)
  368. {
  369. int count = celiangxians.Count;
  370. Celiangxian newCeliangxian = new Celiangxian();
  371. newCeliangxian.bieming = bieming;
  372. newCeliangxian.text = bieming;
  373. newCeliangxian.gongshi = gongshi;
  374. newCeliangxian.parent = name;
  375. celiangxians.Add(newCeliangxian);
  376. celiangxians[count].celiangxianBiemingNode = new CeliangxianData();
  377. celiangxians[count].celiangxianBiemingNode.name = bieming;
  378. celiangxians[count].celiangxianBiemingNode.text = gongshiDataList;
  379. //jianyanNode.Nodes.Add(celiangxians[count].celiangxianBiemingNode);
  380. }
  381. //修改測量綫
  382. public void EditCeliangxian(string bieming, string gongshi, string celiangxianName, List<string> gongshiDataList)
  383. {
  384. int count = celiangxians.Count;
  385. int i;
  386. for (i = 0; i < count; i++)
  387. {
  388. if (celiangxians[i].bieming == celiangxianName)
  389. break;
  390. }
  391. celiangxians[i].bieming = bieming;
  392. celiangxians[i].gongshi = gongshi;
  393. celiangxians[count].celiangxianBiemingNode = new CeliangxianData();
  394. celiangxians[count].celiangxianBiemingNode.name = bieming;
  395. celiangxians[count].celiangxianBiemingNode.text = gongshiDataList;
  396. //jianyanNode.Nodes[i]=celiangxiangs[i].celiangxianBieming;
  397. }
  398. //刪除測量綫
  399. public void DeleteCeliangxian(string celiangxianName)
  400. {
  401. int count = celiangxians.Count;
  402. int i;
  403. for (i = 0; i < count; i++)
  404. {
  405. if (celiangxians[i].bieming == celiangxianName)
  406. break;
  407. }
  408. jianyanNode.Nodes.RemoveAt(i);
  409. celiangxians.RemoveAt(i);
  410. }
  411. //得到測量綫位置
  412. public void GetCeliangxianPosition(string celiangxianName, out int position)
  413. {
  414. position = 0;
  415. int count = celiangxians.Count;
  416. for (int i = 0; i < count; i++)
  417. {
  418. if (celiangxians[i].bieming == celiangxianName)
  419. {
  420. position = i; break;
  421. }
  422. }
  423. }
  424. }
  425. //測量綫分類,存別名和公式
  426. public class Celiangxian
  427. {
  428. public string text { set; get; }
  429. public string bieming { set; get; }
  430. public string gongshi { set; get; }
  431. public string parent { set; get; }
  432. public CeliangxianData celiangxianBiemingNode;
  433. }
  434. public class CeliangxianData {
  435. public string name { set; get; }
  436. public List<string> text { set; get; }
  437. }
  438. //初始測量綫
  439. public class InitialCeliangxian
  440. {
  441. public string name { set; get; }
  442. public string text { set; get; }
  443. }
  444. public class Kongjian
  445. {
  446. public List<Label> fenleimingchengs = new List<Label>();
  447. public List<Label> biaochimingchengs = new List<Label>();
  448. public List<Label> tupianweizhis = new List<Label>();
  449. public List<Button> wenjianxuanzes = new List<Button>();
  450. public List<Button> tianjiatupians = new List<Button>();
  451. public List<Button> huizhifanweis = new List<Button>();
  452. public List<Button> qingkongquanbus = new List<Button>();
  453. public List<List<PictureBox>> pictureBoxes = new List<List<PictureBox>>();
  454. public List<List<Button>> shanchus = new List<List<Button>>();
  455. public List<Label> dividingLines = new List<Label>();
  456. /// <summary>
  457. /// 添加圖片時修改控件位置
  458. /// </summary>
  459. public void ResetControlPosition(int rowOfFenlei)
  460. {
  461. int count = fenleimingchengs.Count;
  462. for (int i = rowOfFenlei+1; i < count; i++)
  463. {
  464. fenleimingchengs[i].Location = new System.Drawing.Point(fenleimingchengs[i].Location.X, fenleimingchengs[i].Location.Y + 70);
  465. biaochimingchengs[i].Location = new System.Drawing.Point(biaochimingchengs[i].Location.X, biaochimingchengs[i].Location.Y + 70);
  466. tupianweizhis[i].Location = new System.Drawing.Point(fenleimingchengs[i].Location.X, fenleimingchengs[i].Location.Y + 20);
  467. huizhifanweis[i].Location = new System.Drawing.Point(tupianweizhis[i].Location.X + 70 * 5, tupianweizhis[i].Location.Y + 20);
  468. qingkongquanbus[i].Location = new System.Drawing.Point(tupianweizhis[i].Location.X + 70 * 5, huizhifanweis[i].Location.Y + huizhifanweis[i].Height + 2);
  469. wenjianxuanzes[i].Location = new System.Drawing.Point(wenjianxuanzes[i].Location.X, huizhifanweis[i].Location.Y - wenjianxuanzes[i].Height - 2);
  470. tianjiatupians[i].Location = new System.Drawing.Point(tianjiatupians[i].Location.X, tianjiatupians[i].Location.Y+70);
  471. dividingLines[i].Location = new System.Drawing.Point(dividingLines[i].Location.X, tianjiatupians[i].Location.Y + tianjiatupians[i].Height + 20);
  472. for (int j = 0; j < pictureBoxes[i].Count; j++)
  473. {
  474. pictureBoxes[i][j].Location = new System.Drawing.Point(pictureBoxes[i][j].Location.X, pictureBoxes[i][j].Location.Y + 70);
  475. shanchus[i][j].Location = new System.Drawing.Point(shanchus[i][j].Location.X, shanchus[i][j].Location.Y + 70);
  476. }
  477. }
  478. }
  479. /// <summary>
  480. /// 刪除圖片時修改控件位置
  481. /// </summary>
  482. public void ResetControlPosition2(int rowOfFenlei, int position)
  483. {
  484. int count = fenleimingchengs.Count;
  485. int number = pictureBoxes[rowOfFenlei].Count;
  486. //儅被刪除的是一行的是第5個時,添加圖片按鈕是最後一個圖片的位置,從最後一個圖片開始,每個圖片都是前一個圖片的位置,直到刪除的位置,刪除位置position的位置是position-1的x+70,y相同(同刪除)
  487. //刪除的不是第5個時,刪除位置的x是自己-70,y同自己(同刪除)
  488. //如果這組圖片的總數從5的倍數刪除的話,其后的所有分類向上抬一行
  489. if ((number + 1) % 4 == 0)
  490. {
  491. if (position == number)
  492. {
  493. tianjiatupians[rowOfFenlei].Location = new System.Drawing.Point(pictureBoxes[rowOfFenlei][number - 1].Location.X + 70, pictureBoxes[rowOfFenlei][number - 1].Location.Y);
  494. dividingLines[rowOfFenlei].Location = new System.Drawing.Point(dividingLines[rowOfFenlei].Location.X, tianjiatupians[rowOfFenlei].Location.Y + tianjiatupians[rowOfFenlei].Height + 20);
  495. }
  496. else {
  497. tianjiatupians[rowOfFenlei].Location = new System.Drawing.Point(pictureBoxes[rowOfFenlei][number - 1].Location.X, pictureBoxes[rowOfFenlei][number - 1].Location.Y);
  498. dividingLines[rowOfFenlei].Location = new System.Drawing.Point(dividingLines[rowOfFenlei].Location.X, tianjiatupians[rowOfFenlei].Location.Y + tianjiatupians[rowOfFenlei].Height + 20);
  499. }
  500. for (int j = rowOfFenlei + 1; j < count; j++)
  501. {
  502. fenleimingchengs[j].Location = new System.Drawing.Point(fenleimingchengs[j].Location.X, fenleimingchengs[j].Location.Y - 70);
  503. biaochimingchengs[j].Location = new System.Drawing.Point(biaochimingchengs[j].Location.X, biaochimingchengs[j].Location.Y - 70);
  504. tupianweizhis[j].Location = new System.Drawing.Point(tupianweizhis[j].Location.X, tupianweizhis[j].Location.Y - 70);
  505. huizhifanweis[j].Location = new System.Drawing.Point(huizhifanweis[j].Location.X, huizhifanweis[j].Location.Y - 70);
  506. wenjianxuanzes[j].Location = new System.Drawing.Point(wenjianxuanzes[j].Location.X, wenjianxuanzes[j].Location.Y - 70);
  507. qingkongquanbus[j].Location = new System.Drawing.Point(qingkongquanbus[j].Location.X, qingkongquanbus[j].Location.Y - 70);
  508. tianjiatupians[j].Location = new System.Drawing.Point(tianjiatupians[j].Location.X, tianjiatupians[j].Location.Y - 70);
  509. dividingLines[j].Location = new System.Drawing.Point(dividingLines[j].Location.X, tianjiatupians[j].Location.Y + tianjiatupians[j].Height + 20);
  510. for (int k = 0; k < pictureBoxes[j].Count; k++)
  511. {
  512. pictureBoxes[j][k].Location = new System.Drawing.Point(pictureBoxes[j][k].Location.X, pictureBoxes[j][k].Location.Y - 70);
  513. shanchus[j][k].Location = new System.Drawing.Point(shanchus[j][k].Location.X, shanchus[j][k].Location.Y - 70);
  514. }
  515. }
  516. if ((position + 1) % 4 == 0)
  517. {
  518. for (int i = number - 1; i > position; i--)
  519. {
  520. pictureBoxes[rowOfFenlei][i].Location = pictureBoxes[rowOfFenlei][i - 1].Location;
  521. shanchus[rowOfFenlei][i].Location = shanchus[rowOfFenlei][i - 1].Location;
  522. }
  523. if (position < number)
  524. {
  525. pictureBoxes[rowOfFenlei][position].Location = new System.Drawing.Point(pictureBoxes[rowOfFenlei][position - 1].Location.X + 70, pictureBoxes[rowOfFenlei][position - 1].Location.Y);
  526. shanchus[rowOfFenlei][position].Location = new System.Drawing.Point(shanchus[rowOfFenlei][position - 1].Location.X + 70, shanchus[rowOfFenlei][position - 1].Location.Y);
  527. }
  528. }
  529. else
  530. {
  531. for (int i = number - 1; i > position; i--)
  532. {
  533. pictureBoxes[rowOfFenlei][i].Location = pictureBoxes[rowOfFenlei][i - 1].Location;
  534. shanchus[rowOfFenlei][i].Location = shanchus[rowOfFenlei][i - 1].Location;
  535. }
  536. if (position < number)
  537. {
  538. pictureBoxes[rowOfFenlei][position].Location = new System.Drawing.Point(pictureBoxes[rowOfFenlei][position].Location.X - 70, pictureBoxes[rowOfFenlei][position].Location.Y);
  539. shanchus[rowOfFenlei][position].Location = new System.Drawing.Point(shanchus[rowOfFenlei][position].Location.X - 70, shanchus[rowOfFenlei][position].Location.Y);
  540. }
  541. }
  542. }
  543. else
  544. {
  545. tianjiatupians[rowOfFenlei].Location = new System.Drawing.Point(tianjiatupians[rowOfFenlei].Location.X - 70, tianjiatupians[rowOfFenlei].Location.Y);
  546. dividingLines[rowOfFenlei].Location = new System.Drawing.Point(dividingLines[rowOfFenlei].Location.X, tianjiatupians[rowOfFenlei].Location.Y + tianjiatupians[rowOfFenlei].Height + 20);
  547. if ((position + 1) % 4 == 0)
  548. {
  549. for (int i = number - 1; i > position; i--)
  550. {
  551. pictureBoxes[rowOfFenlei][i].Location = pictureBoxes[rowOfFenlei][i - 1].Location;
  552. shanchus[rowOfFenlei][i].Location = shanchus[rowOfFenlei][i - 1].Location;
  553. }
  554. if (position < number)
  555. {
  556. pictureBoxes[rowOfFenlei][position].Location = new System.Drawing.Point(pictureBoxes[rowOfFenlei][position - 1].Location.X + 70, pictureBoxes[rowOfFenlei][position - 1].Location.Y);
  557. shanchus[rowOfFenlei][position].Location = new System.Drawing.Point(shanchus[rowOfFenlei][position - 1].Location.X + 70, shanchus[rowOfFenlei][position - 1].Location.Y);
  558. }
  559. }
  560. else
  561. {
  562. for (int i = number - 1; i > position; i--)
  563. {
  564. pictureBoxes[rowOfFenlei][i].Location = pictureBoxes[rowOfFenlei][i - 1].Location;
  565. shanchus[rowOfFenlei][i].Location = shanchus[rowOfFenlei][i - 1].Location;
  566. }
  567. if (position < number)
  568. {
  569. pictureBoxes[rowOfFenlei][position].Location = new System.Drawing.Point(pictureBoxes[rowOfFenlei][position].Location.X - 70, pictureBoxes[rowOfFenlei][position].Location.Y);
  570. shanchus[rowOfFenlei][position].Location = new System.Drawing.Point(shanchus[rowOfFenlei][position].Location.X - 70, shanchus[rowOfFenlei][position].Location.Y);
  571. }
  572. }
  573. }
  574. }
  575. /// <summary>
  576. /// 清空圖片時重置控件位置
  577. /// </summary>
  578. public void ResetControlPosition3(int rowOfFenlei,int cengshu)
  579. {
  580. int count = fenleimingchengs.Count;
  581. for (int j = rowOfFenlei + 1; j < count; j++)
  582. {
  583. fenleimingchengs[j].Location = new System.Drawing.Point(fenleimingchengs[j].Location.X, fenleimingchengs[j].Location.Y - 70 * cengshu);
  584. biaochimingchengs[j].Location = new System.Drawing.Point(biaochimingchengs[j].Location.X, biaochimingchengs[j].Location.Y - 70 * cengshu);
  585. tupianweizhis[j].Location = new System.Drawing.Point(tupianweizhis[j].Location.X, tupianweizhis[j].Location.Y - 70 * cengshu);
  586. huizhifanweis[j].Location = new System.Drawing.Point(huizhifanweis[j].Location.X, huizhifanweis[j].Location.Y - 70 * cengshu);
  587. qingkongquanbus[j].Location = new System.Drawing.Point(qingkongquanbus[j].Location.X, qingkongquanbus[j].Location.Y - 70 * cengshu);
  588. wenjianxuanzes[j].Location = new System.Drawing.Point(wenjianxuanzes[j].Location.X, wenjianxuanzes[j].Location.Y - 70 * cengshu);
  589. tianjiatupians[j].Location = new System.Drawing.Point(tianjiatupians[j].Location.X, tianjiatupians[j].Location.Y - 70 * cengshu);
  590. dividingLines[j].Location = new System.Drawing.Point(dividingLines[j].Location.X, tianjiatupians[j].Location.Y + tianjiatupians[j].Height + 20);
  591. for (int k = 0; k < pictureBoxes[j].Count; k++)
  592. {
  593. pictureBoxes[j][k].Location = new System.Drawing.Point(pictureBoxes[j][k].Location.X, pictureBoxes[j][k].Location.Y - 70 * cengshu);
  594. shanchus[j][k].Location = new System.Drawing.Point(shanchus[j][k].Location.X, shanchus[j][k].Location.Y - 70 * cengshu);
  595. }
  596. }
  597. }
  598. }
  599. }