tangxu
2025-01-13 4f7cb65b079d88d5a829688b24d26d5145c5df47
WinFrmUI/DPumpHydr.WinFrmUI.Volute/³öË®Éè¼Æ/ctrlSetOutflowParas.cs
@@ -5,11 +5,9 @@
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text;
using System.Windows.Forms;
using DPumpHydr.WinFrmUI.Volute.ViewModel;
using static System.Runtime.InteropServices.JavaScript.JSType;
using DPumpHydr.WinFrmUI.Volute.ViewModel;
namespace DPumpHydr.WinFrmUI.Volute
{
@@ -20,15 +18,32 @@
            InitializeComponent();
            BuildAllTips();
            this.ctrlSection910Posi1.OnMoveSectPosi += (sect_index, posi)=>
            {
                if(this.OnMoveSectPosi != null)
                {
                    OnMoveSectPosi.Invoke(sect_index, posi);
                }
            };
        }
        eOutflowStyle _stype = eOutflowStyle.未知;
        public Func<OtuflowParas, bool> OnRefreshShape3D = null;
        public Func<OtuflowParas, bool> OnRefreshShape2D = null;
        public Func<ViewModel.OtuflowParas, ViewModel.OtuflowParasCalcReponse> OnRefreshShape3D = null;
        public Func<ViewModel.OtuflowParas, ViewModel.OtuflowParasCalcReponse> OnRefreshShape2D = null;
        ViewModel.OtuflowParas _outflowParas = null;
        //控件
        SetOutflowParasCtrl1 _sidelineExitControl = null;
        SetOutflowParasCtrl2 _sideCurveExitControl = null;
        eOutflowStyle _stype = eOutflowStyle.未知;
        public eOutflowStyle CurrentOutflowStyle
        {
            get
            {
                return _stype;
            }
        }
        public void SetOutflowStyle(eOutflowStyle style)
        {
            if (_stype == style)
@@ -36,7 +51,7 @@
            _stype = style;
            panel.Controls.Clear();
            tabPage1.Controls.Clear();
            switch (_stype)
            {
                case eOutflowStyle.中心出口_垂直法兰面流出:
@@ -44,51 +59,103 @@
                    if (_sidelineExitControl == null)
                    {
                        _sidelineExitControl = new SetOutflowParasCtrl1();
                        _sidelineExitControl.OnChangeParas += (para) =>
                        _sidelineExitControl = new SetOutflowParasCtrl1() { Name = "SetOutflowParasCtrl1" };
                        _sidelineExitControl.OnRefreshShape += (para) =>
                        {
                            if(OnRefreshShape2D != null)
                            OnRefreshShape2D(para);
                            if (OnRefreshShape2D != null)
                                return OnRefreshShape2D(para);
                            else
                                return null;
                        };
                        _sidelineExitControl.Dock = DockStyle.Top;
                    }
                    _sidelineExitControl.SetA_state(false);
                    panel.Controls.Add(_sidelineExitControl);
                    _sidelineExitControl.SetA_state(false);
                    tabPage1.Controls.Add(_sidelineExitControl);
                    return;
                case eOutflowStyle.侧面出口_曲线连接:
                    metroTile扩散管形状.BackgroundImage = GlobalResource.BuildImage("Side-exit-curve.png", 878, 238);
                    if (_sidelineExitControl == null)
                    {
                        _sidelineExitControl = new SetOutflowParasCtrl1();
                        _sidelineExitControl.OnChangeParas += (para) =>
                        _sidelineExitControl = new SetOutflowParasCtrl1() { Name= "SetOutflowParasCtrl1" };
                        _sidelineExitControl.OnRefreshShape += (para) =>
                        {
                            if (OnRefreshShape2D != null)
                                OnRefreshShape2D(para);
                                return OnRefreshShape2D(para);
                            else
                                return null;
                        };
                        _sidelineExitControl.Dock = DockStyle.Top;
                    }
                    _sidelineExitControl.SetA_state(true);
                    panel.Controls.Add(_sidelineExitControl);
                    tabPage1.Controls.Add(_sidelineExitControl);
                    return;
                case eOutflowStyle.侧面出口_直线连接:
                    metroTile扩散管形状.BackgroundImage = GlobalResource.BuildImage("Side-exit-straight-line.png", 878, 238);
                    if (_sideCurveExitControl == null)
                        _sideCurveExitControl = new SetOutflowParasCtrl2();
                    _sideCurveExitControl.Dock = DockStyle.Top;
                    panel.Controls.Add(_sideCurveExitControl);
                    {
                        _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);
                    return;
                default:
                    throw new ArgumentException("Invalid control type");
            }
        }
        public void SetBindingData(
            eOutflowStyle style,
            ViewModel.HdrBaseInfo hdrBaseInfo,
            ViewModel.GeomBaseInfo geomBaseInfo,
            ViewModel.SectionBundleInfo sectionBundleInfo)
        {
            if(_outflowParas == null)
            {
                InitialParas(style, hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
            }
            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  )
            ViewModel.HdrBaseInfo hdrBaseInfo,
            ViewModel.GeomBaseInfo geomBaseInfo,
            ViewModel.SectionBundleInfo sectionBundleInfo)
        {
            SetOutflowStyle(style);
            //出口直径标准化
@@ -111,16 +178,17 @@
            _outflowParas.H1 = 5;
            _outflowParas.H2 = 5;
            _outflowParas.Dia = GetStdDia(outer_dia);
            _outflowParas.Septalradius = 10;
            _outflowParas.Septalradius = 2;
            if (_stype == eOutflowStyle.侧面出口_直线连接)
            {
                _sideCurveExitControl.SetBindingData(_outflowParas);
            }
            else
            {
                _sidelineExitControl.IsInvokeAble = false;
                _sidelineExitControl.InitialParas(hdrBaseInfo, geomBaseInfo, sectionBundleInfo);
                _sidelineExitControl.IsInvokeRefreshShapeAble = false;
                _sidelineExitControl.SetBindingData(_outflowParas);
                _sidelineExitControl.IsInvokeAble = true;
                _sidelineExitControl.IsInvokeRefreshShapeAble = true;
            }
        }
@@ -132,9 +200,9 @@
                        350,400,450,500,600,
                        700,800,900,1000,1200,
                        1400,1600,1800,2000,5000,100000};
            for (int i = 0; i < iFlangeCodeList.Count() - 1; i++)
            {
            {
                if (mm < iFlangeCodeList[i])
                    return iFlangeCodeList[i];
            }
@@ -158,19 +226,19 @@
            return _outflowParas;
        }
        public void  SetBindingData(eOutflowStyle style, ViewModel.OtuflowParas paras)
        public void SetBindingData(eOutflowStyle style, ViewModel.OtuflowParas paras)
        {
            SetOutflowStyle(style);
            if (_stype == eOutflowStyle.侧面出口_直线连接)
            {
                  _sideCurveExitControl.SetBindingData(  _outflowParas);
                _sideCurveExitControl.SetBindingData(_outflowParas);
            }
            else
            {
                   _sidelineExitControl.SetBindingData(_outflowParas);
                _sidelineExitControl.SetBindingData(_outflowParas);
            }
        }
@@ -181,9 +249,28 @@
            metroToolTip第六步提示.SetToolTip(this.metroTile扩散管形状, "断面图");
        }
        public void ShowPage()
        public void ShowPage(DPumpHydr.ViewModel.eWizardStepDiretion step_direction)
        {
            OnRefreshShape3D(_outflowParas);
            if (step_direction == DPumpHydr.ViewModel.eWizardStepDiretion.前进)
            {
                var resp = OnRefreshShape3D(_outflowParas);
                if (resp != null)
                {
                    if (_stype == eOutflowStyle.侧面出口_直线连接)
                    {
                        _sideCurveExitControl.SetBindingData(resp);
                    }
                    else
                    {
                        _sidelineExitControl.SetBindingData(resp);
                    }
                }
            }
            else
            {
            }
        }
@@ -191,7 +278,27 @@
        private void mBtn更新模型_Click(object sender, EventArgs e)
        {
            string error;
            OnRefreshShape3D(GetBindingData(out error));
            var resp = OnRefreshShape3D(GetBindingData(out error));
            if (resp != null)
            {
                if (_stype == eOutflowStyle.侧面出口_直线连接)
                {
                    _sideCurveExitControl.SetBindingData(resp);
                }
                else
                {
                    _sidelineExitControl.SetBindingData(resp);
                }
            }
        }
        public Action<int, double> OnMoveSectPosi = null;
        internal void SetSect9Posi(double sect9Posi)
        {
            ctrlSection910Posi1.SetSect9Posi(sect9Posi);
        }
        internal void SetSect10Posi(double sect9Posi)
        {
            ctrlSection910Posi1.SetSect10Posi(sect9Posi);
        }
    }
}