using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; using System.Text; using System.Linq; namespace DPumpHydr.WinFrmUI.Volute { public partial class MainViewPage { //步骤控件 StepTreeDockPanel _stepTreeDockPanel = null; /// /// 初始化步骤列表 /// private void InitialStepNodes() { if (_ctrlHdrBaseInfo == null) { _ctrlHdrBaseInfo = new ctrlHdrBaseInfo(); _ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo"; _ctrlHdrBaseInfo.Dock = DockStyle.Right; _ctrlHdrBaseInfo.InitialParas(); } this.DockStepParaCtrl(_ctrlHdrBaseInfo); // this._stepTreeDockPanel.InitialStepNodes(); } /// /// 下一步核心 /// /// private bool GoNextStepCore() { var currentStepID = this._stepTreeDockPanel.CurrentStepID; if (SaveStepParas(currentStepID) == false) { return false; } // var next_step_id = this._stepTreeDockPanel.NextStepID; if (currentStepID == this._stepTreeDockPanel.Step_ID_Section18_Full) { next_step_id = this._stepTreeDockPanel.Step_ID_Outflow_Type; } if (next_step_id > 0) { if(currentStepID == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info) { #region MyRegion ViewModel.HdrBaseInfo hdrBaseInfo = null; ViewModel.GeomBaseInfo geomBaseInfo = null; string error_info = _ctrlHdrBaseInfo.GetBindingData(ref hdrBaseInfo, ref geomBaseInfo); if (error_info != null) { MessageBox.Show(error_info); return false; } bool isClearAll = false; if (_geomBaseInfo != null) { if (Math.Abs(geomBaseInfo.B3 - _geomBaseInfo.B3) > 1) { isClearAll = true; } if (Math.Abs(geomBaseInfo.D3 - _geomBaseInfo.D3) > 1) { isClearAll = true; } } if (isClearAll) { this._occDesign2dCtrl.ClearAll(); this._occDesign3dCtrl.ClearAll(); } #endregion } if (currentStepID == this._stepTreeDockPanel.Step_ID_Outflow_Type) { var outflowType = _ctrlSetOutflowType.GetBindingData(); this._occDesign3dCtrl.SetOutflowStyle(outflowType); bool isNeedRebuild = this._occDesign2dCtrl.SetOutflowStyle(outflowType); if (isNeedRebuild) { _occDesign2dCtrl.ClearAll(); _occDesign3dCtrl.ClearAll(); this.RefreshSectShapeWhole18(this._sectionBundleInfo); } } this.SetParasCtrl(next_step_id, DPumpHydr.ViewModel.eWizardStepDiretion.前进); // this._stepTreeDockPanel.SetFocusedNode(next_step_id); } return true; } /// /// /// /// /// protected bool SaveStepParas(long step_id) { #region 获取当前页面参数 //第一步 if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info) { ViewModel.HdrBaseInfo hdrBaseInfo = null; ViewModel.GeomBaseInfo geomBaseInfo = null; string error_info = _ctrlHdrBaseInfo.GetBindingData(ref hdrBaseInfo, ref geomBaseInfo); if (error_info != null) { MessageBox.Show(error_info); return false; } if (geomBaseInfo == null || hdrBaseInfo == null) return false; _ctrlHdrBaseInfo.SaveHistoryParas(hdrBaseInfo, geomBaseInfo); _hdrBaseInfo = hdrBaseInfo; _hdrBaseInfo.CalcNs(); _geomBaseInfo = geomBaseInfo; if (_sectionBundleInfo != null) {//时时保持同步 _sectionBundleInfo.BaseWidth = _geomBaseInfo.B3; _sectionBundleInfo.BaseCircleRadius = _geomBaseInfo.D3 / 2; } return true; } //第二步 if (step_id == 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; return true; } //1-8断面进行下一步点击 if (step_id == 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 (currentStepID == this._stepTreeDockPanel.Step_ID_Outflow_Type) { prev_step_id = this._stepTreeDockPanel.Step_ID_Section18_Full; } if (prev_step_id == 0) return false; this.SetParasCtrl(prev_step_id, DPumpHydr.ViewModel.eWizardStepDiretion.后退); // this._stepTreeDockPanel.SetFocusedNode(prev_step_id); return true; } /// /// 生成控件的参数控件 /// /// private void SetParasCtrl(long step_id, DPumpHydr.ViewModel.eWizardStepDiretion step_direction) { Rbtn数据导出STP.Visible = false; Rbtn数据导出IGS.Visible = false; #region 第1步 if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info) { if (_ctrlHdrBaseInfo == null) { _ctrlHdrBaseInfo = new ctrlHdrBaseInfo(); _ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo"; } DockStepParaCtrl(_ctrlHdrBaseInfo); this._sectAreaDockPanel.Visible = false; return; } #endregion #region 第2步 断面总览 if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full) { if (_hdrBaseInfo == null || _geomBaseInfo == null) return; if (_ctrlSectionBundleInfo == null) { _ctrlSectionBundleInfo = new ctrlSectionBundleInfo(); _ctrlSectionBundleInfo.Name = "ctrlSectionBaseInfo"; _ctrlSectionBundleInfo.OnRefreshShape += RefreshSectShapeWhole18; _ctrlSectionBundleInfo.OnHightLightSectCurve += HightLightSectCurve; } _ctrlSectionBundleInfo.ShowPage(_hdrBaseInfo, _geomBaseInfo, step_direction); DockStepParaCtrl(_ctrlSectionBundleInfo); this._occDesign2dCtrl.SetAllSectionCurveVisible(true); this._occDesign3dCtrl.SetAllSectionCurveVisible(true); this._occDesign3dCtrl.SetWaterBodyVisible(false); this._occDesign3dCtrl.SetThicknessBodyVisible(false); this._sectAreaDockPanel.RefreshControl(); this._sectAreaDockPanel.Visible = true; return; } #endregion #region 第3步 1-8断面 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 += RefreshSectShapeSingle18; } DockStepParaCtrl(_ctrlSectionShapeInfo18); var sect_index = 9 + this._stepTreeDockPanel.Step_ID_Section18_Grp - step_id; var shape_info = _sectionBundleInfo.ToSectionShapePara((int)sect_index); RefreshSectShapeSingle18(shape_info); _ctrlSectionShapeInfo18.SetBindingData(shape_info); this._sectAreaDockPanel.RefreshControl(); this._sectAreaDockPanel.Visible = true; this._occDesign2dCtrl.SetAllSectionCurveVisible(true); this._occDesign3dCtrl.SetAllSectionCurveVisible(true); return; } #endregion #region 出水面类型选择 if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Type) { if (_sectionBundleInfo == null) return; if (_ctrlSetOutflowType == null) { _ctrlSetOutflowType = new ctrlSetOutflowType(); _ctrlSetOutflowType.Name = "ctrlSetOutflowType"; } _ctrlSetOutflowType.ShowPage(step_direction); this._sectAreaDockPanel.Visible = true; this._sectAreaDockPanel.RefreshControl(); DockStepParaCtrl(_ctrlSetOutflowType); return; } #endregion #region 出水面参数 if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Paras) { if (_sectionBundleInfo == null) return; this._occDesign2dCtrl.SetAllSectionCurveVisible(false); this._occDesign3dCtrl.SetAllSectionCurveVisible(false); _outflowType = _ctrlSetOutflowType.GetBindingData(); if (_ctrlSetOutflowParas == null) { _ctrlSetOutflowParas = new ctrlSetOutflowParas(); _ctrlSetOutflowParas.Name = "ctrlSetOutflowStyle"; _ctrlSetOutflowParas.OnRefreshShape2D += RefreshWaterBody2D; _ctrlSetOutflowParas.OnRefreshShape3D += RefreshWaterBody3D; _ctrlSetOutflowParas.OnMoveSectPosi += (sect_index, posi) => { if (sect_index == 9) { _sect9Posi = posi; var SectArea9 = this._occDesign3dCtrl.GetSectArea9(_sect9Posi); this._sectAreaDockPanel.SetArea9(SectArea9); } if (sect_index == 10) { _sect10Posi = posi; var SectArea10 = this._occDesign3dCtrl.GetSectArea10(_sect10Posi); this._sectAreaDockPanel.SetArea10(SectArea10); } }; _ctrlSetOutflowParas.InitialParas(_outflowType, _hdrBaseInfo, _geomBaseInfo, _sectionBundleInfo); _ctrlSetOutflowParas.SetSect9Posi(_sect9Posi); _ctrlSetOutflowParas.SetSect10Posi(_sect10Posi); } else { this._occDesign3dCtrl.SetOutflowStyle(_outflowType); if (this._occDesign2dCtrl.SetOutflowStyle(_outflowType)) { } if (_outflowType == ViewModel.eOutflowStyle.侧面出口_直线连接) { if(_ctrlSetOutflowParas.CurrentOutflowStyle != ViewModel.eOutflowStyle.侧面出口_直线连接) { _occDesign2dCtrl.ClearAll(); _occDesign3dCtrl.ClearAll(); this.RefreshSectShapeWhole18(this._sectionBundleInfo); } } else { if (_ctrlSetOutflowParas.CurrentOutflowStyle == ViewModel.eOutflowStyle.侧面出口_直线连接) { _occDesign2dCtrl.ClearAll(); _occDesign3dCtrl.ClearAll(); this.RefreshSectShapeWhole18(this._sectionBundleInfo); } } _ctrlSetOutflowParas.SetBindingData(_outflowType, _hdrBaseInfo, _geomBaseInfo, _sectionBundleInfo); } _ctrlSetOutflowParas.ShowPage(step_direction); this._sectAreaDockPanel.RefreshControl(); this._sectAreaDockPanel.Visible = true; DockStepParaCtrl(_ctrlSetOutflowParas); string error = ""; _outflowParas = _ctrlSetOutflowParas.GetBindingData(out error); this._occDesign3dCtrl.setWaterBodyOpacity( DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.R, DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.G, DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.B, 256); this._occDesign3dCtrl.SetThicknessBodyVisible(false ); return; } #endregion #region 加厚 if (step_id == this._stepTreeDockPanel.Step_ID_jiahout) { if (_sectionBundleInfo == null) return; Rbtn数据导出STP.Visible = true; Rbtn数据导出IGS.Visible = true; this._occDesign2dCtrl.SetAllSectionCurveVisible(false); this._occDesign3dCtrl.SetAllSectionCurveVisible(false); if (_ctrlThicknessParas == null) { _ctrlThicknessParas = new ctrlThicknessParas(); _ctrlThicknessParas.Name = "ctrlThicknessParas"; _ctrlThicknessParas.OnRefreshShape += (houdu) => { this._bodyThickness = houdu; this._occDesign3dCtrl.BuildThicknessBody(houdu); }; this._bodyThickness = _ctrlThicknessParas.InitialParas(_hdrBaseInfo, _geomBaseInfo, _outflowParas); this._occDesign3dCtrl.BuildThicknessBody(_bodyThickness); } _ctrlThicknessParas.ShowPage(); this._occDesign3dCtrl.setWaterBodyOpacity( DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.R, DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.G, DPumpHydr.WinFrmUI.Volute.GlobalParas.WaterBodyColor.B, 60); this._occDesign3dCtrl.SetThicknessBodyVisible(true); DockStepParaCtrl(_ctrlThicknessParas); return; } #endregion } /// /// 获取当前步骤的参数控制控件 /// /// 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_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 DockStepParaCtrl(ParasInfoBaseCtrl ctrl) { this._parasDockPanel.Controls.Clear(); ctrl.Dock = DockStyle.Fill; this._parasDockPanel.Controls.Add(ctrl); } /// /// 下一步 /// /// public bool GoNextStep() { return GoNextStepCore(); } /// /// 上一步 /// /// public bool GoPrevStep() { return GoPrevStepCore(); } } }