yangyin
2025-03-25 db33bc6d9a30db6be4b40e45097c9a87a67cc845
WinFrmUI/DPumpHydr.WinFrmUI.Volute/³öË®Éè¼Æ/ctrlSetOutflowParas.cs
@@ -17,228 +17,450 @@
        {
            InitializeComponent();
            BuildAllTips();
            _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.未知;
            _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
            this.ctrlSection910Posi1.OnMoveSectPosi += (sect_index, posi)=>
            _parasControlCenter = new SetOutflowParasCtrl1() { Name = "SetOutflowParasCtrlCenter" };
            _parasControlCenter.OnRefreshShape += (para) =>
            {
                if(this.OnMoveSectPosi != null)
                if (OnRefreshShape2D != null)
                    return OnRefreshShape2D(para);
                else
                    return false;
            };
            _parasControlCenter.Dock = DockStyle.Top;
            _parasControlLine = new SetOutflowParasCtrl2() { Name = "SetOutflowParasCtrlLine" };
            _parasControlLine.OnRefreshShape += (para) =>
            {
                if (OnRefreshShape2D != null)
                    return OnRefreshShape2D(para);
                else
                    return false;
            };
            _parasControlLine.Dock = DockStyle.Top;
            _parasControlCurve = new SetOutflowParasCtrl1() { Name = "SetOutflowParasCtrlCurve" };
            _parasControlCurve.OnRefreshShape += (para) =>
            {
                if (OnRefreshShape2D != null)
                    return OnRefreshShape2D(para);
                else
                    return false;
            };
            _parasControlCurve.Dock = DockStyle.Top;
            _parasControlArcCenter = new SetOutflowParaArcCtrl() { Name = "SetOutflowParaArcCtrlCenter" };
            _parasControlArcCenter.OnRefreshShape += (para) =>
            {
                if (OnRefreshShape2D != null)
                    return OnRefreshShape2D(para);
                else
                    return false;
            };
            _parasControlArcCenter.Dock = DockStyle.Top;
            _parasControlArcSide = new SetOutflowParaArcCtrl() { Name = "SetOutflowParaArcCtrlSide" };
            _parasControlArcCenter.OnRefreshShape += (para) =>
            {
                if (OnRefreshShape2D != null)
                    return OnRefreshShape2D(para);
                else
                    return false;
            };
            _parasControlArcSide.Dock = DockStyle.Top;
            this.ctrlSection910Posi1.OnMoveSectPosi += (sect_index, posi) =>
            {
                if (this.OnMoveSectPosi != null)
                {
                    OnMoveSectPosi.Invoke(sect_index, posi);
                }
            };
            };
            BuildAllTips();
        }
        public Func<ViewModel.OtuflowParas, ViewModel.OtuflowParasCalcReponse> OnRefreshShape3D = null;
        public Func<ViewModel.OtuflowParas, ViewModel.OtuflowParasCalcReponse> OnRefreshShape2D = null;
        ViewModel.OtuflowParas _outflowParas = null;
        public Func<ViewModel.OutflowParas, ViewModel.OutflowParasCalcReponse> OnRefreshShape3D = null;
        public Func<ViewModel.OutflowParas, bool> OnRefreshShape2D = null;
        //控件
        SetOutflowParasCtrl1 _sidelineExitControl = null;
        SetOutflowParasCtrl2 _sideCurveExitControl = null;
        //曲线链接控件
        SetOutflowParasCtrl1 _parasControlCenter = null;
        SetOutflowParasCtrl2 _parasControlLine = null;
        SetOutflowParasCtrl1 _parasControlCurve = null;
        //圆弧连接控件
        SetOutflowParaArcCtrl _parasControlArcCenter = null;
        SetOutflowParaArcCtrl _parasControlArcSide = null;
        eOutflowStyle _stype = eOutflowStyle.未知;
        public eOutflowStyle CurrentOutflowStyle
        DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.未知;
        DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
        public DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle CurrentOutflowShapeStyle
        {
            get
            {
                return _stype;
                return _sharp_type;
            }
        }
        public void SetOutflowStyle(eOutflowStyle style)
        private void InitialOutflowStyle()
        {
            if (_stype == style)
            if (_parasControlCenter == null)
                return;
            _stype = style;
            tabPage1.Controls.Clear();
            switch (_stype)
            if (_link_type == eOutflowLinkStyle.直线圆弧 && _sharp_type != eOutflowShapeStyle.侧面出口_直线连接)
            {
                case eOutflowStyle.中心出口_垂直法兰面流出:
                    metroTile扩散管形状.BackgroundImage = GlobalResource.BuildImage("Central-exit.png", 878, 238);
                    if (_sidelineExitControl == null)
                    {
                        _sidelineExitControl = new SetOutflowParasCtrl1() { Name = "SetOutflowParasCtrl1" };
                        _sidelineExitControl.OnRefreshShape += (para) =>
                        {
                            if (OnRefreshShape2D != null)
                                return OnRefreshShape2D(para);
                            else
                                return null;
                        };
                        _sidelineExitControl.Dock = DockStyle.Top;
                    }
                    _sidelineExitControl.SetA_state(false);
                    tabPage1.Controls.Add(_sidelineExitControl);
                if (_sharp_type == eOutflowShapeStyle.中心出口)
                {
                    metroTile出口图片.BackgroundImage = GlobalResource.BuildImage("Central-exit.png", 878, 238);
                    _parasControlArcCenter.SetA_state(false);
                    tabPage1.Controls.Add(_parasControlArcCenter);
                    return;
                case eOutflowStyle.侧面出口_曲线连接:
                    metroTile扩散管形状.BackgroundImage = GlobalResource.BuildImage("Side-exit-curve.png", 878, 238);
                    if (_sidelineExitControl == null)
                    {
                        _sidelineExitControl = new SetOutflowParasCtrl1() { Name= "SetOutflowParasCtrl1" };
                        _sidelineExitControl.OnRefreshShape += (para) =>
                        {
                            if (OnRefreshShape2D != null)
                                return OnRefreshShape2D(para);
                            else
                                return null;
                        };
                        _sidelineExitControl.Dock = DockStyle.Top;
                    }
                    _sidelineExitControl.SetA_state(true);
                    tabPage1.Controls.Add(_sidelineExitControl);
                }
                if (_sharp_type == eOutflowShapeStyle.侧面出口_曲线连接)
                {
                    metroTile出口图片.BackgroundImage = GlobalResource.BuildImage("Central-exit.png", 878, 238);
                    _parasControlArcSide.SetA_state(true);
                    tabPage1.Controls.Add(_parasControlArcSide);
                    return;
                case eOutflowStyle.侧面出口_直线连接:
                    metroTile扩散管形状.BackgroundImage = GlobalResource.BuildImage("Side-exit-straight-line.png", 878, 238);
                    if (_sideCurveExitControl == null)
                    {
                        _sideCurveExitControl = new SetOutflowParasCtrl2() { Name = "SetOutflowParasCtrl2" };
                        _sideCurveExitControl.OnRefreshShape += (para) =>
                        {
                            if (OnRefreshShape2D != null)
                                return OnRefreshShape2D(para);
                            else
                                return null;
                        };
                        _sideCurveExitControl.Dock = DockStyle.Top;
                    }
                    tabPage1.Controls.Add(_sideCurveExitControl);
                }
            }
            switch (_sharp_type)
            {
                case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.中心出口:
                    metroTile出口图片.BackgroundImage = GlobalResource.BuildImage("Central-exit.png", 878, 238);
                    _parasControlCenter.SetA_state(false);
                    tabPage1.Controls.Add(_parasControlCenter);
                    return;
                case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_曲线连接:
                    metroTile出口图片.BackgroundImage = GlobalResource.BuildImage("Side-exit-curve.png", 878, 238);
                    _parasControlCurve.SetA_state(true);
                    tabPage1.Controls.Add(_parasControlCurve);
                    return;
                case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_直线连接:
                    metroTile出口图片.BackgroundImage = GlobalResource.BuildImage("Side-exit-straight-line.png", 878, 238);
                    tabPage1.Controls.Add(_parasControlLine);
                    return;
                default:
                    throw new ArgumentException("Invalid control type");
            }
        }
        public void SetBindingData(
            eOutflowStyle style,
        ViewModel.HdrBaseInfo _hdrBaseInfo = null;
        ViewModel.GeomBaseInfo _geomBaseInfo = null;
        ViewModel.SectionBundleInfo _sectionBundleInfo = null;
        public int InitialParas(
            ViewModel.HdrBaseInfo hdrBaseInfo,
            ViewModel.GeomBaseInfo geomBaseInfo,
            ViewModel.SectionBundleInfo sectionBundleInfo)
        {
            if(_outflowParas == null)
            {
                InitialParas(style, hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            if (IsSameBaseParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo))
            {//判断是否修改了
                return 0;//0表示没有变化
            }
            else
            {
                if (_stype == style)
                    return;
                if(_stype == eOutflowStyle.侧面出口_直线连接)
                {
                    if(style != eOutflowStyle.侧面出口_直线连接)
                    {
                        InitialParas(style, hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
                    }
                    else
                    {
                        SetOutflowStyle(style);
                    }
                }
                else
                {
                    if (style == eOutflowStyle.侧面出口_直线连接)
                    {
                        InitialParas(style, hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
                    }
                    else
                    {
                        SetOutflowStyle(style);
                    }
                }
            }
        }
        public void InitialParas(
            eOutflowStyle style,
            ViewModel.HdrBaseInfo hdrBaseInfo,
            ViewModel.GeomBaseInfo geomBaseInfo,
            ViewModel.SectionBundleInfo sectionBundleInfo)
        {
            SetOutflowStyle(style);
            this._hdrBaseInfo = hdrBaseInfo;
            this._geomBaseInfo = geomBaseInfo;
            this._sectionBundleInfo = sectionBundleInfo;
            //出口直径标准化
            double outer_dia = 4.5 * Math.Pow(hdrBaseInfo.Q / 3600 / hdrBaseInfo.n, 1 / 3.0) * 1000;
            double height = 10 * (int)((geomBaseInfo.D3 * 1.3 + sectionBundleInfo.H[8] + 15) / 10);
            //侧面曲线
            var outflowParas3 = new OutflowParas();
            outflowParas3.Offset = ((int)((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8]) * 1.6 / 3 / 5) + 1) * 5;
            outflowParas3.H1 = 5;
            outflowParas3.H2 = 5;
            outflowParas3.Dia = GetStdDia(outer_dia);
            double height3 = 5 * (int)(((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8] / 2) * 1.5 + outflowParas3.Dia / 2) / 5 + 1);
            outflowParas3.Heigh = height3;
            outflowParas3.Septalradius = 2;
            _parasControlCurve.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlCurve.IsInvokeRefreshShapeAble = false;
            _parasControlCurve.SetBindingData(outflowParas3);
            _parasControlCurve.IsInvokeRefreshShapeAble = true;
            //中心出口
            var outflowParas1 = new OutflowParas();
            outflowParas1.Offset = 0;
            outflowParas1.H1 = 5;
            outflowParas1.H2 = 5;
            outflowParas1.Dia = GetStdDia(outer_dia);
            double height1 = 5 * (int)((((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8] / 2) * 1.4141 + outflowParas1.Dia / 2) / 5) + 1);
            outflowParas1.Heigh = height1;
            outflowParas1.Septalradius = 2;
            _parasControlCenter.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlCenter.IsInvokeRefreshShapeAble = false;
            _parasControlCenter.SetBindingData(outflowParas1);
            _parasControlCenter.IsInvokeRefreshShapeAble = true;
            double a = 0;
            if (style == eOutflowStyle.中心出口_垂直法兰面流出)
            //侧面直线
            var outflowParas2 = new OutflowParas();
            outflowParas2.Offset = (int)((geomBaseInfo.D3 + sectionBundleInfo.H[8]) / 2 + 0.5);
            outflowParas2.H1 = 5;
            outflowParas2.H2 = 5;
            outflowParas2.Dia = GetStdDia(outer_dia);
            double height2 = 5 * (int)(((outflowParas2.Dia - Math.Sqrt(4 * sectionBundleInfo.Area[8] / Math.PI)) / (2 * Math.Tan(4 * Math.PI / 180))) / 5 + 0.5);
            if(height2 < geomBaseInfo.D3/ 2)
            {
                a = 0;
                height2 = geomBaseInfo.D3 * 0.75;
            }
            outflowParas2.Heigh = height2;
            outflowParas2.Septalradius = 3;
            _parasControlLine.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlLine.IsInvokeRefreshShapeAble = false;
            _parasControlLine.SetBindingData(outflowParas2);
            _parasControlLine.IsInvokeRefreshShapeAble = true;
            //圆弧中心
            var outflowParas4 = new OutflowParas();
            outflowParas4.Offset = 0;
            outflowParas4.H1 = 5;
            outflowParas4.H2 = 5;
            outflowParas4.Dia = GetStdDia(outer_dia);
            double height4 = 5 * (int)((((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8] / 2) * 1.4141 + outflowParas4.Dia / 2) / 5) + 1);
            outflowParas4.Heigh = height4;
            outflowParas4.Septalradius = 3;
            outflowParas4.R1 = (int)((outflowParas4.Dia * 11 / 10 / 10) + 1) * 10;
            outflowParas4.R2 = (int)(outflowParas4.Dia * 3 / 4 / 10) * 10;
            _parasControlArcCenter.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlArcCenter.IsInvokeRefreshShapeAble = false;
            _parasControlArcCenter.SetBindingData(outflowParas4);
            _parasControlArcCenter.IsInvokeRefreshShapeAble = true;
            //圆弧侧面
            var outflowParas5 = new OutflowParas();
            outflowParas5.Offset = ((int)((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8]) * 1.6 / 3 / 5) + 1) * 5;
            outflowParas5.H1 = 5;
            outflowParas5.H2 = 5;
            outflowParas5.Dia = GetStdDia(outer_dia);
            double height5 = 5 * (int)(((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8] / 2) * 1.5 + outflowParas3.Dia / 2) / 5 + 1);
            outflowParas5.Heigh = height5;
            outflowParas5.Septalradius = 3;
            outflowParas5.R1 = (int)(((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8]) * 2.0 / 10) + 1) * 10; ;
            outflowParas5.R2 = outflowParas5.CalR2(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlArcSide.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlArcSide.IsInvokeRefreshShapeAble = false;
            _parasControlArcSide.SetBindingData(outflowParas5);
            _parasControlArcSide.IsInvokeRefreshShapeAble = true;
            if (_sharp_type == eOutflowShapeStyle.未知)
            {
                _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.中心出口;
                comboBoxType.SelectedIndex = 0;
            }
            else
            {
                a = (int)((geomBaseInfo.D3 + sectionBundleInfo.H[8]) / 2);
                InitialOutflowStyle();
                RefreshModel();
            }
            _outflowParas = new OtuflowParas();
            _outflowParas.Offset = a;
            _outflowParas.Heigh = height;
            _outflowParas.H1 = 5;
            _outflowParas.H2 = 5;
            _outflowParas.Dia = GetStdDia(outer_dia);
            _outflowParas.Septalradius = 2;
            if (_stype == eOutflowStyle.侧面出口_直线连接)
            {
                _sideCurveExitControl.SetBindingData(_outflowParas);
            }
            else
            {
                _sidelineExitControl.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
                _sidelineExitControl.IsInvokeRefreshShapeAble = false;
                _sidelineExitControl.SetBindingData(_outflowParas);
                _sidelineExitControl.IsInvokeRefreshShapeAble = true;
            }
            return 1;
        }
        private bool IsSameBaseParas(
            ViewModel.HdrBaseInfo hdrBaseInfo,
            ViewModel.GeomBaseInfo geomBaseInfo,
            ViewModel.SectionBundleInfo sectionBundleInfo)
        {
            if (this._hdrBaseInfo == null)
                return false;
            if (this._geomBaseInfo == null)
                return false;
            if (this._sectionBundleInfo == null)
                return false;
            if (!this._hdrBaseInfo.IsSame(hdrBaseInfo))
                return false;
            if (!this._geomBaseInfo.IsSame(geomBaseInfo))
                return false;
            if (!this._sectionBundleInfo.IsSame(sectionBundleInfo))
                return false;
            this._hdrBaseInfo = hdrBaseInfo;
            this._geomBaseInfo = geomBaseInfo;
            this._sectionBundleInfo = sectionBundleInfo;
            return true;
        }
        private static double GetStdDia(double mm)
        {
            var iFlangeCodeList = new int[] {10,15,20,25,32,
                        40,50,65,80,100,
                        125,150,200,250,300,
                        350,400,450,500,600,
                        700,800,900,1000,1200,
                        1400,1600,1800,2000,5000,100000};
            //var iFlangeCodeList = new int[] {10,15,20,25,32,
            //            40,50,65,80,100,
            //            125,150,200,250,300,
            //            350,400,450,500,600,
            //            700,800,900,1000,1200,
            //            1400,1600,1800,2000,5000,100000};
            //var iFlangeCodeList = new Double[] {6,8,10,15,20,25,32,40,50,65,80,100,125,150,175,
            //                                    200,225,250,300,350,400,450,500,550,600,650,700,750,800,900,1000,
            //                                    1100,1200,1300,1400,1500,1600,1800,2000,2200,2400,2600,2800,3000,
            //                                    3200,3400,3600,3800,4000,5000,100000};
            var stdDia = mm;
            if (mm > 0 && mm < 7) stdDia = 6;
            if (mm >= 7 && mm < 9) stdDia = 8;
            if (mm >= 9 && mm < 11) stdDia = 10;
            if (mm >= 11 && mm < 17.5) stdDia = 15;
            if (mm >= 17.5 && mm < 22.5) stdDia = 20;
            if (mm >= 22.5 && mm < 28.5) stdDia = 25;
            if (mm >= 28.5 && mm < 36) stdDia = 32;
            if (mm >= 36 && mm < 45) stdDia = 40;
            if (mm >= 45 && mm < 57.5) stdDia = 50;
            if (mm >= 57.5 && mm < 72.5) stdDia = 65;
            if (mm >= 72.5 && mm < 90) stdDia = 80;
            if (mm >= 90 && mm < 112.5) stdDia = 100;
            if (mm >= 112.5 && mm < 137.5) stdDia = 125;
            if (mm >= 137.5 && mm < 162.5) stdDia = 150;
            if (mm >= 162.5 && mm < 187.5) stdDia = 175;
            if (mm >= 187.5 && mm < 212.5) stdDia = 200;
            if (mm >= 212.5 && mm < 237.5) stdDia = 225;
            if (mm >= 237.5 && mm < 275) stdDia = 250;
            if (mm >= 275 && mm < 325) stdDia = 300;
            if (mm >= 325 && mm < 375) stdDia = 350;
            if (mm >= 375 && mm < 425) stdDia = 400;
            if (mm >= 425 && mm < 475) stdDia = 450;
            if (mm >= 475 && mm < 525) stdDia = 500;
            if (mm >= 525 && mm < 575) stdDia = 550;
            if (mm >= 575 && mm < 625) stdDia = 600;
            if (mm >= 625 && mm < 675) stdDia = 650;
            if (mm >= 675 && mm < 725) stdDia = 700;
            if (mm >= 725 && mm < 775) stdDia = 750;
            if (mm >= 775 && mm < 850) stdDia = 800;
            if (mm >= 850 && mm < 950) stdDia = 900;
            if (mm >= 950 && mm < 1050) stdDia = 1000;
            if (mm >= 1050 && mm < 1150) stdDia = 1100;
            if (mm >= 1150 && mm < 1250) stdDia = 1200;
            if (mm >= 1250 && mm < 1350) stdDia = 1300;
            if (mm >= 1350 && mm < 1450) stdDia = 1400;
            if (mm >= 1450 && mm < 1550) stdDia = 1500;
            if (mm >= 1550 && mm < 1700) stdDia = 1600;
            if (mm >= 1700 && mm < 1900) stdDia = 1800;
            if (mm >= 1900 && mm < 2100) stdDia = 2000;
            if (mm >= 2100 && mm < 2300) stdDia = 2200;
            if (mm >= 2300 && mm < 2500) stdDia = 2400;
            if (mm >= 2500 && mm < 2700) stdDia = 2600;
            if (mm >= 2700 && mm < 2900) stdDia = 2800;
            if (mm >= 2900 && mm < 3100) stdDia = 3000;
            if (mm >= 3100 && mm < 3300) stdDia = 3200;
            if (mm >= 3300 && mm < 3500) stdDia = 3400;
            if (mm >= 3500 && mm < 3700) stdDia = 3600;
            if (mm >= 3700 && mm < 3900) stdDia = 3800;
            if (mm >= 3900 && mm < 4100) stdDia = 4000;
            for (int i = 0; i < iFlangeCodeList.Count() - 1; i++)
            {
                if (mm < iFlangeCodeList[i])
                    return iFlangeCodeList[i];
            }
            //for (int i = 0; i < iFlangeCodeList.Count() - 1; i++)
            //{
            //    if (mm <= iFlangeCodeList[i])
            //        return iFlangeCodeList[i];
            //}
            return iFlangeCodeList.Last();
            //return iFlangeCodeList.Last();
            return stdDia;
        }
        //
        public ViewModel.OtuflowParas GetBindingData(out string error)
        public ViewModel.OutflowParas GetBindingData(out string error)
        {
            error = "";
            if (_stype == eOutflowStyle.侧面出口_直线连接)
            ViewModel.OutflowParas _outflowParas = null;
            if (_link_type == eOutflowLinkStyle.直线圆弧 && _sharp_type != eOutflowShapeStyle.侧面出口_直线连接)
            {
                _outflowParas = _sideCurveExitControl.GetBindingData(out error);
                if (_sharp_type == eOutflowShapeStyle.中心出口)
                {
                    if (_parasControlArcCenter == null)
                        return null;
                    _outflowParas = _parasControlArcCenter.GetBindingData(out error);
                }
                if (_sharp_type == eOutflowShapeStyle.侧面出口_曲线连接)
                {
                    if (_parasControlArcSide == null)
                        return null;
                    _outflowParas = _parasControlArcSide.GetBindingData(out error);
                }
            }
            else
            {
                _outflowParas = _sidelineExitControl.GetBindingData(out error);
                switch (_sharp_type)
                {
                    case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.中心出口:
                        if (_parasControlCenter == null)
                            return null;
                        _outflowParas = _parasControlCenter.GetBindingData(out error);
                        break;
                    case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_曲线连接:
                        _outflowParas = _parasControlCurve.GetBindingData(out error);
                        break;
                    case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_直线连接:
                        _outflowParas = _parasControlLine.GetBindingData(out error);
                        break;
                    default:
                        return null;
                }
            }
            if (_outflowParas == null)
            {
                return null;
            }
            _outflowParas.ShapeStyle = _sharp_type;
            _outflowParas.LinkStyle = _link_type;
            return _outflowParas;
        }
        public void SetBindingData(eOutflowStyle style, ViewModel.OtuflowParas paras)
        public void SetBindingData(ViewModel.OutflowParas paras)
        {
            SetOutflowStyle(style);
            if (_stype == eOutflowStyle.侧面出口_直线连接)
            if (paras == null)
                return;
            if (_sectionBundleInfo == null)
            {
                _sideCurveExitControl.SetBindingData(_outflowParas);
                throw new Exception("未初始化ctrlSetOutflowParas控件");
            }
            this._sharp_type = paras.ShapeStyle;
            this._link_type = paras.LinkStyle;
            var paras1 = new ViewModel.OutflowParas(paras);
            var paras2 = new ViewModel.OutflowParas(paras);
            var paras3 = new ViewModel.OutflowParas(paras);
            var paras4 = new ViewModel.OutflowParas(paras);
            var paras5 = new ViewModel.OutflowParas(paras);
            _parasControlCenter.SetBindingData(paras1);
            if (paras2.ShapeStyle == DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.中心出口)
            {
                paras2.Offset = (int)((_geomBaseInfo.D3 + _sectionBundleInfo.H[8]) / 2 + 0.5);
            }
            else if (paras3.ShapeStyle == eOutflowShapeStyle.侧面出口_曲线连接)
            {
                paras3.Offset = (int)(((_geomBaseInfo.D3 / 2 + _sectionBundleInfo.H[8]) * 1.6 / 3 / 5) + 1) * 5;
            }
            _parasControlLine.SetBindingData(paras2);
            _parasControlCurve.SetBindingData(paras3);
            _parasControlArcCenter.SetBindingData(paras4);
            _parasControlArcSide.SetBindingData(paras5);
            if (_sharp_type == DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.中心出口)
            {
                comboBoxType.SelectedIndex = 0;
            }
            else if (_sharp_type == DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_曲线连接)
            {
                comboBoxType.SelectedIndex = 1;
            }
            else if (_sharp_type == DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_直线连接)
            {
                comboBoxType.SelectedIndex = 2;
            }
            if(_link_type == eOutflowLinkStyle.直线圆弧)
            {
                checkBox圆弧连接.Checked = true;
            }
            else
            {
                _sidelineExitControl.SetBindingData(_outflowParas);
                checkBox圆弧连接.Checked = false;
            }
            InitialOutflowStyle();
        }
@@ -246,48 +468,71 @@
        private void BuildAllTips()
        {
            metroToolTip第六步提示.SetToolTip(this.metroTile扩散管形状, "断面图");
            metroToolTip第六步提示.SetToolTip(this.metroTile出口图片, "断面图");
        }
        public void ShowPage(DPumpHydr.ViewModel.eWizardStepDiretion step_direction)
        {
            //if (step_direction == DPumpHydr.ViewModel.eWizardStepDiretion.前进)
            //{
            //    var resp = OnRefreshShape3D(_outflowParas);
            //    if (resp != null)
            //    {
            //        if (_stype == eOutflowStyle.侧面出口_直线连接)
            //        {
            //            _sideCurveExitControl.SetBindingData(resp);
            //        }
            //        else
            //        {
            //            _sidelineExitControl.SetBindingData(resp);
            //        }
            //    }
            //}
            //else
            //{
            if (step_direction == DPumpHydr.ViewModel.eWizardStepDiretion.前进)
            {
                var resp = OnRefreshShape3D(_outflowParas);
                if (resp != null)
                {
                    if (_stype == eOutflowStyle.侧面出口_直线连接)
                    {
                        _sideCurveExitControl.SetBindingData(resp);
                    }
                    else
                    {
                        _sidelineExitControl.SetBindingData(resp);
                    }
                }
            }
            else
            {
            }
            //}
        }
        private void mBtn更新模型_Click(object sender, EventArgs e)
        {
            RefreshModel();
        }
        private void RefreshModel()
        {
            string error;
            var resp = OnRefreshShape3D(GetBindingData(out error));
            if (resp != null)
            {
                if (_stype == eOutflowStyle.侧面出口_直线连接)
                if (_link_type == eOutflowLinkStyle.直线圆弧 && _sharp_type != eOutflowShapeStyle.侧面出口_直线连接)
                {
                    _sideCurveExitControl.SetBindingData(resp);
                    if (_sharp_type == eOutflowShapeStyle.中心出口)
                    {
                        _parasControlArcCenter.SetBindingData(resp);
                    }
                    else if (_sharp_type == eOutflowShapeStyle.侧面出口_曲线连接)
                    {
                        _parasControlArcSide.SetBindingData(resp);
                    }
                }
                else
                {
                    _sidelineExitControl.SetBindingData(resp);
                    if (_sharp_type == eOutflowShapeStyle.侧面出口_直线连接)
                    {
                        _parasControlLine.SetBindingData(resp);
                    }
                    else if (_sharp_type == eOutflowShapeStyle.侧面出口_曲线连接)
                    {
                        _parasControlCurve.SetBindingData(resp);
                    }
                    else
                    {
                        _parasControlCenter.SetBindingData(resp);
                    }
                }
            }
        }
@@ -300,5 +545,70 @@
        {
            ctrlSection910Posi1.SetSect10Posi(sect9Posi);
        }
        private void comboBoxType_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBoxType.SelectedIndex == 0)
            {
                _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.中心出口;
                checkBox圆弧连接.Enabled = true;
                checkBox圆弧连接.Visible = true;
                if (checkBox圆弧连接.Checked)
                {
                    _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.直线圆弧;
                }
                else
                {
                    _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
                }
            }
            else if (comboBoxType.SelectedIndex == 1)
            {
                _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_曲线连接;
                checkBox圆弧连接.Enabled = false;
                checkBox圆弧连接.Visible = false;
                _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
                if (checkBox圆弧连接.Checked)
                {
                    _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.直线圆弧;
                }
                else
                {
                    _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
                }
              }
            else if (comboBoxType.SelectedIndex == 2)
            {
                _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_直线连接;
                checkBox圆弧连接.Enabled = false;
                checkBox圆弧连接.Visible = false;
                _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
            }
            InitialOutflowStyle();
            RefreshModel();
        }
        private void btnNextStep_Click(object sender, EventArgs e)
        {
            NextStep();
        }
        private void checkBox圆弧连接_CheckedChanged(object sender, EventArgs e)
        {
            if (!checkBox圆弧连接.Checked)
            {
                _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
            }
            else
            {
                _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.直线圆弧;
            }
            InitialOutflowStyle();
            RefreshModel();
        }
    }
}