GrainSizeAnalysisModel.cs 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. using PaintDotNet.Base;
  2. using PaintDotNet.Data.Param;
  3. using System.Collections.Generic;
  4. using System.Xml.Serialization;
  5. namespace Metis.ParameterSet
  6. {
  7. /// <summary>
  8. /// 图像设置 - 参数
  9. /// </summary>
  10. [XmlRoot("ROOT")]
  11. public class GrainSizeAnalysisModel
  12. {
  13. /// <summary>
  14. /// 参数model
  15. /// </summary>
  16. [XmlElement("ListParam")]
  17. public List<GrainSizeAnalysisModel> ListParam { get; set; }
  18. public GrainSizeAnalysisModel cloneModel()
  19. {
  20. GrainSizeAnalysisModel newMod = new GrainSizeAnalysisModel();
  21. newMod.ListParam = new List<GrainSizeAnalysisModel>();
  22. newMod.menuId = this.menuId;
  23. newMod.param_key = this.param_key;
  24. newMod.param_type = this.param_type;
  25. newMod.param_value = this.param_value;
  26. if (this.value != null)
  27. newMod.value = this.value;
  28. return newMod;
  29. }
  30. /// <summary>
  31. /// 找到当前menuId的参数model集合
  32. /// </summary>
  33. /// <param name="menuId"></param>
  34. /// <returns></returns>
  35. public GrainSizeAnalysisModel cloneListParamModel(int menuId)
  36. {
  37. GrainSizeAnalysisModel newMod = new GrainSizeAnalysisModel();
  38. newMod.ListParam = new List<GrainSizeAnalysisModel>();
  39. foreach (var item in this.ListParam)
  40. if (item.menuId == menuId)
  41. newMod.ListParam.Add(item.cloneModel());
  42. return newMod;
  43. }
  44. /// <summary>
  45. /// 根据脚本参数集合初始化页面数据
  46. /// </summary>
  47. /// <param name="paramObject"></param>
  48. /// <returns></returns>
  49. public static GrainSizeAnalysisModel cloneListParamScript(ParamObject paramObject)
  50. {
  51. GrainSizeAnalysisModel newMod = new GrainSizeAnalysisModel();
  52. newMod.ListParam = new List<GrainSizeAnalysisModel>();
  53. foreach (Args arg in paramObject.Lists)
  54. {
  55. GrainSizeAnalysisModel param = new GrainSizeAnalysisModel();
  56. param.ListParam = new List<GrainSizeAnalysisModel>();
  57. param.menuId = (int)paramObject.MenuId;
  58. param.param_key = arg.Key;
  59. param.param_type = (int)arg.Type;
  60. if (arg.value != null)
  61. {
  62. ////在这里反射出对应功能的参数类
  63. //string className = InvariantData.path_Action + ".Action" + step.menu_id;
  64. //ParamObject param = (ParamObject)Assembly.Load(InvariantData.assembly_Data).CreateInstance(className);
  65. if (arg.Type == Dtryt.Array)
  66. param.param_value = ((int)arg.Value).ToString();
  67. else if (arg.Type == Dtryt.DecimalScope)
  68. param.param_value = string.Join(",", ((List<double>)(arg.Value)).ToArray());
  69. else
  70. param.param_value = arg.Value.ToString();
  71. if ((int)arg.Type == 7)
  72. {//晶粒度-选择辅助线的适配
  73. param.param_type = 10;
  74. }
  75. param.value = arg.value;
  76. }
  77. newMod.ListParam.Add(param);
  78. }
  79. return newMod;
  80. }
  81. ///<summary>
  82. /// 功能ID
  83. ///</summary>
  84. [XmlElement("menuId")]
  85. public int menuId { get; set; }
  86. /// <summary>
  87. /// 参数键
  88. /// </summary>
  89. [XmlElement("param_key")]
  90. public string param_key { get; set; }
  91. /// <summary>
  92. /// 参数类型的枚举值
  93. /// </summary>
  94. [XmlElement("param_type")]
  95. public int param_type { get; set; }
  96. /// <summary>
  97. /// 参数值
  98. /// </summary>
  99. [XmlElement("param_value")]
  100. public string param_value { get; set; }
  101. /// <summary>
  102. /// 参数格式化后的值
  103. /// </summary>
  104. public object value;
  105. /// <summary>
  106. /// 更新参数格式化后的值
  107. /// </summary>
  108. public void setValue()
  109. {
  110. if (this.param_type == (int)Dtryt.Choise)
  111. {
  112. int valueC;
  113. if (int.TryParse(this.param_value.ToString(), out valueC))
  114. this.value = valueC;
  115. else
  116. this.value = 1;
  117. }
  118. if (this.param_type == (int)Dtryt.Interger)
  119. {
  120. int valueC;
  121. if (int.TryParse(this.param_value.ToString(), out valueC))
  122. this.value = valueC;
  123. else
  124. this.value = 0;
  125. }
  126. else if (this.param_type == (int)Dtryt.Array)
  127. {
  128. int valueC;
  129. if (int.TryParse(this.param_value.ToString(), out valueC))
  130. this.value = valueC;
  131. else
  132. this.value = 0;
  133. }
  134. else if (this.param_type == (int)Dtryt.Boolean)
  135. {
  136. bool valueC;
  137. if (System.Boolean.TryParse(this.param_value.ToString(), out valueC))
  138. this.value = valueC;
  139. else
  140. this.value = this.param_value.ToString().Equals("0");
  141. }
  142. else if (this.param_type == (int)Dtryt.DecimalScope)
  143. {
  144. string[] valuelst = this.param_value.Split(',');
  145. List<double> listV = new List<double>();
  146. foreach (string str in valuelst)
  147. {
  148. double outV;
  149. if (double.TryParse(str, out outV))
  150. listV.Add(outV);
  151. else
  152. listV.Add(0);
  153. }
  154. this.value = listV;
  155. }
  156. else if (this.param_type == (int)Dtryt.Decimal)
  157. {//####
  158. double valueC;
  159. if (double.TryParse(this.param_value.ToString(), out valueC))
  160. this.value = valueC;
  161. else
  162. this.value = -65536;
  163. }
  164. else if (this.param_type == (int)Dtryt.Color)
  165. {
  166. int valueC;
  167. if (int.TryParse(this.param_value.ToString(), out valueC))
  168. this.value = valueC;
  169. else
  170. this.value = -65536;
  171. }
  172. else if (this.param_type == (int)Dtryt.ItemString)
  173. {
  174. this.value = this.param_value.ToString();
  175. }
  176. else if (this.param_type == (int)Dtryt.Decimal)
  177. {
  178. int valueC;
  179. if (int.TryParse(this.param_value.ToString(), out valueC))
  180. this.value = valueC;
  181. else
  182. this.value = 2;
  183. }
  184. }
  185. /// <summary>
  186. /// 返回保存的参数值-是否显示晶界,显示网格,显示截点 等
  187. /// </summary>
  188. /// <returns></returns>
  189. public bool GetParamValue1(string param_key, out object paramObject, int menuId)
  190. {
  191. bool foundItem = false;
  192. paramObject = null;
  193. foreach (var item in this.ListParam)
  194. {
  195. if (item.param_key.Equals(param_key) && item.menuId == menuId)
  196. {
  197. paramObject = item.value;
  198. foundItem = true;
  199. break;
  200. }
  201. }
  202. return foundItem;
  203. }
  204. /// <summary>
  205. /// 保存参数的key,value和type
  206. /// </summary>
  207. /// <param name="param_key"></param>
  208. /// <param name="param_value"></param>
  209. /// <param name="param_type"></param>
  210. public void saveParamValue(string param_key, string param_value, int param_type, int menuId)
  211. {
  212. bool foundItem = false;
  213. foreach (var item in this.ListParam)
  214. {
  215. if (item.param_key.Equals(param_key) && item.menuId == menuId)
  216. {
  217. item.param_value = param_value;
  218. item.setValue();
  219. foundItem = true;
  220. break;
  221. }
  222. }
  223. if (!foundItem)
  224. {
  225. GrainSizeAnalysisModel analysisItem = new GrainSizeAnalysisModel();
  226. analysisItem.menuId = menuId;
  227. analysisItem.param_key = param_key;
  228. analysisItem.param_type = param_type;
  229. analysisItem.param_value = param_value;
  230. analysisItem.setValue();
  231. this.ListParam.Add(analysisItem);
  232. }
  233. }
  234. }
  235. }