chenn
2025-04-01 9a7e74591a70bc1be9c9995b5cab4cbfafaa8996
WinFrmUI/DPumpHydr.WinFrmUI.Volute/³öË®Éè¼Æ/ctrlSetOutflowParas.cs
@@ -107,6 +107,12 @@
                return _sharp_type;
            }
        }
        bool _isxml = false;
        public bool Isxml
        {
            get { return _isxml; }
            set { _isxml = value; }
        }
        private void InitialOutflowStyle()
        {
            if (_parasControlCenter == null)
@@ -123,7 +129,7 @@
                    tabPage1.Controls.Add(_parasControlArcCenter);
                    return;
                }
                if (_sharp_type == eOutflowShapeStyle.侧面出口_曲线连接)
                if (_sharp_type == eOutflowShapeStyle.侧面出口)
                {
                    metroTile出口图片.BackgroundImage = GlobalResource.BuildImage("Central-exit.png", 878, 238);
                    _parasControlArcSide.SetA_state(true);
@@ -138,7 +144,7 @@
                    _parasControlCenter.SetA_state(false);
                    tabPage1.Controls.Add(_parasControlCenter);
                    return;
                case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_曲线连接:
                case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口:
                    metroTile出口图片.BackgroundImage = GlobalResource.BuildImage("Side-exit-curve.png", 878, 238);
                    _parasControlCurve.SetA_state(true);
                    tabPage1.Controls.Add(_parasControlCurve);
@@ -158,7 +164,8 @@
        public int InitialParas(
            ViewModel.HdrBaseInfo hdrBaseInfo,
            ViewModel.GeomBaseInfo geomBaseInfo,
            ViewModel.SectionBundleInfo sectionBundleInfo)
            ViewModel.SectionBundleInfo sectionBundleInfo,
            ViewModel.OutflowParas  outflowParas)
        {
            if (IsSameBaseParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo))
            {//判断是否修改了
@@ -168,84 +175,23 @@
            this._geomBaseInfo = geomBaseInfo;
            this._sectionBundleInfo = sectionBundleInfo;
            //出口直径标准化
            double outer_dia = 4.5 * Math.Pow(hdrBaseInfo.Q / 3600 / hdrBaseInfo.n, 1 / 3.0) * 1000;
            //侧面曲线
            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;
            //侧面直线
            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)
            if(outflowParas != null)
            {
                height2 = geomBaseInfo.D3 * 0.75;
                _sharp_type = outflowParas.ShapeStyle;
                _link_type = outflowParas.LinkStyle;
            }
            outflowParas2.Heigh = height2;
            outflowParas2.Septalradius = 3;
            _parasControlLine.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlLine.IsInvokeRefreshShapeAble = false;
            _parasControlLine.SetBindingData(outflowParas2);
            _parasControlLine.IsInvokeRefreshShapeAble = true;
            //
            InitialCtrlDefaultParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo, outflowParas);
            //圆弧中心
            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(_link_type == eOutflowLinkStyle.曲线)
            {
                checkBox圆弧连接.Checked = false;
            }
            else
            {
                checkBox圆弧连接.Checked = true;
            }
            if (_sharp_type == eOutflowShapeStyle.未知)
            {
@@ -254,12 +200,145 @@
            }
            else
            {
                comboBoxType.SelectedIndex = (int)_sharp_type;
                if (_isxml)
                {
                    InitialOutflowStyle();
                    _isxml = false;
                }
                InitialOutflowStyle();
                RefreshModel();
                    RefreshModel();
            }
            return 1;
        }
        private void InitialCtrlDefaultParas(
            ViewModel.HdrBaseInfo hdrBaseInfo,
            ViewModel.GeomBaseInfo geomBaseInfo,
            ViewModel.SectionBundleInfo sectionBundleInfo,
            ViewModel.OutflowParas outflowParas)
        {
            //出口直径标准化
            double outer_dia = 4.5 * Math.Pow(hdrBaseInfo.Q / 3600 / hdrBaseInfo.n, 1 / 3.0) * 1000;
            //侧面曲线
            OutflowParas outflowParas侧面曲线 = null;
            if(outflowParas != null && outflowParas.ShapeStyle == eOutflowShapeStyle.侧面出口)
            {
                outflowParas侧面曲线 = outflowParas;
            }
            else
            {
                outflowParas侧面曲线 = new OutflowParas();
                outflowParas侧面曲线.Offset = ((int)((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8]) * 1.6 / 3 / 5) + 1) * 5;
                outflowParas侧面曲线.H1 = 5;
                outflowParas侧面曲线.H2 = 5;
                outflowParas侧面曲线.Dia = GetStdDia(outer_dia);
                double height3 = 5 * (int)(((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8] / 2) * 1.5 + outflowParas侧面曲线.Dia / 2) / 5 + 1);
                outflowParas侧面曲线.Heigh = height3;
                outflowParas侧面曲线.Septalradius = 2;
            }
            _parasControlCurve.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlCurve.IsInvokeRefreshShapeAble = false;
            _parasControlCurve.SetBindingData(outflowParas侧面曲线);
            _parasControlCurve.IsInvokeRefreshShapeAble = true;
            //中心出口
            OutflowParas outflowParas中心出口 = null;
            if (outflowParas != null && outflowParas.ShapeStyle == eOutflowShapeStyle.中心出口 && outflowParas.LinkStyle == eOutflowLinkStyle.曲线)
            {
                outflowParas中心出口 = outflowParas;
            }
            else
            {
                outflowParas中心出口 = new OutflowParas();
                outflowParas中心出口.Offset = 0;
                outflowParas中心出口.H1 = 5;
                outflowParas中心出口.H2 = 5;
                outflowParas中心出口.Dia = GetStdDia(outer_dia);
                double height1 = 5 * (int)((((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8] / 2) * 1.4141 + outflowParas中心出口.Dia / 2) / 5) + 1);
                outflowParas中心出口.Heigh = height1;
                outflowParas中心出口.Septalradius = 2;
            }
            _parasControlCenter.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlCenter.IsInvokeRefreshShapeAble = false;
            _parasControlCenter.SetBindingData(outflowParas中心出口);
            _parasControlCenter.IsInvokeRefreshShapeAble = true;
            //侧面直线
            OutflowParas outflowParas侧面直线 = null;
            if (outflowParas != null && outflowParas.ShapeStyle == eOutflowShapeStyle.侧面出口_直线连接 && outflowParas.LinkStyle == eOutflowLinkStyle.曲线)
            {
                outflowParas侧面直线 = outflowParas;
            }
            else
            {
                outflowParas侧面直线 = new OutflowParas();
                outflowParas侧面直线.Offset = (int)((geomBaseInfo.D3 + sectionBundleInfo.H[8]) / 2 + 0.5);
                outflowParas侧面直线.H1 = 5;
                outflowParas侧面直线.H2 = 5;
                outflowParas侧面直线.Dia = GetStdDia(outer_dia);
                double height2 = 5 * (int)(((outflowParas侧面直线.Dia - Math.Sqrt(4 * sectionBundleInfo.Area[8] / Math.PI)) / (2 * Math.Tan(4 * Math.PI / 180))) / 5 + 0.5);
                if (height2 < geomBaseInfo.D3 / 2)
                {
                    height2 = geomBaseInfo.D3 * 0.75;
                }
                outflowParas侧面直线.Heigh = height2;
                outflowParas侧面直线.Septalradius = 3;
            }
            _parasControlLine.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlLine.IsInvokeRefreshShapeAble = false;
            _parasControlLine.SetBindingData(outflowParas侧面直线);
            _parasControlLine.IsInvokeRefreshShapeAble = true;
            //圆弧中心
            OutflowParas outflowParas圆弧中心 = null;
            if (outflowParas != null && outflowParas.ShapeStyle == eOutflowShapeStyle.中心出口 && outflowParas.LinkStyle == eOutflowLinkStyle.直线圆弧)
            {
                outflowParas圆弧中心 = outflowParas;
            }
            else
            {
                outflowParas圆弧中心 = new OutflowParas();
                outflowParas圆弧中心.Offset = 0;
                outflowParas圆弧中心.H1 = 5;
                outflowParas圆弧中心.H2 = 5;
                outflowParas圆弧中心.Dia = GetStdDia(outer_dia);
                double height4 = 5 * (int)((((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8] / 2) * 1.4141 + outflowParas圆弧中心.Dia / 2) / 5) + 1);
                outflowParas圆弧中心.Heigh = height4;
                outflowParas圆弧中心.Septalradius = 3;
                outflowParas圆弧中心.R1 = (int)((outflowParas圆弧中心.Dia * 11 / 10 / 10) + 1) * 10;
                outflowParas圆弧中心.R2 = (int)(outflowParas圆弧中心.Dia * 3 / 4 / 10) * 10;
            }
            _parasControlArcCenter.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlArcCenter.IsInvokeRefreshShapeAble = false;
            _parasControlArcCenter.SetBindingData(outflowParas圆弧中心);
            _parasControlArcCenter.IsInvokeRefreshShapeAble = true;
            //圆弧侧面
            OutflowParas outflowParas圆弧侧面 = null;
            if (outflowParas != null && outflowParas.ShapeStyle == eOutflowShapeStyle.侧面出口 && outflowParas.LinkStyle == eOutflowLinkStyle.直线圆弧)
            {
                outflowParas圆弧侧面 = outflowParas;
            }
            else
            {
                outflowParas圆弧侧面 = new OutflowParas();
                outflowParas圆弧侧面.Offset = ((int)((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8]) * 1.6 / 3 / 5) + 1) * 5;
                outflowParas圆弧侧面.H1 = 5;
                outflowParas圆弧侧面.H2 = 5;
                outflowParas圆弧侧面.Dia = GetStdDia(outer_dia);
                double height5 = 5 * (int)(((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8] / 2) * 1.5 + outflowParas侧面曲线.Dia / 2) / 5 + 1);
                outflowParas圆弧侧面.Heigh = height5;
                outflowParas圆弧侧面.Septalradius = 3;
                outflowParas圆弧侧面.R1 = (int)(((geomBaseInfo.D3 / 2 + sectionBundleInfo.H[8]) * 2.0 / 10) + 1) * 10; ;
                outflowParas圆弧侧面.R2 = outflowParas圆弧侧面.CalR2(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            }
            _parasControlArcSide.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            _parasControlArcSide.IsInvokeRefreshShapeAble = false;
            _parasControlArcSide.SetBindingData(outflowParas圆弧侧面);
            _parasControlArcSide.IsInvokeRefreshShapeAble = true;
        }
        private bool IsSameBaseParas(
@@ -372,7 +451,7 @@
                        return null;
                    _outflowParas = _parasControlArcCenter.GetBindingData(out error);
                }
                if (_sharp_type == eOutflowShapeStyle.侧面出口_曲线连接)
                if (_sharp_type == eOutflowShapeStyle.侧面出口)
                {
                    if (_parasControlArcSide == null)
                        return null;
@@ -388,7 +467,7 @@
                            return null;
                        _outflowParas = _parasControlCenter.GetBindingData(out error);
                        break;
                    case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_曲线连接:
                    case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口:
                        _outflowParas = _parasControlCurve.GetBindingData(out error);
                        break;
                    case DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_直线连接:
@@ -430,7 +509,7 @@
            {
                paras2.Offset = (int)((_geomBaseInfo.D3 + _sectionBundleInfo.H[8]) / 2 + 0.5);
            }
            else if (paras3.ShapeStyle == eOutflowShapeStyle.侧面出口_曲线连接)
            else if (paras3.ShapeStyle == eOutflowShapeStyle.侧面出口)
            {
                paras3.Offset = (int)(((_geomBaseInfo.D3 / 2 + _sectionBundleInfo.H[8]) * 1.6 / 3 / 5) + 1) * 5;
            }
@@ -444,7 +523,7 @@
            {
                comboBoxType.SelectedIndex = 0;
            }
            else if (_sharp_type == DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_曲线连接)
            else if (_sharp_type == DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口)
            {
                comboBoxType.SelectedIndex = 1;
            }
@@ -504,6 +583,10 @@
        private void RefreshModel()
        {
            string error;
            if(OnRefreshShape3D == null)
            {
                return;
            }
            var resp = OnRefreshShape3D(GetBindingData(out error));
            if (resp != null)
            {
@@ -513,7 +596,7 @@
                    {
                        _parasControlArcCenter.SetBindingData(resp);
                    }
                    else if (_sharp_type == eOutflowShapeStyle.侧面出口_曲线连接)
                    else if (_sharp_type == eOutflowShapeStyle.侧面出口)
                    {
                        _parasControlArcSide.SetBindingData(resp);
                    }
@@ -525,7 +608,7 @@
                    {
                        _parasControlLine.SetBindingData(resp);
                    }
                    else if (_sharp_type == eOutflowShapeStyle.侧面出口_曲线连接)
                    else if (_sharp_type == eOutflowShapeStyle.侧面出口)
                    {
                        _parasControlCurve.SetBindingData(resp);
                    }
@@ -564,9 +647,9 @@
            }
            else if (comboBoxType.SelectedIndex == 1)
            {
                _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_曲线连接;
                checkBox圆弧连接.Enabled = false;
                checkBox圆弧连接.Visible = false;
                _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口;
                checkBox圆弧连接.Enabled = true;
                checkBox圆弧连接.Visible = true;
                _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
                if (checkBox圆弧连接.Checked)
                {
@@ -576,7 +659,7 @@
                {
                    _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
                }
              }
            }
            else if (comboBoxType.SelectedIndex == 2)
            {
                _sharp_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowShapeStyle.侧面出口_直线连接;
@@ -584,10 +667,14 @@
                checkBox圆弧连接.Visible = false;
                _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.曲线;
            }
            if (_isxml)
            {
                InitialOutflowStyle();
                return;
            }
            InitialOutflowStyle();
            RefreshModel();
                RefreshModel();
        }
        private void btnNextStep_Click(object sender, EventArgs e)
@@ -605,6 +692,11 @@
            {
                _link_type = DPumpHydr.WinFrmUI.Volute.ViewModel.eOutflowLinkStyle.直线圆弧;
            }
            if (_isxml)
            {
                InitialOutflowStyle();
                return;
            }
            InitialOutflowStyle();