/// <summary>
        /// [計算開始]ボタン押下イベントハンドラ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCalc_Click(object sender, EventArgs e)
        {
            if (SolverThread != null && SolverThread.IsAlive)
            {
                if (!Solver.IsCalcAborted)
                {
                    if (MessageBox.Show("計算をキャンセルしますか", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                    {
                        // 2重チェック
                        if (SolverThread != null && SolverThread.IsAlive)
                        {
                            new Thread(new ThreadStart(delegate()
                                {
                                    Solver.IsCalcAborted = true;
                                    SolverThread.Join();
                                    SolverThread = null;
                                })).Start();
                        }
                    }
                }
                return;
            }

            if (CadLgc.IsBackupFile)
            {
                MessageBox.Show("このファイルはバックアップファイルです。計算できません" + System.Environment.NewLine + "名前を付けて保存で別名の新規ファイルを作成してください");
                return;
            }
            if (CadLgc.IsEditing)
            {
                MessageBox.Show("編集中は計算できません");
                return;
            }

            // 計算範囲ダイアログを表示する
            CalcSettingFrm calcSettingFrm = new CalcSettingFrm(
                Solver.FirstNormalizedFreq, Solver.LastNormalizedFreq, Solver.CalcFreqCnt,
                Solver.ElemShapeDvToBeSet, Solver.ElemOrderToBeSet, Solver.LsEqnSolverDv);
            DialogResult result = calcSettingFrm.ShowDialog();
            if (result != DialogResult.OK)
            {
                return;
            }
            // 要素形状、次数の設定をSolverに格納する
            Solver.ElemShapeDvToBeSet = calcSettingFrm.ElemShapeDv;
            Solver.ElemOrderToBeSet = calcSettingFrm.ElemOrder;

            // Cadデータ保存&Fem入力データ作成保存
            doSave(true);
            if (FemInputDatFilePath == "")
            {
                return;
            }

            // 解析機へ入力データを読み込む
            Solver.Load(FemInputDatFilePath);
            // 解析機の情報が確定したので、計算範囲画面で設定した計算範囲をファイルへ書き込み
            Solver.UpdateAndSaveToInputFile(FemInputDatFilePath,
                calcSettingFrm.NormalizedFreq1, calcSettingFrm.NormalizedFreq2, calcSettingFrm.CalcFreqCnt,
                calcSettingFrm.LsEqnSolverDv);

            // 計算処理
            doCalc();
        }
예제 #2
0
        /// <summary>
        /// [計算開始]ボタン押下イベントハンドラ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCalc_Click(object sender, EventArgs e)
        {
            if (SolverThread != null && SolverThread.IsAlive)
            {
                if (!Solver.IsCalcAborted)
                {
                    if (MessageBox.Show("計算をキャンセルしますか", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                    {
                        // 2重チェック
                        if (SolverThread != null && SolverThread.IsAlive)
                        {
                            new Thread(new ThreadStart(delegate()
                                {
                                    Solver.IsCalcAborted = true;
                                    SolverThread.Join();
                                    SolverThread = null;
                                })).Start();
                        }
                    }
                }
                return;
            }

            if (CadLgc.IsBackupFile)
            {
                MessageBox.Show("このファイルはバックアップファイルです。計算できません" + System.Environment.NewLine + "名前を付けて保存で別名の新規ファイルを作成してください");
                return;
            }
            if (CadLgc.IsEditing)
            {
                MessageBox.Show("編集中は計算できません");
                return;
            }

            // 自動計算モードを解除する
            chkboxAutoCalc.CheckedChanged -= chkboxAutoCalc_CheckedChanged;
            chkboxAutoCalc.Checked = false;
            IsAutoCalc = false;
            PostPro.IsAutoCalc = IsAutoCalc;
            chkboxAutoCalc.CheckedChanged += chkboxAutoCalc_CheckedChanged;

            // 計算範囲ダイアログを表示する
            CalcSettingFrm calcSettingFrm = new CalcSettingFrm(
                Solver.FirstNormalizedFreq, Solver.LastNormalizedFreq, Solver.CalcFreqCnt,
                Solver.WGStructureDv,
                Solver.WaveModeDv,
                Solver.ElemShapeDvToBeSet, Solver.ElemOrderToBeSet,
                Solver.LsEqnSolverDv,
                Solver.WaveguideWidthForEPlane);
            DialogResult result = calcSettingFrm.ShowDialog();
            if (result != DialogResult.OK)
            {
                return;
            }
            // 要素形状、次数の設定をSolverに格納する
            Solver.ElemShapeDvToBeSet = calcSettingFrm.ElemShapeDv;
            Solver.ElemOrderToBeSet = calcSettingFrm.ElemOrder;

            // ソルバーに計算範囲画面で設定した情報をセットする
            Solver.SetNormalizedFreqRange(calcSettingFrm.NormalizedFreq1, calcSettingFrm.NormalizedFreq2, calcSettingFrm.CalcFreqCnt);
            Solver.WGStructureDv = calcSettingFrm.WGStructureDv;
            Solver.WaveModeDv = calcSettingFrm.WaveModeDv;
            Solver.LsEqnSolverDv = calcSettingFrm.LsEqnSolverDv;
            Solver.WaveguideWidthForEPlane = calcSettingFrm.WaveguideWidthForEPlane;

            // Cadデータ保存&Fem入力データ作成保存
            doSave(true);
            if (FemInputDatFilePath == "")
            {
                return;
            }

            // 解析機へ入力データを読み込む
            Solver.Load(FemInputDatFilePath);

            // 計算処理
            doCalc();
        }