/// <summary> /// 获取一个实体类中所有字段信息 /// </summary> /// <param name="paraType">实体类类型</param> /// <param name="paraData"></param> private static void GetOneTypeParaInfo(Type paraType, ParaData paraData) { PropertyInfo[] PropertyList = paraType.GetProperties(); if (PropertyList == null || PropertyList.Length <= 0) { return; } paraData.SubseriesList = new List <ParaData>(); for (int i = 0; i < PropertyList.Length; i++) { var item = PropertyList[i]; var onePara = new ParaData(); onePara.ParaName = item.Name; var oneType = item.PropertyType; onePara.ParaTypeName = oneType.Name; if ((oneType.IsGenericType && oneType.GetGenericTypeDefinition().Equals(typeof(Nullable <>)))) { oneType = oneType.GetGenericArguments()[0]; onePara.ParaTypeName = oneType.Name + "?"; } onePara.ParaPosition = i; GetParaTypeInfo(oneType, onePara); /*这里应该再加上,去那个类文件,找到对应的类注释的方法*/ paraData.SubseriesList.Add(onePara); } }
/// <summary> /// 获取类中所有属性 /// </summary> /// <param name="paraType"></param> private static void GetTypeAllProperties(Type paraType, ParaData paraData) { PropertyInfo[] properties = paraType.GetProperties(); if (properties.Length <= 0) { return; } paraData.SubseriesList = new List <ParaData>(); //遍历方法下的参数 for (int k = 0; k < properties.Length; k++) { var item = properties[k]; var onePara = new ParaData(); //方法位置 onePara.ParaPosition = k; onePara.ParaTypeName = item.PropertyType.Name; onePara.ParaName = item.Name; GetParaTypeInfo(item.PropertyType, onePara); paraData.SubseriesList.Add(onePara); } }
private List <ParaData> GetParaData(string strPath) { List <ParaData> lstTempData = new List <ParaData>(); if (!File.Exists(strPath)) { return(lstTempData); } string path = string.Empty; XmlNode node = null; XmlDocument doc = new XmlDocument(); doc.Load(strPath); //工程名称 path = "PMC/参数列表"; node = doc.SelectSingleNode(path); for (int i = 0; i < node.ChildNodes.Count; i++) { ParaData para = new ParaData(); para.paraName = node.ChildNodes[i].ChildNodes[0].InnerText; para.paraUnit = node.ChildNodes[i].ChildNodes[1].InnerText; para.paraType = int.Parse(node.ChildNodes[i].ChildNodes[2].InnerText); para.paraValue = Convert.ToDouble(node.ChildNodes[i].ChildNodes[3].InnerText); para.strRemark = node.ChildNodes[i].ChildNodes[4].InnerText; lstTempData.Add(para); } return(lstTempData); }
private void TreeSelNode(ParaData para) { TreeNode rootNode = null; if (treeViewParameterList.Nodes.Count > 0) { rootNode = treeViewParameterList.Nodes[0]; if (rootNode != null && rootNode.Nodes.Count > 0) { foreach (TreeNode parentNode in rootNode.Nodes) { if (parentNode.Nodes.Count > 0 && para.paraType.ToString() == parentNode.Name) { foreach (TreeNode node in parentNode.Nodes) { if (para.paraName == node.Name) { treeViewParameterList.SelectedNode = node; } } } } } } }
/// <summary> /// 获取此类型下包含的其它类型的详细信息 /// </summary> /// <param name="paraType">要获取此类型下包含的其它类型的信息的类型</param> /// <param name="paraData">已保存当前类型信息的参数实体</param> private static void GetParaTypeInfo(Type paraType, ParaData paraData) { /* * 1.首先,判断参数类型是否为泛型 * */ if (!paraType.IsGenericType) { //不是泛型 if (!IsUserType(paraType)) { return; } /*以下为其它类型,有可能是自定义实体,有可能是第三方*/ GetOneTypeParaInfo(paraType, paraData); return; } /*以下就都是泛型的处理了*/ /*2.判断此类型是否为用户自定义类型*/ if (IsUserType(paraType)) { //是用户定义的类型 GetTypeAllProperties(paraType, paraData); } }
/// <summary> /// 获取页面数据 /// </summary> /// <returns></returns> private ParaData GetPageData() { ParaData paraData = new ParaData(); paraData.paraName = txtParameterName.Text.Trim(); paraData.paraUnit = cmbUnit.Text; paraData.paraType = int.Parse(cmbParameterType.SelectedIndex.ToString()); paraData.strRemark = txtParameterRemark.Text; return(paraData); }
/// <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); }
private ParaData CreatePara() { ParaData paraData = new ParaData { Name = Name, ParaModel = ParaMesh, Texture = ParaTexture, ParaOffsetPos = Para.ParaModel.transform.localPosition, RiserModel = RiserMesh }; return(paraData); }
void OnWizardOtherButton() { if (ParaData) { Name = ParaData.Name; ParaTexture = ParaData.Texture; ParaMesh = ParaData.ParaModel; RiserMesh = ParaData.RiserModel; Icon = ParaData.Icon; ParaLocalPos = ParaData.ParaOffsetPos; ParaData = null; _data = null; } }
/// <summary> /// 获取方法中的参数 /// </summary> /// <param name="oneMethod">正在操作的方法实体</param> /// <param name="methodInfo">方法信息封装类</param> private static void GetParaList(MethodData oneMethod, MethodInfo methodInfo) { //获取方法下的参数 ParameterInfo[] parameters = methodInfo.GetParameters(); if (parameters.Length <= 0) { return; } //遍历方法下的参数 for (int k = 0; k < parameters.Length; k++) { var onePara = new ParaData(); /* * parameters[k].ParameterType.Namespace * "TestAutoApiDoc.Controllers" * parameters[k].ParameterType.Name * "UserModel" */ var oneType = parameters[k].ParameterType; onePara.ParaTypeName = oneType.Name; if ((oneType.IsGenericType && oneType.GetGenericTypeDefinition().Equals(typeof(Nullable <>)))) { oneType = oneType.GetGenericArguments()[0]; onePara.ParaTypeName = oneType.Name + "?"; } onePara.ParaName = parameters[k].Name; //方法位置 onePara.ParaPosition = parameters[k].Position; GetParaTypeInfo(oneType, onePara); oneMethod.ParaList.Add(onePara); } }
void OnWizardCreate() { CreatIcons(); ParaData para = CreatePara(); string path = "Assets/BattleRoyale/_Para/Data/" + Name + ".asset"; if (File.Exists(path)) { if (!EditorUtility.DisplayDialog("ParaData Over Write", "Are you sure you want to Over write " + Name + " ?", "Replace", "Do Not Replace")) { return; } } AssetDatabase.CreateAsset(para, path); Repaint(); }
/// <summary> /// 获取excle文件数据 /// </summary> /// <param name="strFilePath"></param> /// <returns></returns> private List <ParaData> GetFileParaData(string strFilePath) { List <ParaData> lstParaData = new List <ParaData>(); if (File.Exists(strFilePath)) { ExcelLib OpExcel = new ExcelLib(); //指定操作的文件 OpExcel.OpenFileName = strFilePath; //打开文件 if (OpExcel.OpenExcelFile() == false) { return(lstParaData); } //取得所有的工作表名称 string[] strSheetsName = OpExcel.getWorkSheetsName(); //默认操作第一张表 OpExcel.SetActiveWorkSheet(1); System.Data.DataTable table; table = OpExcel.getAllCellsValue(); OpExcel.CloseExcelApplication(); int count = table.Rows.Count; for (int i = 0; i < count; i++) { ParaData para = new ParaData(); para.paraName = table.Rows[i][0].ToString(); para.paraUnit = table.Rows[i][1].ToString(); para.paraType = Convert.ToInt32(table.Rows[i][2].ToString()); para.paraValue = Convert.ToDouble(table.Rows[i][3].ToString()); para.strRemark = table.Rows[i][4].ToString(); lstParaData.Add(para); } } return(lstParaData); }
/// <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); }
void OnWizardUpdate() { if (!Para) { Para = _para; } if (!Equals(Para, _para)) { _para = Para; } if (ParaData && ParaData != _data) { _data = ParaData; OnWizardOtherButton(); } Para.ParaModel.mesh = ParaMesh; Para.ParaModel.transform.localPosition = ParaLocalPos; Para.ParaModel.GetComponent <Renderer>().material.mainTexture = ParaTexture; Para.RiserModel.mesh = RiserMesh; }
/// <summary> /// 确定事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnParameterConfirm_Click(object sender, EventArgs e) { string strErroInfo = GetPageVerification(); if (strErroInfo != string.Empty) { XLog.Write(strErroInfo); return; } ParaData paraData = GetPageData(); bool IsRecover = false; if (strType == "new" || strType == "JYNew") { for (int i = 0; i < lstAllParaData.Count; i++) { //新建参数名重复提示覆盖 if (paraData.paraType == lstAllParaData[i].paraType && paraData.paraName == lstAllParaData[i].paraName) { DialogResult result = MessageBox.Show("参数名称" + paraData.paraName + "同名是否覆盖?", "覆盖提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == DialogResult.Yes) { lstAllParaData[i] = paraData; IsRecover = true; } else { return; } } } if (IsRecover == false) { lstAllParaData.Add(paraData); } } if (strType == "edit") { // 先删除 ParaData tempPara = new ParaData(); string[] strArray = selNode.ToolTipText.Split('|'); int paraType = -1; if (strArray != null && strArray.Length > 2) { paraType = int.Parse(strArray[2]); } for (int j = 0; j < lstAllParaData.Count; j++) { if (lstAllParaData[j].paraType == paraType && selNode.Name == lstAllParaData[j].paraName) { tempPara = lstAllParaData[j]; lstAllParaData.Remove(lstAllParaData[j]); } } bool IsSame = false; // 在已有的参数列表中查找当前同名同类型参数 foreach (ParaData para in lstAllParaData) { if (para.paraName == paraData.paraName && para.paraType == paraData.paraType) { MessageBox.Show("当前存在同类型同名称参数,请修改!"); IsSame = true; lstAllParaData.Add(tempPara); return; } } // 没有便进行修改 if (IsSame == false) { lstAllParaData.Add(paraData); } } //lst排序 List <ParaData> lstTemp = GetSelParaData(); lstTemp = lstTemp.OrderBy(s => s.paraType).ToList(); BindTreeParaData(lstTemp); SetingPageButton("confirm"); SettingTitle("confirm"); TreeSelNode(paraData); }
private List<ParaData> GetXmlListRatioData(string strFilePath) { List<ParaData> lstParaData = null; try { XmlDocument xdoc = new XmlDocument(); xdoc.Load(strFilePath); string strPath = "修正因子数据/参数列表"; XmlNode node = xdoc.SelectSingleNode(strPath); XmlNodeList nodeList = node.ChildNodes; if (nodeList != null && nodeList.Count > 0) { lstParaData = new List<ParaData>(); foreach (XmlNode childNode in nodeList) { ParaData data = new ParaData(); data.paraName = childNode.ChildNodes[0].InnerText; data.paraEnName = childNode.ChildNodes[1].InnerText; data.paraUnit = childNode.ChildNodes[2].InnerText; data.paraType = Convert.ToInt32(childNode.ChildNodes[3].InnerText); data.paraValue = Convert.ToDouble(childNode.ChildNodes[4].InnerText); data.strRemark = childNode.ChildNodes[5].InnerText; lstParaData.Add(data); } } } catch { XLog.Write("导入文件\"" + strFilePath + "\"格式错误"); MessageBox.Show("导入文件\"" + strFilePath + "\"格式错误"); return null; } return lstParaData; }
/// <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("同步参数表成功"); }
/// <summary> /// 确定事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnParameterConfirm_Click(object sender, EventArgs e) { string strErroInfo = GetPageVerification(); if (strErroInfo != string.Empty) { XLog.Write(strErroInfo); return; } ParaData paraData = GetPageData(); bool IsRecover = false; if (strType == "new" || strType == "JYNew") { for (int i = 0; i < lstAllParaData.Count; i++) { //新建参数名重复提示覆盖 if (//paraData.paraType == lstAllParaData[i].paraType && paraData.paraName == lstAllParaData[i].paraName) { DialogResult result = MessageBox.Show("参数名称" + paraData.paraName + "同名是否覆盖?", "覆盖提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == DialogResult.Yes) { lstAllParaData[i] = paraData; IsRecover = true; } else { return; } } } if (IsRecover == false) { lstAllParaData.Add(paraData); } } if (strType == "edit") { // 先删除 ParaData tempPara = new ParaData(); //string[] strArray = selNode.ToolTipText.Split('|'); //int paraType = -1; //if (strArray != null && strArray.Length > 2) //{ // paraType = int.Parse(strArray[2]); //} for (int j = 0; j < lstAllParaData.Count; j++) { if (//lstAllParaData[j].paraType == paraType && selNode.Name == lstAllParaData[j].paraName) { tempPara = lstAllParaData[j]; lstAllParaData.Remove(lstAllParaData[j]); } } //bool IsSame = false; //// 在已有的参数列表中查找当前同名同类型参数 //foreach (ParaData para in lstAllParaData) //{ // if (para.paraName == paraData.paraName && para.paraType == paraData.paraType) // { // MessageBox.Show("当前存在同类型同名称参数,请修改!"); // IsSame = true; // lstAllParaData.Add(tempPara); // return; // } //} //// 没有便进行修改 //if (IsSame == false) //{ lstAllParaData.Add(paraData); //} } //lst排序 List<ParaData> lstTemp = GetSelParaData(); lstTemp = lstTemp.OrderBy(s => s.paraType).ToList(); BindTreeParaData(lstTemp); SetingPageButton("confirm"); SettingTitle("confirm"); TreeSelNode(paraData); }
/// <summary> /// 更新修正因子数据 /// </summary> private void UpDateModifyRatioData() { lstRatio = new List<ParaData>(); if (cmbCurrentSel.Text == "校核因子和技术因子") { string strParaName1 = string.Empty; string strParaName2 = string.Empty; if (lstJHRatio != null && lstTeachRatio != null && lstJHRatio.Count > 0 && lstTeachRatio.Count > 0) { foreach (ParaData data1 in lstJHRatio) { strParaName1 = data1.paraName.Substring(5, data1.paraName.Length - 5); foreach (ParaData data2 in lstTeachRatio) { strParaName2 = data2.paraName.Substring(5, data2.paraName.Length - 5); if (strParaName1 == strParaName2 && data1.strRemark == data2.strRemark) { ParaData data = new ParaData(); data.paraName = "修正因子-" + strParaName2; data.paraType = 8; data.strRemark = data1.strRemark; data.paraValue = data1.paraValue * data2.paraValue; lstRatio.Add(data); break; } } } } } else if (cmbCurrentSel.Text == "校核因子") { if (lstJHRatio != null && lstJHRatio.Count > 0) { string strParaName = string.Empty; foreach (ParaData data in lstJHRatio) { strParaName = data.paraName.Substring(5, data.paraName.Length - 5); data.paraName = "修正因子-" + strParaName; lstRatio.Add(data); } } } else if (cmbCurrentSel.Text == "技术因子") { if (lstTeachRatio != null && lstTeachRatio.Count > 0) { string strParaName = string.Empty; foreach (ParaData data in lstTeachRatio) { strParaName = data.paraName.Substring(5, data.paraName.Length - 5); data.paraName = "修正因子-" + strParaName; lstRatio.Add(data); } } } }
/// <summary> /// 更新技术因子 /// </summary> private void UpDateTechRatioData() { double dValue = 0; if (lstTeachRatio != null && lstTeachRatio.Count > 0) { for (int i = 1; i < dgvCorrectFactor.ColumnCount; i++) { if (cmbCurrentSel.Text == "技术因子") { dValue = dgvCorrectFactor.Rows[0].Cells[i].Value == null ? 0 : Convert.ToDouble(dgvCorrectFactor.Rows[0].Cells[i].Value.ToString()); lstTeachRatio[i - 1].paraValue = dValue; } if (cmbCurrentSel.Text == "校核因子和技术因子") { dValue = dgvCorrectFactor.Rows[1].Cells[i].Value == null ? 0 : Convert.ToDouble(dgvCorrectFactor.Rows[1].Cells[i].Value.ToString()); lstTeachRatio[i - 1].paraValue = dValue; } } } else { if (lstTeachRatio == null) { lstTeachRatio = new List<ParaData>(); } for (int i = 1; i < dgvCorrectFactor.ColumnCount; i++) { if (cmbCurrentSel.Text == "技术因子") { dValue = dgvCorrectFactor.Rows[0].Cells[i].Value == null ? 0 : Convert.ToDouble(dgvCorrectFactor.Rows[0].Cells[i].Value.ToString()); } if (cmbCurrentSel.Text == "校核因子和技术因子") { dValue = dgvCorrectFactor.Rows[1].Cells[i].Value == null ? 0 : Convert.ToDouble(dgvCorrectFactor.Rows[1].Cells[i].Value.ToString()); } ParaData data = new ParaData(); data.paraName = "技术因子-" + dgvCorrectFactor.Columns[i].HeaderText; data.paraUnit = "无量纲"; data.paraValue = dValue; data.paraType = 8; //获取路径 data.strRemark = dgvCorrectFactor.Columns[i].ToolTipText; lstTeachRatio.Add(data); } } }
/// <summary> /// 从数据文件导入修正因子 /// </summary> private void FormDataFileImportRatio(string strImportType) { if (basicWeightData == null || basicWeightData.lstWeightData.Count == 0) { MessageBox.Show("请先导入基础重量数据"); return; } OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Filter = "xml文件 (*.xml)|*.xml|Excle文件 (*.xls)|*.xls|All File (*.*)|*.*"; fileDialog.RestoreDirectory = true; fileDialog.FilterIndex = 1; if (fileDialog.ShowDialog() == DialogResult.OK) { string strFilePath = fileDialog.FileName; //if (IsRatioDataFileFormat(strFilePath) == false) //{ // XLog.Write("导入文件\"" + strFilePath + "\"格式错误"); // return; //} //获取重量设计数据 List<ParaData> lstPara = null; if (strFilePath.EndsWith(".xls")) { lstPara = GetExcelRatioData(strFilePath); } else if (strFilePath.EndsWith(".xml")) { lstPara = GetXmlListRatioData(strFilePath); } else { XLog.Write("导入文件\"" + strFilePath + "\"格式错误"); MessageBox.Show("导入文件\"" + strFilePath + "\"格式错误"); return; } if (lstPara == null) { return; } if (lstPara != null && lstPara.Count == 0) { MessageBox.Show("导入的文件没有数据"); return; } string str = ImportRatioType(lstPara, strImportType); if (str != string.Empty) { MessageBox.Show(str); return; } //判断导入修正因子是否与重量基础数据一致 if (WeightSortData.blIsFit(basicWeightData, lstPara) == false) { MessageBox.Show("导入的修正因子与基础数据不一致"); return; } if (lstPara != null && lstPara.Count > 0) { string strTrype = lstPara[0].paraName.Substring(0, 4); if (strTrype == "校核因子") { SetJHRatioData(lstPara); } if (strTrype == "技术因子") { SetTechRatioData(lstPara); } XLog.Write("导入文件\"" + strFilePath + "\"成功"); } if (cmbCurrentSel.Text == "校核因子") { lstRatio = new List<ParaData>(); if (lstJHRatio != null && lstJHRatio.Count > 0) { foreach (ParaData data in lstJHRatio) { lstRatio.Add(data); } } } else if (cmbCurrentSel.Text == "技术因子") { lstRatio = new List<ParaData>(); if (lstTeachRatio != null && lstTeachRatio.Count > 0) { foreach (ParaData data in lstTeachRatio) { lstRatio.Add(data); } } } else { lstRatio = new List<ParaData>(); string strParaName1 = string.Empty; string strParaName2 = string.Empty; if (lstJHRatio != null && lstTeachRatio != null && lstJHRatio.Count > 0 && lstTeachRatio.Count > 0) { foreach (ParaData data1 in lstJHRatio) { strParaName1 = data1.paraName.Substring(5, data1.paraName.Length - 5); foreach (ParaData data2 in lstTeachRatio) { strParaName2 = data2.paraName.Substring(5, data2.paraName.Length - 5); if (strParaName1 == strParaName2 && data1.strRemark == data2.strRemark) { ParaData data = new ParaData(); data.paraName = data1.paraName; data.paraType = 8; data.strRemark = data1.strRemark; data.paraValue = data1.paraValue * data2.paraValue; lstRatio.Add(data); break; } } } } } //设置修正因子 SetRatioData(lstRatio); //显示柱状图 //DisplayInPicture(lstJHRatio, lstTeachRatio, lstRatio); DisplayAdjustmentInPic(lstJHRatio, lstTeachRatio, lstRatio); } }
private void buttonApply_Click(object sender, EventArgs e) { string errmsg; ZstExpression.CExpression expr = ZstExpression.CExpression.Parse(textBoxFormulaEdit.Text, out errmsg); if (expr == null) { MessageBox.Show(errmsg); return; } textBoxFormulaEdit.Text = expr.GetExpression(); TreeNode node = treeViewWeightSortNode.SelectedNode; NodeFormula nf = (NodeFormula)node.Tag; WeightFormula wf = nf[nEditFormulaIndex]; wf.Formula = textBoxFormulaEdit.Text; List<string> paras = new List<string>(); expr.GetVariables(ref paras); wf.ParaList.Clear(); foreach (string paraname in paras) { ParaData wp = null; if (dictTempPara.ContainsKey(paraname)) { wp = FindParameter(paraname, dictTempPara[paraname]); } else { wp = FindParameter(paraname, null); } if (wp == null) { wp = new ParaData(); wp.paraName = paraname; wp.paraType = 10; } wf.ParaList.Add(wp); } HashSet<ParaData> wpSet = new HashSet<ParaData>(); foreach (ParaData wp in nf.XFormula.ParaList) { wpSet.Add(wp); } foreach (ParaData wp in nf.YFormula.ParaList) { wpSet.Add(wp); } SetParaList(wpSet); if (nEditFormulaIndex == 0) { textBoxFormulaX.Text = wf.Formula; textBoxFormulaX.Modified = false; } else { textBoxFormulaY.Text = wf.Formula; textBoxFormulaY.Modified = false; } SetEditMode(1); dateTimePickerLastModifyTime.Value = DateTime.Today; }
private void buttonApply_Click(object sender, EventArgs e) { WeightFormula wf = null; if (groupBoxSelectFormula.Visible) { TreeNode node = treeViewWeightSortNode.SelectedNode; WeightFormula oldwf = (WeightFormula)node.Tag; oldwf.nAttach = 0; wf = mapCandidateFormula.First(temppair => temppair.Value == (string)listBoxCandidateFormula.SelectedItem).Key; node.Tag = wf; wf.NodePath = node.Name; wf.nAttach = 1; textBoxFormula.Text = wf.Formula; listBoxCandidateFormula.Items.Remove(listBoxCandidateFormula.SelectedItem); if (mapCandidateFormula.ContainsKey(oldwf)) { listBoxCandidateFormula.Items.Add(mapCandidateFormula[oldwf]); } } else { string errmsg; ZstExpression.CExpression expr = ZstExpression.CExpression.Parse(textBoxFormula.Text, out errmsg); if (expr == null) { MessageBox.Show(errmsg); return; } textBoxFormula.Text = expr.GetExpression(); TreeNode node = treeViewWeightSortNode.SelectedNode; wf = (WeightFormula)node.Tag; wf.Formula = textBoxFormula.Text; List<string> paras = new List<string>(); expr.GetVariables(ref paras); wf.ParaList.Clear(); foreach (string paraname in paras) { ParaData wp = null; if (dictTempPara.ContainsKey(paraname)) { wp = FindParameter(paraname, dictTempPara[paraname]); } else { wp = FindParameter(paraname, null); } if (wp == null) { wp = new ParaData(); wp.paraName = paraname; wp.paraType = 10; } wf.ParaList.Add(wp); } } SetParaList(wf.ParaList); textBoxFormula.Modified = false; SetEditMode(1); dateTimePickerLastModifyTime.Value = DateTime.Today; }
private void btnCompute_Click(object sender, EventArgs e) { if (!bEditProject) { txtWeightEstName.Text = txtWeightEstName.Text.Trim(); if (txtWeightEstName.Text.Length == 0) { MessageBox.Show("设计数据名称不能为空!"); return; } if (Verification.IsCheckString(txtWeightEstName.Text)) { MessageBox.Show("设计数据名称含有非法字符"); return; } curWa.DataName = txtWeightEstName.Text; } for (int i = 0; i < curWa.FormulaList.Count; ++i) { CExpression expr = curExprList[i]; foreach (ParaData wp in curWa.FormulaList[i].ParaList) { expr.SetVariableValue(wp.paraName, wp.paraValue); } double value = expr.Run(); if (double.IsInfinity(value) || double.IsNaN(value)) { MessageBox.Show("参数值或公式有误!节点: " + curWa.FormulaList[i].NodePath); return; } curWa.FormulaList[i].Value = value; } //curWa.WriteArithmeticFile("test.xml", true); if (mainForm.designProjectData == null) { CoreDesignProject coreForm = new CoreDesignProject(mainForm, "new"); coreForm.ShowDialog(); } if (mainForm.designProjectData.lstWeightArithmetic == null) { mainForm.designProjectData.lstWeightArithmetic = new List<WeightArithmetic>(); } //计算 Dictionary<ParaData, ParaData> wpDict = new Dictionary<ParaData, ParaData>(); List<WeightFormula> FormulaList = new List<WeightFormula>(); foreach (WeightFormula formula in curWa.FormulaList) { List<ParaData> ParaList = new List<ParaData>(); foreach (ParaData para in formula.ParaList) { ParaData tempWp = null; if (!wpDict.ContainsKey(para)) { tempWp = new ParaData(para); wpDict.Add(para, tempWp); } else { tempWp = wpDict[para]; } ParaList.Add(tempWp); } formula.ParaList = ParaList; } if (!bEditProject) { mainForm.designProjectData.lstWeightArithmetic.Add(curWa); mainForm.BindProjectTreeData(mainForm.designProjectData); mainForm.SetWeightDesignTab(curWa, mainForm.designProjectData.lstWeightArithmetic.Count - 1); XLog.Write("设计数据\"" + txtWeightEstName.Text + "\"计算完成!"); } else { //刷新页面 mainForm.SetWeightDesignReuslt(curWa); XLog.Write("设计数据\"" + txtWeightEstName.Text + "\"重新计算完成!"); } DialogResult = DialogResult.OK; Close(); }
/// <summary> /// 获取excle文件数据 /// </summary> /// <param name="strFilePath"></param> /// <returns></returns> private List<ParaData> GetFileParaData(string strFilePath) { List<ParaData> lstParaData = new List<ParaData>(); if (File.Exists(strFilePath)) { ExcelLib OpExcel = new ExcelLib(); //指定操作的文件 OpExcel.OpenFileName = strFilePath; //打开文件 if (OpExcel.OpenExcelFile() == false) { return lstParaData; } //取得所有的工作表名称 string[] strSheetsName = OpExcel.getWorkSheetsName(); //默认操作第一张表 OpExcel.SetActiveWorkSheet(1); System.Data.DataTable table; table = OpExcel.getAllCellsValue(); OpExcel.CloseExcelApplication(); int count = table.Rows.Count; for (int i = 0; i < count; i++) { ParaData para = new ParaData(); para.paraName = table.Rows[i][0].ToString(); para.paraEnName = table.Rows[i][1].ToString(); para.paraUnit = table.Rows[i][2].ToString(); para.paraType = Convert.ToInt32(table.Rows[i][3].ToString()); para.paraValue = Convert.ToDouble(table.Rows[i][4].ToString()); para.strRemark = table.Rows[i][5].ToString(); lstParaData.Add(para); } } return lstParaData; }
private List<ParaData> GetExcelRatioData(string strFilePath) { List<ParaData> lstParaData = null; try { if (File.Exists(strFilePath)) { ExcelLib OpExcel = new ExcelLib(); //指定操作的文件 OpExcel.OpenFileName = strFilePath; //打开文件 if (OpExcel.OpenExcelFile() == false) { return lstParaData; } //取得所有的工作表名称 string[] strSheetsName = OpExcel.getWorkSheetsName(); //默认操作第一张表 OpExcel.SetActiveWorkSheet(1); System.Data.DataTable table; table = OpExcel.getAllCellsValue(); OpExcel.CloseExcelApplication(); int count = table.Rows.Count; if (count > 0) { lstParaData = new List<ParaData>(); for (int i = 0; i < count; i++) { ParaData data = new ParaData(); data.paraName = table.Rows[i][0].ToString(); data.paraEnName = table.Rows[i][1].ToString(); data.paraUnit = table.Rows[i][2].ToString(); data.paraType = Convert.ToInt32(table.Rows[i][3].ToString()); data.paraValue = Convert.ToDouble(table.Rows[i][4].ToString()); data.strRemark = table.Rows[i][5].ToString(); lstParaData.Add(data); } } } } catch { XLog.Write("导入文件\"" + strFilePath + "\"格式错误"); MessageBox.Show("导入文件\"" + strFilePath + "\"格式错误"); return null; } return lstParaData; }
/// <summary> /// 获取页面数据 /// </summary> /// <returns></returns> private ParaData GetPageData() { ParaData paraData = new ParaData(); paraData.paraName = textBoxParaName.Text.Trim(); paraData.paraEnName = textBoxParaEnName.Text.Trim(); paraData.paraUnit = cmbUnit.Text; paraData.paraType = int.Parse(cmbParameterType.SelectedIndex.ToString()); paraData.strRemark = txtParameterRemark.Text; return paraData; }
private List<ParaData> GetParaData(string strPath) { List<ParaData> lstTempData = new List<ParaData>(); if (!File.Exists(strPath)) { return lstTempData; } string path = string.Empty; XmlNode node = null; XmlDocument doc = new XmlDocument(); doc.Load(strPath); //工程名称 path = "PMC/参数列表"; node = doc.SelectSingleNode(path); for (int i = 0; i < node.ChildNodes.Count; i++) { ParaData para = new ParaData(); //para.paraName = node.ChildNodes[i].ChildNodes[0].InnerText; //para.paraUnit = node.ChildNodes[i].ChildNodes[1].InnerText; //para.paraType = int.Parse(node.ChildNodes[i].ChildNodes[2].InnerText); //para.paraValue = Convert.ToDouble(node.ChildNodes[i].ChildNodes[3].InnerText); //para.strRemark = node.ChildNodes[i].ChildNodes[4].InnerText; para.paraName = node.ChildNodes[i].ChildNodes[0].InnerText; para.paraEnName = node.ChildNodes[i].ChildNodes[1].InnerText; para.paraUnit = node.ChildNodes[i].ChildNodes[2].InnerText; para.paraType = int.Parse(node.ChildNodes[i].ChildNodes[3].InnerText); para.paraValue = Convert.ToDouble(node.ChildNodes[i].ChildNodes[4].InnerText); para.strRemark = node.ChildNodes[i].ChildNodes[5].InnerText; lstTempData.Add(para); } return lstTempData; }
/// <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; }
/// <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; data.paraEnName = para.paraEnName; 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("同步参数表成功"); }