| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 | using PaintDotNet.Base;using PaintDotNet.Data.Param;using System.Collections.Generic;using System.Xml.Serialization;namespace Metis.ParameterSet{    /// <summary>    /// 图像设置 - 参数     /// </summary>    [XmlRoot("ROOT")]    public class GrainSizeAnalysisModel    {        /// <summary>        /// 参数model        /// </summary>        [XmlElement("ListParam")]        public List<GrainSizeAnalysisModel> ListParam { get; set; }        public GrainSizeAnalysisModel cloneModel()        {            GrainSizeAnalysisModel newMod = new GrainSizeAnalysisModel();            newMod.ListParam = new List<GrainSizeAnalysisModel>();            newMod.menuId = this.menuId;            newMod.param_key = this.param_key;            newMod.param_type = this.param_type;            newMod.param_value = this.param_value;            if (this.value != null)                newMod.value = this.value;            return newMod;        }        /// <summary>        /// 找到当前menuId的参数model集合        /// </summary>        /// <param name="menuId"></param>        /// <returns></returns>        public GrainSizeAnalysisModel cloneListParamModel(int menuId)        {            GrainSizeAnalysisModel newMod = new GrainSizeAnalysisModel();            newMod.ListParam = new List<GrainSizeAnalysisModel>();            foreach (var item in this.ListParam)                if (item.menuId == menuId)                    newMod.ListParam.Add(item.cloneModel());            return newMod;        }        /// <summary>        /// 根据脚本参数集合初始化页面数据        /// </summary>        /// <param name="paramObject"></param>        /// <returns></returns>        public static GrainSizeAnalysisModel cloneListParamScript(ParamObject paramObject)        {            GrainSizeAnalysisModel newMod = new GrainSizeAnalysisModel();            newMod.ListParam = new List<GrainSizeAnalysisModel>();            foreach (Args arg in paramObject.Lists)            {                GrainSizeAnalysisModel param = new GrainSizeAnalysisModel();                param.ListParam = new List<GrainSizeAnalysisModel>();                param.menuId = (int)paramObject.MenuId;                param.param_key = arg.Key;                param.param_type = (int)arg.Type;                if (arg.value != null)                {                    ////在这里反射出对应功能的参数类                    //string className = InvariantData.path_Action + ".Action" + step.menu_id;                    //ParamObject param = (ParamObject)Assembly.Load(InvariantData.assembly_Data).CreateInstance(className);                    if (arg.Type == Dtryt.Array)                        param.param_value = ((int)arg.Value).ToString();                    else if (arg.Type == Dtryt.DecimalScope)                        param.param_value = string.Join(",", ((List<double>)(arg.Value)).ToArray());                    else                        param.param_value = arg.Value.ToString();                    if ((int)arg.Type == 7)                    {//晶粒度-选择辅助线的适配                        param.param_type = 10;                    }                    param.value = arg.value;                }                newMod.ListParam.Add(param);            }            return newMod;        }        ///<summary>        /// 功能ID        ///</summary>        [XmlElement("menuId")]        public int menuId { get; set; }        /// <summary>        /// 参数键        /// </summary>        [XmlElement("param_key")]        public string param_key { get; set; }        /// <summary>        /// 参数类型的枚举值        /// </summary>        [XmlElement("param_type")]        public int param_type { get; set; }        /// <summary>        /// 参数值        /// </summary>        [XmlElement("param_value")]        public string param_value { get; set; }        /// <summary>        /// 参数格式化后的值        /// </summary>        public object value;        /// <summary>        /// 更新参数格式化后的值        /// </summary>        public void setValue()        {            if (this.param_type == (int)Dtryt.Choise)            {                int valueC;                if (int.TryParse(this.param_value.ToString(), out valueC))                    this.value = valueC;                else                    this.value = 1;            }            if (this.param_type == (int)Dtryt.Interger)            {                int valueC;                if (int.TryParse(this.param_value.ToString(), out valueC))                    this.value = valueC;                else                    this.value = 0;            }            else if (this.param_type == (int)Dtryt.Array)            {                int valueC;                if (int.TryParse(this.param_value.ToString(), out valueC))                    this.value = valueC;                else                    this.value = 0;            }            else if (this.param_type == (int)Dtryt.Boolean)            {                bool valueC;                if (System.Boolean.TryParse(this.param_value.ToString(), out valueC))                    this.value = valueC;                else                    this.value = this.param_value.ToString().Equals("0");            }            else if (this.param_type == (int)Dtryt.DecimalScope)            {                string[] valuelst = this.param_value.Split(',');                List<double> listV = new List<double>();                foreach (string str in valuelst)                {                    double outV;                    if (double.TryParse(str, out outV))                        listV.Add(outV);                    else                        listV.Add(0);                }                this.value = listV;            }            else if (this.param_type == (int)Dtryt.Decimal)            {//####                double valueC;                if (double.TryParse(this.param_value.ToString(), out valueC))                    this.value = valueC;                else                    this.value = -65536;            }            else if (this.param_type == (int)Dtryt.Color)            {                int valueC;                if (int.TryParse(this.param_value.ToString(), out valueC))                    this.value = valueC;                else                    this.value = -65536;            }            else if (this.param_type == (int)Dtryt.ItemString)            {                this.value = this.param_value.ToString();            }            else if (this.param_type == (int)Dtryt.Decimal)            {                int valueC;                if (int.TryParse(this.param_value.ToString(), out valueC))                    this.value = valueC;                else                    this.value = 2;            }        }        /// <summary>        /// 返回保存的参数值-是否显示晶界,显示网格,显示截点 等        /// </summary>        /// <returns></returns>        public bool GetParamValue1(string param_key, out object paramObject, int menuId)        {            bool foundItem = false;            paramObject = null;            foreach (var item in this.ListParam)            {                if (item.param_key.Equals(param_key) && item.menuId == menuId)                {                    paramObject = item.value;                    foundItem = true;                    break;                }            }            return foundItem;        }        /// <summary>        /// 保存参数的key,value和type        /// </summary>        /// <param name="param_key"></param>        /// <param name="param_value"></param>        /// <param name="param_type"></param>        public void saveParamValue(string param_key, string param_value, int param_type, int menuId)        {            bool foundItem = false;            foreach (var item in this.ListParam)            {                if (item.param_key.Equals(param_key) && item.menuId == menuId)                {                    item.param_value = param_value;                    item.setValue();                    foundItem = true;                    break;                }            }            if (!foundItem)            {                GrainSizeAnalysisModel analysisItem = new GrainSizeAnalysisModel();                analysisItem.menuId = menuId;                analysisItem.param_key = param_key;                analysisItem.param_type = param_type;                analysisItem.param_value = param_value;                analysisItem.setValue();                this.ListParam.Add(analysisItem);            }        }    }}
 |