tangxu
2025-02-26 0f0af979b3108483a7f5206e6967a74a5f10918f
WinFrmUI/DPumpHydr.WinFrmUI.Volute/MainViewPage_StepInfo.cs
@@ -11,24 +11,6 @@
    {
        //步骤控件
        StepTreeDockPanel _stepTreeDockPanel = null;
        /// <summary>
        /// 初始化步骤列表
        /// </summary>
        private void InitialStepNodes()
        {
            if (_ctrlHdrBaseInfo == null)
            {
                _ctrlHdrBaseInfo = new ctrlHdrBaseInfo();
                _ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo";
                _ctrlHdrBaseInfo.Dock = DockStyle.Right;
                _ctrlHdrBaseInfo.InitialParas();
            }
            this.DockStepParaCtrl(_ctrlHdrBaseInfo);
            //
            this._stepTreeDockPanel.InitialStepNodes();
        }
        /// <summary>
@@ -37,154 +19,17 @@
        /// <returns></returns>
        private bool GoNextStepCore()
        {
            var currentStepID = this._stepTreeDockPanel.CurrentStepID;
            if (SaveStepParas(currentStepID) == false)
            {
                return false;
            }
            var current_step_id = this._stepTreeDockPanel.CurrentStepID;
            //
            var next_step_id = this._stepTreeDockPanel.NextStepID;
            if (currentStepID == this._stepTreeDockPanel.Step_ID_Section18_Full)
            if (current_step_id == 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);
                next_step_id = this._stepTreeDockPanel.Step_ID_Outflow_Paras;
            }
            return true;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="step_id"></param>
        /// <returns></returns>
        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
            ChangeStep(current_step_id, next_step_id);
            return true;
        }
@@ -195,22 +40,10 @@
        /// <returns></returns>
        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 current_step_id = this._stepTreeDockPanel.CurrentStepID;
            var prev_step_id = this._stepTreeDockPanel.PrevStepID;
            if (currentStepID == this._stepTreeDockPanel.Step_ID_Outflow_Type)
            if (current_step_id == this._stepTreeDockPanel.Step_ID_Outflow_Paras)
            {
                prev_step_id = this._stepTreeDockPanel.Step_ID_Section18_Full;
            }
@@ -219,76 +52,154 @@
                return false;
            this.SetParasCtrl(prev_step_id, DPumpHydr.ViewModel.eWizardStepDiretion.后退);
            //
            this._stepTreeDockPanel.SetFocusedNode(prev_step_id);
            this.ChangeStep(current_step_id, prev_step_id);
            return true;
        }
        /// <summary>
        /// 生成控件的参数控件
        /// 切换步骤
        /// </summary>
        /// <param name="step_id"></param>
        private void SetParasCtrl(long step_id, DPumpHydr.ViewModel.eWizardStepDiretion step_direction)
        /// <param name="current_step_id"></param>
        /// <param name="next_step_id"></param>
        private bool ChangeStep(long current_step_id, long next_step_id)
        {
            RbtnChk截面18.Visible = false;
            if (current_step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
            {
                if (!SaveParaStep1())
                    return false;
                //ParasInfoBaseCtrl paras_ctrl = GetParasCtrl(current_step_id);
                //if (paras_ctrl != null && paras_ctrl.IsChangesParas())
                //{
                //    DialogResult result = MessageBox.Show("已经修改过的数据需要保存吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                //    if (result == DialogResult.OK)
                //    {
                //        if (SaveStepParas(current_step_id) == false)
                //        {
                //            return false;
                //        }
                //    }
                //}
            }
            else if (current_step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
            {
                if (!SaveParaStep2())
                    return false;
            }
            else if (current_step_id == this._stepTreeDockPanel.Step_ID_Outflow_Paras)
            {
                if (!SaveParaStep3())
                    return false;
            }
            else if (current_step_id == this._stepTreeDockPanel.Step_ID_Thickness)
            {
                if (!SaveParaStep4())
                    return false;
                if (next_step_id < current_step_id)
                {//删除加厚体
                    this._occDesign3dCtrl.RemoveThicknessBody( );
                }
            }
            this.BuildParasCtrl(current_step_id, next_step_id);
            //
            this._stepTreeDockPanel.SetFocusedNode(next_step_id);
            Rbtn数据导出STP.Visible = false;
            Rbtn数据导出IGS.Visible = false;
            #region  第1步
            if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
            if (next_step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
            {
                if (_ctrlHdrBaseInfo == null)
                {
                    _ctrlHdrBaseInfo = new ctrlHdrBaseInfo();
                    _ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo";
                }
                DockStepParaCtrl(_ctrlHdrBaseInfo);
                this._sectAreaDockPanel.Visible = false;
                this.RBtn后退.Enabled = false;
                this.Rbtn前进.Enabled = true;
                this.Rbtn上一步.Enabled = false;
                this.Rbtn下一步.Enabled = true;
                this.Rbtn完成.Enabled = false;
                this._occDesign2dCtrl.HideAll();
                this._occDesign3dCtrl.HideAll();
            }
            else if (next_step_id == this._stepTreeDockPanel.Step_ID_Outflow_Paras)
            {
                RbtnChk截面18.Visible = true;
                this.RBtn后退.Enabled = true;
                this.Rbtn前进.Enabled = true;
                this.Rbtn上一步.Enabled = true;
                this.Rbtn下一步.Enabled = true;
                this.Rbtn完成.Enabled = false;
            }
            else if (next_step_id == this._stepTreeDockPanel.Step_ID_Thickness)
            {
                this.RBtn后退.Enabled = true;
                this.Rbtn前进.Enabled = false;
                this.Rbtn上一步.Enabled = true;
                this.Rbtn下一步.Enabled = false;
                this.Rbtn完成.Enabled = true;
                this.Rbtn数据导出STP.Visible = true;
                this.Rbtn数据导出IGS.Visible = true;
            }
            else
            {
                this.RBtn后退.Enabled = true;
                this.Rbtn前进.Enabled = true;
                this.Rbtn上一步.Enabled = true;
                this.Rbtn下一步.Enabled = true;
                this.Rbtn完成.Enabled = false;
            }
            return true;
        }
        /// <summary>
        /// 设置参数控件
        /// </summary>
        /// <param name="next_step_id"></param>
        private void BuildParasCtrl(long current_step_id, long next_step_id)
        {
            #region 第1步
            if (next_step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
            {
                EnterStep1(current_step_id);
                return;
            }
            #endregion
            #region  第2步 断面总览
            if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
            #region  第2步
            if (next_step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
            {
                if (_hdrBaseInfo == null || _geomBaseInfo == null)
                    return;
                EnterStep2(current_step_id);
                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 (next_step_id > this._stepTreeDockPanel.Step_ID_Section18_Grp &&
                next_step_id <= this._stepTreeDockPanel.Step_ID_Section18_Grp + 8)
            {
                if (_sectionBundleInfo == null)
                    return;
@@ -299,7 +210,7 @@
                    _ctrlSectionShapeInfo18.OnRefreshShape += RefreshSectShapeSingle18;
                }
                DockStepParaCtrl(_ctrlSectionShapeInfo18);
                var sect_index = 9 + this._stepTreeDockPanel.Step_ID_Section18_Grp - step_id;
                var sect_index = 9 + this._stepTreeDockPanel.Step_ID_Section18_Grp - next_step_id;
                var shape_info = _sectionBundleInfo.ToSectionShapePara((int)sect_index);
                RefreshSectShapeSingle18(shape_info);
                _ctrlSectionShapeInfo18.SetBindingData(shape_info);
@@ -314,154 +225,26 @@
            #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 (next_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 );
                EnterStep3(current_step_id);
                return;
            }
            #endregion
            #region  加厚
            if (step_id == this._stepTreeDockPanel.Step_ID_jiahout)
            #region 加厚
            if (next_step_id == this._stepTreeDockPanel.Step_ID_Thickness)
            {
                if (_sectionBundleInfo == null)
                    return;
                Rbtn数据导出STP.Visible = true;
                Rbtn数据导出IGS.Visible = true;
                this._occDesign2dCtrl.SetAllSectionCurveVisible(false);
                this._occDesign3dCtrl.SetAllSectionCurveVisible(false);
                EnterStep4(current_step_id);
                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
            #endregion
        }