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("同步参数表成功"); }