/// <summary> /// 修改工况 /// </summary> /// <param name="bEdit"></param> /// <param name="m_Node"></param> public GKDlg(bool bEdit, AFATreeNode m_Node) { m_bEdit = bEdit; InitializeComponent(); this.cmbINVERSE.SelectedIndex = 0; this.cmbDISKAK.SelectedIndex = 0; this.btnEditXY.Enabled = false; this.btnDelXY.Enabled = false; this.m_Node = m_Node; }
private void tsWG_Click(object sender, EventArgs e) { AFATreeNode selNode = (AFATreeNode)this.treeView1.SelectedNode; if (selNode != null && MessageBox.Show("导入网格会清除已计算的结果数据", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Title = "导入网格"; // dlg.InitialDirectory = Common.dataFolder; dlg.Filter = "网格文件|*.msh" +"|All Files|*.*"; if (dlg.ShowDialog() == DialogResult.OK) { if (dlg.FileName == Common.prjName + "\\rotorwing_gambit.msh") { MessageBox.Show("源网格文件与目标网格文件相同,不能导入."); return; } // Directory.GetCurrentDirectory //File.Copy(Common.MESHLOCATION, Common.prjName + "\\rotorwing_gambit.msh", true); selNode.Nodes.Clear(); string str = dlg.FileName; string temp = str.Substring(str.LastIndexOf("\\") + 1); AFATreeNode node = null; node = new AFATreeNode(temp, TreeNodeType.nodeWGCase); selNode.Nodes.Add(node); selNode.Expand(); Common.MESHLOCATION = str; //if (MessageBox.Show("是否复制到本地", "网格复制", MessageBoxButtons.OKCancel) == DialogResult.OK) //{ this.tabPage1.Controls.Remove(this.meshDisControl1); this.showGKBtn.Enabled = false; this.meshDisControl1 = new MeshDisLib.MeshDisControl(); this.meshDisControl1.Dock = System.Windows.Forms.DockStyle.Fill; this.meshDisControl1.Location = new System.Drawing.Point(3, 3); this.meshDisControl1.Name = "meshDisControl1"; this.meshDisControl1.Size = new System.Drawing.Size(663, 393); this.meshDisControl1.TabIndex = 0; this.tabPage1.Controls.Add(this.meshDisControl1); Thread thread = new Thread(new ParameterizedThreadStart(copyMSH)); thread.IsBackground = true; //thread.Start();// 无参的回调 thread.Start(new CallBackDelegate(callBack)); //有参的回调 cmd.ShowOpaqueLayer(this, 123, true); //} //else //{ // this.meshDisControl1.MeshDis(dlg.FileName); //} } } }
private void tsOpen_Click(object sender, EventArgs e) { OpenFileDialog oDlg = new OpenFileDialog(); oDlg.Title = "打开文件"; oDlg.InitialDirectory = Common.startupFolder; oDlg.Filter = "prj files(*.prj)|*.prj"; if (oDlg.ShowDialog() == DialogResult.OK) { this.m_strPrjFile = oDlg.FileName; Common.prjName = oDlg.FileName.Replace("\\" + oDlg.SafeFileName, ""); InitTree(); string str = oDlg.FileName; str = str.Substring(str.LastIndexOf("\\") + 1); this.Text = "全机气动布局---" + str; this.tsSave.Enabled = true; this.tsSaveAs.Enabled = true; string fileName = oDlg.FileName; OpenFile(fileName); GKNode.Expand(); WGNode.Nodes.Clear(); string strMsh = fileName.Substring(0, fileName.LastIndexOf("\\") + 1) + "rotorwing_gambit.msh"; if (File.Exists(strMsh)) { AFATreeNode node = null; node = new AFATreeNode("rotorwing_gambit.msh", TreeNodeType.nodeWGCase); WGNode.Nodes.Add(node); WGNode.Expand(); Common.MESHLOCATION = strMsh; //this.meshDisControl1.MeshDis(strMsh); object[] objs = new object[2]; objs[0] = this.meshDisControl1; objs[1] = strMsh; LoadingForm f = new LoadingForm(objs, this.openFileCallBack); f.ShowDialog(this); this.showGKBtn.Enabled = true; this.showGKBtn.Checked = true; } //打开计算结果页面 for (int i = 0; i < GKNode.Nodes.Count; i++) { TreeNode node = GKNode.Nodes[i]; Common.GKPath = Common.prjName + Path.DirectorySeparatorChar + node.Text + Path.DirectorySeparatorChar; string GKPath = Common.GKPath; if (!Directory.Exists(GKPath)) { continue; } sGK data = (sGK)node.Tag; tabControl1.TabPages.RemoveByKey(node.Text); //foreach (TabPage page in tabControl1.TabPages) //{ // if (node.Text == page.Text) // { // tabControl1.TabPages.Remove(page); // } //} TabPage m_tabPage = new TabPage(); m_tabPage.Name = node.Text;// "tPage" + i; m_tabPage.Tag = node.Text;//MainForm.GKNode.Nodes[i].Text; m_tabPage.Text = node.Text;//MainForm.GKNode.Nodes[i].Text; m_tabPage.UseVisualStyleBackColor = true; this.tabControl1.Controls.Add(m_tabPage); this.tabControl1.SelectedTab = m_tabPage; //this.tabControl1.TabPages[this.tabControl1.TabPages.Count-1]; //mainForm.Controls.Find("tabControl1", true)[0].Controls.Add(m_tabPage); #region 加载上次运行图画 Dictionary<int, PointPairList> pointYCollection = new Dictionary<int, PointPairList>(); string[] arr = new string[5]; SyswareDataObject sdo = new SyswareDataObject(); try { if (SyswareDataObjectUtil.loadFresultData(sdo, GKPath, false, true)) { sdo = sdo.children[0]; foreach (SyswareDataObject tem in sdo.children) { arr[0] = tem.children[0].value; arr[1] = tem.children[1].value; arr[2] = tem.children[2].children[2].value; arr[3] = tem.children[2].children[0].value; arr[4] = tem.children[3].children[0].children[2].value; for (int j = 1; j < arr.Length; j++) { double axisY = 0.0; try { axisY = double.Parse(arr[j], System.Globalization.NumberStyles.Any); } catch { axisY = 0.0; } if (!pointYCollection.ContainsKey(j - 1)) { pointYCollection.Add(j - 1, new PointPairList()); } pointYCollection[j - 1].Add(Convert.ToDouble(arr[0]), Convert.ToDouble(axisY)); } } } else { MessageBox.Show("文件加载失败"); } } catch (Exception ex) { MessageBox.Show("文件格式错误.详细:" + ex.Message); return; } DisGKResult disGKResult1 = new DisGKResult(m_tabPage, pointYCollection, false); disGKResult1.drawGraph(arr); #endregion m_tabPage.Controls.Add(disGKResult1); disGKResult1.Dock = DockStyle.Fill; disGKResult1.Name = "disGKResult" + i; } } }
private void tsAddGK_Click(object sender, EventArgs e) { AFATreeNode selNode = (AFATreeNode)this.treeView1.SelectedNode; if (selNode != null) { GKDlg dlg; if (selNode.Nodes.Count == 0) { dlg = new GKDlg(false); } else { dlg = new GKDlg(false, (AFATreeNode)selNode.Nodes[selNode.Nodes.Count - 1]); } if (dlg.ShowDialog() == DialogResult.OK) { AFATreeNode node = null; node = new AFATreeNode(dlg.m_Data.Name, TreeNodeType.nodeGKCase); node.Name = dlg.m_Data.Name; node.Tag = dlg.m_Data; selNode.Nodes.Add(node); //GKNode.Nodes } } selNode.Expand(); }
/// <summary> /// 工况刷新图表 /// </summary> /// <param name="selNode"></param> private void refreshChart(AFATreeNode selNode) { //AFATreeNode selNode = (AFATreeNode)this.treeView1.SelectedNode; if (selNode != null&&selNode.Tag!=null) { sGK gk = (sGK)selNode.Tag; if (gk.MODEL == "1" || gk.MODEL == "101") { this.meshDisControl1.addRotor(null); } else { if (gk.NDISK != 0) { double[,] rotor = new double[gk.NDISK, 7]; for (int i = 0; i < gk.NDISK; i++) { rotor[i, 0] = Convert.ToDouble(gk.XYData[i].DISKX); rotor[i, 1] = Convert.ToDouble(gk.XYData[i].DISKY); rotor[i, 2] = Convert.ToDouble(gk.XYData[i].DISKZ); rotor[i, 3] = Convert.ToDouble(gk.XYData[i].RADIUS); rotor[i, 4] = Convert.ToDouble(gk.XYData[i].HDISK); rotor[i, 5] = Convert.ToDouble(gk.XYData[i].DISKAK); rotor[i, 6] = Convert.ToDouble(gk.XYData[i].ALF_TPP); } this.meshDisControl1.addRotor(rotor); } } } }
private void OpenFile(string strFile) { XmlDocument doc = new XmlDocument(); doc.Load(strFile); XmlElement root = doc.DocumentElement; //Common.prjName = GetNodeText(root, "项目路径", string.Empty, string.Empty, string.Empty); int Num = 0; Num = Convert.ToInt32(GetNodeText(root, "工况", "工况数量", string.Empty, string.Empty)); if (Num > 0) { sGK data = new sGK(); string NumName = string.Empty; for (int i = 0; i < Num; i++) { NumName = "工况" + i.ToString(); data.Name = GetNodeText(root, "工况", NumName, "名称", string.Empty); data.MODEL = GetNodeText(root, "工况", NumName, "MODEL", string.Empty); data.BLCONT = GetNodeText(root, "工况", NumName, "BLCONT", string.Empty); data.MACH_INF = GetNodeText(root, "工况", NumName, "MACH_INF", string.Empty); data.RE = GetNodeText(root, "工况", NumName, "RE", string.Empty); data.F*X = GetNodeText(root, "工况", NumName, "F*X", string.Empty); data.FUY = GetNodeText(root, "工况", NumName, "FUY", string.Empty); data.FUZ = GetNodeText(root, "工况", NumName, "FUZ", string.Empty); data.PITCH_V = GetNodeText(root, "工况", NumName, "PITCH_V", string.Empty); data.YAW_V = GetNodeText(root, "工况", NumName, "YAW_V", string.Empty); data.FLOWRATE = GetNodeText(root, "工况", NumName, "FLOWRATE", string.Empty); data.ZMU = GetNodeText(root, "工况", NumName, "ZMU", string.Empty); data.NDISK = Convert.ToInt32(GetNodeText(root, "工况", NumName, "NDISK", string.Empty)); data.PlanesNum = GetNodeText(root, "工况", NumName, "PLANESNUM", string.Empty); data.XYData = new sXY[data.NDISK]; string XYName = string.Empty; for (int j = 0; j < data.NDISK; j++) { XYName = "旋翼" + j.ToString(); data.XYData[j].DISKX = GetNodeText(root, "工况", NumName, XYName, "DISKX"); data.XYData[j].DISKY = GetNodeText(root, "工况", NumName, XYName, "DISKY"); data.XYData[j].DISKZ = GetNodeText(root, "工况", NumName, XYName, "DISKZ"); data.XYData[j].DISKAK = Convert.ToInt32(GetNodeText(root, "工况", NumName, XYName, "DISKAK")); data.XYData[j].RADIUS = GetNodeText(root, "工况", NumName, XYName, "RADIUS"); data.XYData[j].RADIUSC = GetNodeText(root, "工况", NumName, XYName, "RADIUSC"); data.XYData[j].TWSIT = GetNodeText(root, "工况", NumName, XYName, "TWSIT"); data.XYData[j].CHORD = GetNodeText(root, "工况", NumName, XYName, "CHORD"); data.XYData[j].INVERSE = Convert.ToInt32(GetNodeText(root, "工况", NumName, XYName, "INVERSE")); data.XYData[j].FLAP_0 = GetNodeText(root, "工况", NumName, XYName, "FLAP_0"); data.XYData[j].FLAP_C1 = GetNodeText(root, "工况", NumName, XYName, "FLAP_C1"); data.XYData[j].FLAP_S1 = GetNodeText(root, "工况", NumName, XYName, "FLAP_S1"); data.XYData[j].PITCH_0 = GetNodeText(root, "工况", NumName, XYName, "PITCH_0"); data.XYData[j].PITCH_S = GetNodeText(root, "工况", NumName, XYName, "PITCH_S"); data.XYData[j].PITCH_C = GetNodeText(root, "工况", NumName, XYName, "PITCH_C"); data.XYData[j].ALF_TPP = GetNodeText(root, "工况", NumName, XYName, "ALF_TPP"); data.XYData[j].HDISK = GetNodeText(root, "工况", NumName, XYName, "HDISK"); data.XYData[j].N_BLADE = GetNodeText(root, "工况", NumName, XYName, "N_BLADE"); data.XYData[j].OMIGA = GetNodeText(root, "工况", NumName, XYName, "OMIGA"); data.XYData[j].MU = GetNodeText(root, "工况", NumName, XYName, "MU"); data.XYData[j].BLADE = GetNodeText(root, "工况", NumName, XYName, "BLADE"); } #region 进气道 data.inlet.MASSOUT_RATE = GetNodeText(root, "工况", NumName, "MASSOUT_RATE", string.Empty); data.inlet.TEMP_OUT0 = GetNodeText(root, "工况", NumName, "TEMP_OUT0", string.Empty); #endregion AFATreeNode node = null; node = new AFATreeNode(data.Name, TreeNodeType.nodeGKCase); node.Name = data.Name; node.Tag = data; MainForm.GKNode.Nodes.Add(node); } } Common.ITMAX = GetNodeText(root, "求解器设置", "ITMAX", string.Empty, string.Empty); Common.SAVE_STEP = GetNodeText(root, "求解器设置", "SAVE_STEP", string.Empty, string.Empty); Common.CFL = GetNodeText(root, "求解器设置", "CFL", string.Empty, string.Empty); }
private void InitTree() { this.treeView1.Nodes.Clear(); AFATreeNode root = null; AFATreeNode node = null; root = new AFATreeNode("计算数据", TreeNodeType.nodeRoot); this.treeView1.Nodes.Add(root); GKNode = new AFATreeNode("工况设置", TreeNodeType.nodeGK); root.Nodes.Add(GKNode); WGNode = new AFATreeNode("计算网格", TreeNodeType.nodeWG); root.Nodes.Add(WGNode); node = new AFATreeNode("求解设置", TreeNodeType.nodeQJ); root.Nodes.Add(node); this.treeView1.ExpandAll(); int i = 0; foreach (TabPage page in this.tabControl1.TabPages) { if (i++ != 0) { this.tabControl1.TabPages.Remove(page); } } this.tabPage1.Controls.Remove(this.meshDisControl1); this.showGKBtn.Enabled = false; this.meshDisControl1 = new MeshDisLib.MeshDisControl(); this.meshDisControl1.Dock = System.Windows.Forms.DockStyle.Fill; this.meshDisControl1.Location = new System.Drawing.Point(3, 3); this.meshDisControl1.Name = "meshDisControl1"; this.meshDisControl1.Size = new System.Drawing.Size(663, 393); this.meshDisControl1.TabIndex = 0; this.tabPage1.Controls.Add(this.meshDisControl1); this.tabPage1.Location = new System.Drawing.Point(4, 22); this.tabPage1.Name = "tabPage1"; this.tabPage1.Padding = new System.Windows.Forms.Padding(3); this.tabPage1.Size = new System.Drawing.Size(669, 399); this.tabPage1.TabIndex = 0; this.tabPage1.Text = "网格显示"; this.tabPage1.UseVisualStyleBackColor = true; //this.meshDisControl1.clear();//.MeshDis(null); }
public void SetData(ref AFATreeNode selNode) { if (selNode == null) { return; } m_Node = selNode; _Data = (sGK)selNode.Tag; m_oldName = _Data.Name; this.tbName.Text = _Data.Name; if (_Data.MODEL == "1") { this.chkModelXY.Checked = false; this.chkModelJQD.Checked = false; } if (_Data.MODEL == "11") { this.chkModelXY.Checked = true; this.chkModelJQD.Checked = false; } if (_Data.MODEL == "101") { this.chkModelXY.Checked = false; this.chkModelJQD.Checked = true; } if (_Data.MODEL == "111") { this.chkModelXY.Checked = true; this.chkModelJQD.Checked = true; } if (_Data.BLCONT == "1") { this.chkBLCONT.Checked = true; } else { this.chkBLCONT.Checked = false; } this.tbMACH_INF.Text = _Data.MACH_INF; this.tbRE.Text = _Data.RE; this.tbFUX.Text = _Data.F*X; this.tbFUY.Text = _Data.FUY; this.tbFUZ.Text = _Data.FUZ; this.tbPITCH_V.Text = _Data.PITCH_V; this.tbYAW_V.Text = _Data.YAW_V; //this.tbFLOWRATE.Text = _Data.FLOWRATE; this.tbZMU.Text = _Data.ZMU; string strXYName = string.Empty; for (int i = 0; i < _Data.NDISK; i++) { strXYName = "旋翼" + i.ToString(); ListViewItem item=new ListViewItem(); item.Text=strXYName; //node = new TreeNode(strXYName); sXY dataXY = new sXY(); dataXY.ALF_TPP = _Data.XYData[i].ALF_TPP; dataXY.CHORD = _Data.XYData[i].CHORD; dataXY.DISKAK = _Data.XYData[i].DISKAK; dataXY.DISKX = _Data.XYData[i].DISKX; dataXY.DISKY = _Data.XYData[i].DISKY; dataXY.DISKZ = _Data.XYData[i].DISKZ; dataXY.FLAP_0 = _Data.XYData[i].FLAP_0; dataXY.FLAP_C1 = _Data.XYData[i].FLAP_C1; dataXY.FLAP_S1 = _Data.XYData[i].FLAP_S1; dataXY.HDISK = _Data.XYData[i].HDISK; dataXY.INVERSE = _Data.XYData[i].INVERSE; dataXY.MU = _Data.XYData[i].MU; dataXY.N_BLADE = _Data.XYData[i].N_BLADE; dataXY.OMIGA = _Data.XYData[i].OMIGA; dataXY.PITCH_0 = _Data.XYData[i].PITCH_0; dataXY.PITCH_C = _Data.XYData[i].PITCH_C; dataXY.PITCH_S = _Data.XYData[i].PITCH_S; dataXY.RADIUS = _Data.XYData[i].RADIUS; dataXY.RADIUSC = _Data.XYData[i].RADIUSC; dataXY.TWSIT = _Data.XYData[i].TWSIT; dataXY.BLADE = _Data.XYData[i].BLADE; item.Tag = dataXY; //this.treeViewXY.Nodes.Add(node); this.XYlistView.Items.Add(item); if (i == 0) { //默认加载首结点 //this.treeViewXY.SelectedNode = node; item.Selected=true; this.loadYXGridFormNodeTag((sXY)item.Tag); } } #region 进气道 this.MASSOUT_RATE.Text = _Data.inlet.MASSOUT_RATE; this.TEMP_OUT0.Text = _Data.inlet.TEMP_OUT0; #endregion bool flag = true; if (this.XYlistView.Items.Count == 0) { flag = false; } this.btnEditXY.Enabled = flag; this.btnDelXY.Enabled = flag; this.gbYSJ.Enabled = flag; this.groupBox1.Enabled = flag; }