private void buttonSolve_Click(object sender, EventArgs e) { StringBuilder errorMessage = new StringBuilder(); // 对模型进行检查,看是否可以进行计算 if (Model.Validate(ref errorMessage)) { _Solver = new AnsysSolver( workingDir: WorkingDir, solverGui: Options.SolverGUI ); // 检查计算环境,文件配置 if (_Solver.SetEnvironment(Model, ref errorMessage)) { // 求解计算 _bcParameters = new BgwParameters() { Solver = _Solver, ErrorMessage = errorMessage.ToString(), }; // progressBar1.Visible = true; progressBar1.Style = ProgressBarStyle.Marquee; if (_bgw_Solver.IsBusy != true) { // OnSdCalculationStart(); // Start the asynchronous operation. _bgw_Solver.RunWorkerAsync(argument: _bcParameters); } } } }
/// <summary> 窗口关闭时将窗口所对应的模型数据也关闭 </summary> private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { Model = null; // if (_Solver != null) { _Solver.Dispose(); _Solver = null; } // _PostProcessor = null; }
/// <summary> 计算完成,开始后处理 </summary> private void _backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { OnSdCalculationFinished(); AnsysSolver solver = _bcParameters.Solver; // if (e.Cancelled) // 判断是否是手动退出线程 { // 说明 // solver.State = SolverState.FailedInCs; } // 后处理 StringBuilder sb = new StringBuilder(); _PostProcessor = new PostProcessor(Model, solver); if (_PostProcessor.CheckFinishState(errorMessage: ref sb)) { SolverState ss = _PostProcessor.CheckOutputFiles(errorMessage: ref sb); if (ss == SolverState.Succeeded) { if (Options.DirectlyReport) { ReadAndShowResults(); } else { var res = MessageBox.Show(@"计算结束且成功,是否直接生成报告?", @"Congratulations", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); if (res == DialogResult.OK) { ReadAndShowResults(); } } } else if (ss == SolverState.FailedWithError) { var res = MessageBox.Show("Ansys 计算结束!\r\n" + sb.ToString(), @"提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { var res = MessageBox.Show("Ansys 计算过程未正常结束!\r\n" + sb.ToString(), @"提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void tsm_TestShowResult_Click(object sender, EventArgs e) { var solver = new AnsysSolver(WorkingDir, Options.SolverGUI); var pp = new PostProcessor(Model, solver); try { if (pp.Results == null) { pp.ReadResultFile(resultFilePath: WorkingDir.F_AnsysResult); } pp.ShowResultsList(); } catch (Exception ex) { // ignored var res = MessageBox.Show("后处理过程出现异常!\r\n", @"提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public PostProcessor(ModelBase model, AnsysSolver solver) : this() { Model = model; Solver = solver; _workingDir = solver.WorkingDir; }