using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; using System.Text; using System.Linq; using DPumpHydr.WinFrmUI.Volute.ViewModel; namespace DPumpHydr.WinFrmUI.Volute { public partial class MainViewPage { //步骤控件 StepTreeDockPanel _stepTreeDockPanel = null; //参数控件 ctrlHdrBaseInfo _ctrlHdrBaseInfo = null; ctrlGeomBaseInfo _ctrlGeomBaseInfo = null; ctrlSectionBundleInfo _ctrlSectionBundleInfo = null; ctrlSectionShapeInfo18 _ctrlSectionShapeInfo18 = null; ctrlSetOutflowStyle _ctrlSetOutflowStyle = null; ctrlSetOutflowType _ctrlSetOutflowType = null; //参数 ViewModel.HdrBaseInfo _hdrBaseInfo = null; ViewModel.GeomBaseInfo _geomBaseInfo = null; ViewModel.SectionBundleInfo _sectionBundleInfo = null; /// /// 下一步 /// /// public bool GoNextStep() { return GoNextStepCore(); } /// /// 上一步 /// /// public bool GoPrevStep() { return GoPrevStepCore(); } /// /// 下一步核心 /// /// private bool GoNextStepCore() { var currentStepID = this._stepTreeDockPanel.CurrentStepID; if (SaveStepParas(currentStepID) == false) { return false; } // var next_step_id = this._stepTreeDockPanel.NextStepID; if (next_step_id > 0) { this.SetParasCtrl(next_step_id); // this._stepTreeDockPanel.SetFocusedNode(next_step_id); } return true; } /// /// /// /// /// protected bool SaveStepParas(long stepID) { #region 获取当前页面参数 //第一步 if (stepID == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info) { string error_info; var hdrBaseInfo = _ctrlHdrBaseInfo.GetBindingData(out error_info); if (hdrBaseInfo == null) { MessageBox.Show(error_info); return false; } hdrBaseInfo.CalcNs(); _hdrBaseInfo = hdrBaseInfo; if (_geomBaseInfo == null) { _geomBaseInfo = new ViewModel.GeomBaseInfo(); } _geomBaseInfo.Calc(_hdrBaseInfo); return true; } //第二步 if (stepID == this._stepTreeDockPanel.Step_ID_Geom_Base_Info) { if (_ctrlGeomBaseInfo == null) return false; string error_info; var geomBaseInfo = _ctrlGeomBaseInfo.GetBindingData(out error_info); if (geomBaseInfo == null) { MessageBox.Show(error_info); return false; } _geomBaseInfo = geomBaseInfo; if (_sectionBundleInfo == null) { _sectionBundleInfo = new ViewModel.SectionBundleInfo(); } var v3 = ViewModel.SectionBundleInfo.CalcV3(_hdrBaseInfo, _geomBaseInfo); _sectionBundleInfo.ResetAllParas(_hdrBaseInfo, _geomBaseInfo, v3); return true; } //第三步 if (stepID == this._stepTreeDockPanel.Step_ID_Section18_Full) { string error_info; var sectionBaseInfo = _ctrlSectionBundleInfo.GetBindingData(out error_info); if (sectionBaseInfo == null) { MessageBox.Show(error_info); return false; } _sectionBundleInfo = sectionBaseInfo; //_sectionBundleInfo.ResetAllParas(_hdrBaseInfo, _geomBaseInfo); //ViewModel.SectionShapePara _sectionShapePara = null; //if (_sectionShapePara == null) //{ // _sectionShapePara = new ViewModel.SectionShapePara(); //} //_sectionShapePara.Initialparameters(_currentSectIndex, _sectionBaseInfo); return true; } //1-8断面进行下一步点击 if (stepID == this._stepTreeDockPanel.Step_ID_Section18_Grp) { //string error_info; //var sectionShapeInfo18 = _ctrlSectionShapeInfo18.GetBindingData(out error_info); //if (sectionShapeInfo18 == null) //{ // MessageBox.Show(error_info); // return false; //} //if (!sectionShapeInfo18.Verify(out error_info)) //{ // MessageBox.Show(error_info); // return false; //} //_sectionShapePara = sectionShapeInfo18; //_sectionShapePara.CalcHeightByArea(_sectionBaseInfo.ShapeType); //_sectionBaseInfo.EditSingleShape(_sectionShapePara, _currentSectIndex); //if (_currentSectIndex != 9) //{ // _currentSectIndex--; //} //_sectionShapePara.Initialparameters(_currentSectIndex, _sectionBaseInfo); return true; } #endregion return true; } /// /// 上一步核心 /// /// private bool GoPrevStepCore() { var currentStepID = this._stepTreeDockPanel.CurrentStepID; ParasInfoBaseCtrl paras_ctrl = GetParasCtrl(currentStepID); if(paras_ctrl != null && paras_ctrl.IsChangesParas()) { DialogResult result = MessageBox.Show("已经修改过的数据需要保存吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (result == DialogResult.OK) { if (SaveStepParas(currentStepID) == false ) { return false; } } } var prev_step_id = this._stepTreeDockPanel.PrevStepID; if (prev_step_id == 0) return false; this.SetParasCtrl(prev_step_id); // this._stepTreeDockPanel.SetFocusedNode(prev_step_id); return true; } /// /// 生成控件的参数控件 /// /// private void SetParasCtrl(long step_id) { //第一步 if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info) { if (_ctrlHdrBaseInfo == null) { _ctrlHdrBaseInfo = new ctrlHdrBaseInfo(); _ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo"; } _ctrlHdrBaseInfo.SetBindingData(_hdrBaseInfo); AddStepParaCtrl(_ctrlHdrBaseInfo); } //第二步 if (step_id == this._stepTreeDockPanel.Step_ID_Geom_Base_Info) { if (_ctrlGeomBaseInfo == null) { _ctrlGeomBaseInfo = new ctrlGeomBaseInfo(); _ctrlGeomBaseInfo.Name = "ctrlGeomBaseInfo"; } _ctrlGeomBaseInfo.SetBindingData(_geomBaseInfo); AddStepParaCtrl(_ctrlGeomBaseInfo); } //第三步 if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full) { if (_ctrlSectionBundleInfo == null) { _ctrlSectionBundleInfo = new ctrlSectionBundleInfo(); _ctrlSectionBundleInfo.Name = "ctrlSectionBaseInfo"; _ctrlSectionBundleInfo.OnRefreshShape += RefreshSectShape18; } AddStepParaCtrl(_ctrlSectionBundleInfo); _ctrlSectionBundleInfo.InitialParas(_hdrBaseInfo, _geomBaseInfo); _ctrlSectionBundleInfo.SetBindingData(_sectionBundleInfo); } //第四步 if (step_id > this._stepTreeDockPanel.Step_ID_Section18_Grp && step_id <= this._stepTreeDockPanel.Step_ID_Section18_Grp + 8) { if (_sectionBundleInfo == null) return; if (_ctrlSectionShapeInfo18 == null) { _ctrlSectionShapeInfo18 = new ctrlSectionShapeInfo18(); _ctrlSectionShapeInfo18.Name = "ctrlSectionShapeInfo18"; //_ctrlSectionShapeInfo18.OnRefreshShape += RefreshSectShape18; } AddStepParaCtrl(_ctrlSectionShapeInfo18); var sect_index = 9 + this._stepTreeDockPanel.Step_ID_Section18_Grp- step_id ; var shape_info = _sectionBundleInfo.ToSectionShapePara((int)sect_index); _ctrlSectionShapeInfo18.SetBindingData(shape_info); } if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Style) { if (_ctrlSetOutflowStyle == null) { _ctrlSetOutflowStyle = new ctrlSetOutflowStyle(); _ctrlSetOutflowStyle.Name = "ctrlSetOutflowStyle"; } AddStepParaCtrl(_ctrlSetOutflowStyle); } if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Type) { if (_ctrlSetOutflowType == null) { _ctrlSetOutflowType = new ctrlSetOutflowType(); _ctrlSetOutflowType.Name = "ctrlSetOutflowDim"; } AddStepParaCtrl(_ctrlSetOutflowType); } } /// /// 获取当前步骤的参数控制控件 /// /// private DPumpHydr.WinFrmUI.Volute.ParasInfoBaseCtrl GetParasCtrl(long step_id) { if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info) { return _ctrlHdrBaseInfo; } //第二步 if (step_id == this._stepTreeDockPanel.Step_ID_Geom_Base_Info) { return _ctrlGeomBaseInfo; } //第三步 if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full) { return _ctrlSectionBundleInfo; } //1-8断面进行下一步点击 if (step_id >= this._stepTreeDockPanel.Step_ID_Section18_Grp &&  step_id>= this._stepTreeDockPanel.Step_ID_Section18_Grp+8) { return _ctrlSectionShapeInfo18; } return null; } /// /// /// /// private void AddStepParaCtrl(ParasInfoBaseCtrl ctrl) { this._parasDockPanel.Controls.Clear(); ctrl.Dock = DockStyle.Fill; this._parasDockPanel.Controls.Add(ctrl); } /// /// 蜗壳参数导出 /// public void VoluteDeriveArgument() { //if (_sectionBaseInfo == null) //{ // MessageBox.Show("您还没有完成定义参数!请定义完成后在进行导出!(至少完成第三步)"); // return; //} //if (_currentStepID <= 21) //{ // DialogResult result = MessageBox.Show("确定不进行后续断面参数的调整,使用初始计算后的参数吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); // if (result == DialogResult.Cancel) // { // return; // } //} //ViewModel.SectionShapePara VoluteArgument = new ViewModel.SectionShapePara(); //string json = VoluteArgument.DeriveArgument(_sectionBaseInfo); //string filePath = Path.Combine(@"C:\Users\THL\Desktop", $"蜗壳参数.json"); //File.WriteAllText(filePath, json); } #region 初始化步骤列表 /// /// /// private void InitialStepNodes() { ViewModel.HdrBaseInfo hdrBaseInfo = new ViewModel.HdrBaseInfo(); hdrBaseInfo.Q = 200; hdrBaseInfo.H = 50; hdrBaseInfo.n = 2900; hdrBaseInfo.D2 = 220; hdrBaseInfo.B2 = 20; if (_ctrlHdrBaseInfo == null) { _ctrlHdrBaseInfo = new ctrlHdrBaseInfo(); _ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo"; _ctrlHdrBaseInfo.Dock = DockStyle.Right; _ctrlHdrBaseInfo.SetBindingData(hdrBaseInfo); } this.AddStepParaCtrl(_ctrlHdrBaseInfo); // this._stepTreeDockPanel.InitialStepNodes(); } #endregion } }