Exemplo n.º 1
0
Arquivo: GKDlg.cs Projeto: algz/AFA
        /// <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;
        }
Exemplo n.º 2
0
Arquivo: MainForm.cs Projeto: algz/AFA
        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);
                    //}
                }

            }
        }
Exemplo n.º 3
0
Arquivo: MainForm.cs Projeto: algz/AFA
        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;
                }
            }
        }
Exemplo n.º 4
0
Arquivo: MainForm.cs Projeto: algz/AFA
        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();
        }
Exemplo n.º 5
0
Arquivo: MainForm.cs Projeto: algz/AFA
        /// <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);
                    }
                }

            }
        }
Exemplo n.º 6
0
Arquivo: MainForm.cs Projeto: algz/AFA
        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);
        }
Exemplo n.º 7
0
Arquivo: MainForm.cs Projeto: algz/AFA
        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);
        }
Exemplo n.º 8
0
Arquivo: GKDlg.cs Projeto: algz/AFA
        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;
        }