Esempio n. 1
0
        private void btnWriteParaToTDE_Click(object sender, EventArgs e)
        {
            if (PubSyswareCom.IsRuntimeServerStarted())
            {
                List <ParaData> lstTdePara = WeightEstimateForm.GetListParaData();
                if (lstTdePara != null && lstTdePara.Count > 0)
                {
                    foreach (WeightParameter weight in curWaParas)
                    {
                        IEnumerable <ParaData> selection = from para in lstTdePara where weight.ParaName == para.paraName select para;

                        if (selection.Count() == 0)
                        {
                            PubSyswareCom.CreateDoubleParameter(weight.ParaName, weight.ParaValue, true, true, false);
                            MainForm.SetParameterUnit(weight.ParaName, weight.ParaUnit);
                            WeightEstimateForm.SetParaGroup(weight.ParaType, weight.ParaName);
                        }
                        else
                        {
                            PubSyswareCom.mSetParameter(string.Empty, weight.ParaName, weight.ParaValue);
                        }
                    }
                }
                else
                {
                    foreach (WeightParameter weight in curWaParas)
                    {
                        PubSyswareCom.CreateDoubleParameter(weight.ParaName, weight.ParaValue, true, true, false);
                        MainForm.SetParameterUnit(weight.ParaName, weight.ParaUnit);
                        WeightEstimateForm.SetParaGroup(weight.ParaType, weight.ParaName);
                    }
                }
                MessageBox.Show("参数写入TDE成功!");
            }
        }
        /// <summary>
        /// 获取参数表数据转换成ListParaData
        /// </summary>
        /// <returns></returns>
        public static List <ParaData> GetListParaData()
        {
            List <ParaData> lstPara = null;

            if (PubSyswareCom.IsRuntimeServerStarted())
            {
                //获取参数的值
                object obj = null;

                PubSyswareCom.GetParameterNames(string.Empty, ref obj);

                //转换为字符串数组
                if (obj is Object[])
                {
                    lstPara = new List <ParaData>();

                    object[] objName = obj as Object[];
                    for (int i = 0; i < objName.Count(); i++)
                    {
                        Object objValue = null;
                        PubSyswareCom.mGetParameter(string.Empty, objName[i].ToString(), ref objValue);

                        if (objValue != null)
                        {
                            //参数
                            if (objName[i].ToString() != "weightData" && objName[i].ToString() != "coreEnvelopeData")
                            {
                                ParaData data = new ParaData();
                                data.paraName = objName[i].ToString();
                                try
                                {
                                    data.paraValue = Convert.ToDouble(objValue.ToString());
                                }
                                catch (Exception e)
                                {
                                    data.paraValue = 0;
                                    XLog.Write(e.Message);
                                }


                                lstPara.Add(data);
                            }
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("TDE/IDE 没有启动成功");
            }

            return(lstPara);
        }
 public static void SetParaGroup(int paraType, string paraName)
 {
     if (paraType == 0)
     {
         PubSyswareCom.SetParameterGroup(paraName, "指标参数");
     }
     if (paraType == 1)
     {
         PubSyswareCom.SetParameterGroup(paraName, "构型和总体参数");
     }
     if (paraType == 2)
     {
         PubSyswareCom.SetParameterGroup(paraName, "旋翼参数");
     }
     if (paraType == 3)
     {
         PubSyswareCom.SetParameterGroup(paraName, "机身翼面参数");
     }
     if (paraType == 4)
     {
         PubSyswareCom.SetParameterGroup(paraName, "着陆装置参数");
     }
     if (paraType == 5)
     {
         PubSyswareCom.SetParameterGroup(paraName, "动力系统参数");
     }
     if (paraType == 6)
     {
         PubSyswareCom.SetParameterGroup(paraName, "传动系统参数");
     }
     if (paraType == 7)
     {
         PubSyswareCom.SetParameterGroup(paraName, "操纵系统参数");
     }
     if (paraType == 8)
     {
         PubSyswareCom.SetParameterGroup(paraName, "人工参数");
     }
     if (paraType == 9)
     {
         PubSyswareCom.SetParameterGroup(paraName, "其他类型参数");
     }
     if (paraType == 10)
     {
         PubSyswareCom.SetParameterGroup(paraName, "临时参数");
     }
 }
        /// <summary>
        /// 同步参数表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPuslishToTde_Click(object sender, EventArgs e)
        {
            if (PubSyswareCom.IsRuntimeServerStarted())
            {
                DialogResult result = MessageBox.Show("是否参数同步?", "同步提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (result == DialogResult.Yes)
                {
                    SynchronizationWeightPara();

                    MessageBox.Show("同步参数完成");
                }
            }
            else
            {
                MessageBox.Show("TDE/IDE 没有启动成功");
            }
        }
 /// <summary>
 /// 结构参数对象转xml文件公共方法
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="result"></param>
 /// <param name="title"></param>
 /// <param name="dataObjectMethod"></param>
 /// <returns></returns>
 public static string DataObjectToXml <T>(T result, string title, DataObjectToXmlDelegate <T> dataObjectMethod)
 {
     if (PubSyswareCom.IsRuntimeServerStarted())
     {
         if (result != null)
         {
             object obj  = null;
             string path = null;
             PubSyswareCom.GetParameterNames(null, ref obj);
             if (obj == null)
             {
                 return("TDE/IDE 参数表没打开");
             }
             object[] objs = obj as object[];
             bool     bl   = false;
             foreach (object o in objs)
             {
                 if (o.ToString() == title)
                 {
                     bl = true;
                     break;
                 }
             }
             path = dataObjectMethod(result, bl);
             if (path == null)
             {
                 return("SyswareDataObject.xml 生成失败");
             }
             bl = bl ? (PubSyswareCom.AddChildDataObject(title, path)) : (PubSyswareCom.AddDataObject(path));
             if (!bl)
             {
                 return("结构化参数表同步失败");
             }
             return("");
         }
         else
         {
             return("评估软件数据集为空");
         }
     }
     else
     {
         return("TDE/IDE 没有启动成功");
     }
 }
        /// <summary>
        /// 获取参数表数据转换成ListParaData
        /// </summary>
        /// <returns></returns>
        public static List <ParaData> GetListParaData()
        {
            List <ParaData> lstPara = null;

            if (PubSyswareCom.IsRuntimeServerStarted())
            {
                //获取参数的值
                object obj = null;
                PubSyswareCom.GetParameterNames(string.Empty, ref obj);

                //转换为字符串数组
                if (obj is Object[])
                {
                    lstPara = new List <ParaData>();

                    object[] objName = obj as Object[];
                    for (int i = 0; i < objName.Count(); i++)
                    {
                        Object objValue = null;
                        PubSyswareCom.mGetParameter(string.Empty, objName[i].ToString(), ref objValue);

                        if (objValue != null)
                        {
                            //参数
                            if (objName[i].ToString() != "weightData" && objName[i].ToString() != "coreEnvelopeData")
                            {
                                ParaData data = new ParaData();
                                data.paraName  = objName[i].ToString();
                                data.paraValue = Convert.ToDouble(objValue.ToString());

                                lstPara.Add(data);
                            }
                        }
                    }
                }
            }

            return(lstPara);
        }
        /// <summary>
        /// 同步参数到参数列表
        /// </summary>
        private void SynchronizationWeightPara()
        {
            string          msg     = "";
            List <ParaData> lstPara = new List <ParaData>();

            if (lstAllParaData != null && lstAllParaData.Count > 0)
            {
                foreach (ParaData para in lstAllParaData)
                {
                    ParaData data = new ParaData();
                    data.paraName = para.paraName;
                    try
                    {
                        data.paraUnit = dicUnits[para.paraUnit];
                    }
                    catch
                    {
                        //data.paraUnit = para.paraUnit;
                        msg += data.paraName + "单位值'" + para.paraUnit + "'不在IDE已有单位范围中;\n";
                    }

                    data.paraType  = para.paraType;
                    data.paraValue = para.paraValue;
                    data.strRemark = para.strRemark;

                    lstPara.Add(data);
                }
            }

            //参数表中的参数
            List <ParaData> lstTdePara = WeightEstimateForm.GetListParaData();

            if (lstPara != null && lstPara.Count > 0)
            {
                foreach (ParaData para in lstPara)
                {
                    if (MainForm.IsExitPara(para.paraName, lstTdePara) == false)
                    {
                        PubSyswareCom.CreateDoubleParameter(para.paraName, para.paraValue, true, true, false);

                        //设置分组
                        if (para.paraType == 0)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "指标参数");
                        }
                        if (para.paraType == 1)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "构型和总体参数");
                        }
                        if (para.paraType == 2)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "旋翼参数");
                        }
                        if (para.paraType == 3)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "机身翼面参数");
                        }
                        if (para.paraType == 4)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "着陆装置参数");
                        }
                        if (para.paraType == 5)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "动力系统参数");
                        }
                        if (para.paraType == 6)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "传动系统参数");
                        }
                        if (para.paraType == 7)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "操纵系统参数");
                        }
                        if (para.paraType == 8)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "人工参数");
                        }
                        if (para.paraType == 9)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "其他类型参数");
                        }
                        if (para.paraType == 10)
                        {
                            PubSyswareCom.SetParameterGroup(para.paraName, "临时参数");
                        }
                    }
                    MainForm.SetParameterUnit(para.paraName, para.paraUnit);
                }
            }

            /*------------------------------------------删除文件中没有的参数-----------------------------*/

            List <string> lstName = new List <string>();

            for (int i = 0; i < lstTdePara.Count; i++)
            {
                bool IsExit = false;
                foreach (ParaData data in lstPara)
                {
                    if (data.paraName == lstTdePara[i].paraName)
                    {
                        IsExit = true;
                        break;
                    }
                }
                if (IsExit == false)
                {
                    lstName.Add(lstTdePara[i].paraName);
                }
            }

            //删除参数
            foreach (string str in lstName)
            {
                PubSyswareCom.DeleteParameter(string.Empty, str);
            }

            if (msg != "")
            {
                XLog.Write(msg);
                //MessageBox.Show(msg);
            }
            //----------------------------------------------------------------------------------------------//
            XLog.Write("同步参数表成功");
        }