using DPumpHydr.WinFrmUI.RLT.Controls; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; namespace DPumpHydr.WinFrmUI.Volute { public partial class ctrlHdrBaseInfo : ParasInfoBaseCtrl { public ctrlHdrBaseInfo() { InitializeComponent(); BuildAllTips(); BuildIcon(); labelNs.Text = ""; } public void InitialParas() { ViewModel.GeomBaseInfo geomBaseInfo; ViewModel.HdrBaseInfo hdrBaseInfo; InitialHistoryParas(out hdrBaseInfo , out geomBaseInfo); SetBindingData(hdrBaseInfo); SetBindingData(geomBaseInfo); } public void InitialHistoryParas(out ViewModel.HdrBaseInfo hdrBaseInfo, out ViewModel.GeomBaseInfo geomBaseInfo) { hdrBaseInfo = new ViewModel.HdrBaseInfo(); hdrBaseInfo.Q = 250; hdrBaseInfo.H = 20; hdrBaseInfo.n = 1480; hdrBaseInfo.D2 = 270; hdrBaseInfo.B2 = 50; if (!string.IsNullOrEmpty( DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseQ)) { hdrBaseInfo.Q = Convert.ToDouble(DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseQ); } if (!string.IsNullOrEmpty( DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseH)) { hdrBaseInfo.H = Convert.ToDouble(DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseH); } if (!string.IsNullOrEmpty( DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseN)) { hdrBaseInfo.n = Convert.ToDouble(DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseN); } if (!string.IsNullOrEmpty( DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseD2)) { hdrBaseInfo.D2 = Convert.ToDouble(DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseD2); } if (!string.IsNullOrEmpty( DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseB2)) { hdrBaseInfo.B2 = Convert.ToDouble(DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseB2); } geomBaseInfo = new ViewModel.GeomBaseInfo(); geomBaseInfo.Initial(hdrBaseInfo); if (!string.IsNullOrEmpty( DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseFAI0)) { geomBaseInfo.FAI0 = Convert.ToDouble(DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseFAI0); } if (!string.IsNullOrEmpty( DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseB3)) { geomBaseInfo.B3 = Convert.ToDouble(DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseB3); } if (!string.IsNullOrEmpty( DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseD3)) { geomBaseInfo.D3 = Convert.ToDouble(DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseD3); } return ; } public void SetBindingData(ViewModel.HdrBaseInfo vm) { if (vm == null) { return; } this.mTextBoxEdit总流量.Text = vm.Q.ToString(); this.mTextBoxEdit扬程.Text = vm.H.ToString(); this.mTextBoxEdit转速.Text = vm.n.ToString(); this.mTextBoxEdit出口直径D2.Text = vm.D2.ToString(); this.mTextBox出口宽度B2.Text = vm.B2.ToString(); this.RBtn双吸泵.Checked = vm.IsSXB; } public void SetBindingData(ViewModel.GeomBaseInfo vm) { if (vm == null) { return; } //this.crownLabel比转速.Text = vm.ns.ToString(); //this.mTextBoxEdit速度系数.Text = vm.K3.ToString(); this.mTextBoxEdit基圆直径D3.Text = vm.D3.ToString(); this.mTextBox基圆宽度B3.Text = vm.B3.ToString(); this.mTextBoxEdit隔舌安放角.Text = vm.FAI0.ToString(); } public void SaveHistoryParas(ViewModel.HdrBaseInfo hdrBaseInfo, ViewModel.GeomBaseInfo geomBaseInfo) { if (hdrBaseInfo == null) return; DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseQ = hdrBaseInfo.Q.ToString(); DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseH = hdrBaseInfo.H.ToString(); DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseN = hdrBaseInfo.n.ToString(); DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseD2 = hdrBaseInfo.D2.ToString(); DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseB2 = hdrBaseInfo.B2.ToString(); if (geomBaseInfo != null) { DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseD3 = geomBaseInfo.D3.ToString(); DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseB3 = geomBaseInfo.B3.ToString(); DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.HistoryHdrBaseFAI0 = geomBaseInfo.FAI0.ToString(); } DPumpHydr.WinFrmUI.Volute.Properties.Settings.Default.Save(); } public string GetBindingData( out ViewModel.HdrBaseInfo hdrParas, out ViewModel.GeomBaseInfo geomParas) { geomParas = null; hdrParas = null; string error; if (!Verify(out error)) { return error; } error = null; hdrParas = new ViewModel.HdrBaseInfo(); hdrParas.Q = Convert.ToDouble(this.mTextBoxEdit总流量.Text); hdrParas.H = Convert.ToDouble(this.mTextBoxEdit扬程.Text); hdrParas.n = Convert.ToDouble(this.mTextBoxEdit转速.Text); hdrParas.D2 = Convert.ToDouble(this.mTextBoxEdit出口直径D2.Text); hdrParas.B2 = Convert.ToDouble(this.mTextBox出口宽度B2.Text); hdrParas.IsSXB = this.RBtn双吸泵.Checked; geomParas = new ViewModel.GeomBaseInfo(); //geomParas.K3 = Convert.ToDouble(this.mTextBoxEdit速度系数.Text); geomParas.D3 = Convert.ToDouble(this.mTextBoxEdit基圆直径D3.Text); geomParas.B3 = Convert.ToDouble(this.mTextBox基圆宽度B3.Text); geomParas.FAI0 = Convert.ToDouble(this.mTextBoxEdit隔舌安放角.Text); return null; } public bool Verify(out string error) { error = ""; skyLabel总流量.Visible = false; mTextBoxEdit总流量.TrailingIcon = null; skyLabel转速.Visible = false; mTextBoxEdit转速.TrailingIcon = null; skyLabel扬程.Visible = false; mTextBoxEdit扬程.TrailingIcon = null; skyLabel出口直径.Visible = false; mTextBoxEdit出口直径D2.TrailingIcon = null; skyLabel出口宽度.Visible = false; mTextBox出口宽度B2.TrailingIcon = null; double v = 0; bool isOk = true; if (string.IsNullOrEmpty(mTextBoxEdit总流量.Text) || mTextBoxEdit总流量.Text == "请输入总流量" || !double.TryParse(mTextBoxEdit总流量.Text, out v) || double.Parse(mTextBoxEdit总流量.Text) <= 0) { isOk = false; error = "请输入必填项!"; mTextBoxEdit总流量.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel总流量.Text = error; skyLabel总流量.Visible = true; } if (string.IsNullOrEmpty(mTextBoxEdit转速.Text) || mTextBoxEdit转速.Text == "请输入转速" || !double.TryParse(mTextBoxEdit转速.Text, out v) || double.Parse(mTextBoxEdit转速.Text) <= 0) { isOk = false; error = "请输入必填项!"; mTextBoxEdit转速.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel转速.Text = error; skyLabel转速.Visible = true; } if (string.IsNullOrEmpty(mTextBoxEdit扬程.Text) || mTextBoxEdit扬程.Text == "请输入扬程" || !double.TryParse(mTextBoxEdit扬程.Text, out v) || double.Parse(mTextBoxEdit扬程.Text) <= 0) { isOk = false; error = "请输入必填项!"; mTextBoxEdit扬程.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel扬程.Text = error; skyLabel扬程.Visible = true; } if (string.IsNullOrEmpty(mTextBoxEdit出口直径D2.Text) || mTextBoxEdit出口直径D2.Text == "请输入出口直径" || !double.TryParse(mTextBoxEdit出口直径D2.Text, out v) || double.Parse(mTextBoxEdit出口直径D2.Text) <= 0) { isOk = false; error = "请输入必填项!"; mTextBoxEdit出口直径D2.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel出口直径.Text = error; skyLabel出口直径.Visible = true; } if (string.IsNullOrEmpty(mTextBox出口宽度B2.Text) || mTextBox出口宽度B2.Text == "请输入出口宽度" || !double.TryParse(mTextBox出口宽度B2.Text, out v) || double.Parse(mTextBox出口宽度B2.Text) <= 0) { isOk = false; error = "请输入必填项!"; mTextBox出口宽度B2.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel出口宽度.Text = error; skyLabel出口宽度.Visible = true; } if (string.IsNullOrEmpty(mTextBoxEdit基圆直径D3.Text) || !double.TryParse(mTextBoxEdit基圆直径D3.Text, out v) || double.Parse(mTextBoxEdit基圆直径D3.Text) <= 0) { isOk = false; error = "请输入必填项!"; mTextBoxEdit基圆直径D3.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel基圆直径.Text = error; skyLabel基圆直径.Visible = true; } if (string.IsNullOrEmpty(mTextBox基圆宽度B3.Text) || !double.TryParse(mTextBox基圆宽度B3.Text, out v) || double.Parse(mTextBox基圆宽度B3.Text) <= 0) { isOk = false; error = "请输入必填项!"; mTextBox基圆宽度B3.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel基圆宽度.Text = error; skyLabel基圆宽度.Visible = true; } if (isOk) { if (double.Parse(mTextBoxEdit基圆直径D3.Text) <= double.Parse(mTextBoxEdit出口直径D2.Text) + 2) { isOk = false; error = "基圆直径要大于叶轮外径"; mTextBoxEdit基圆直径D3.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel基圆直径.Text = error; skyLabel基圆直径.Visible = true; } if (double.Parse(mTextBox基圆宽度B3.Text) <= double.Parse(mTextBox出口宽度B2.Text)) { isOk = false; error = "基圆宽度要大于叶轮宽度"; mTextBox基圆宽度B3.TrailingIcon = GlobalResource.GetTipTrailingIcon(); skyLabel基圆宽度.Text = error; skyLabel基圆宽度.Visible = true; } } return isOk; } double ns = 0; private void CalcNs() { if (string.IsNullOrEmpty(this.mTextBoxEdit总流量.Text)) return; if (string.IsNullOrEmpty(this.mTextBoxEdit扬程.Text)) return; if (string.IsNullOrEmpty(this.mTextBoxEdit转速.Text)) return; var Q = Convert.ToDouble(this.mTextBoxEdit总流量.Text); var H = Convert.ToDouble(this.mTextBoxEdit扬程.Text); var n = Convert.ToDouble(this.mTextBoxEdit转速.Text); if (Q < 1 || H < 1 || n < 10) { return; } var IsSXB = this.RBtn双吸泵.Checked; var calc_q = Q; if (IsSXB) calc_q = Q / 2; ns = Math.Round(3.65 * n * Math.Sqrt(calc_q / 3600) / Math.Pow(H, 0.75), 2); labelNs.Text = string.Format(" 比转速:{0}", ns); } private void BuildIcon() { mTextBoxEdit总流量.LeadingIcon = GlobalResource.GetLeadingIcon(); mTextBoxEdit转速.LeadingIcon = GlobalResource.GetLeadingIcon(); mTextBoxEdit扬程.LeadingIcon = GlobalResource.GetLeadingIcon(); mTextBoxEdit出口直径D2.LeadingIcon = GlobalResource.GetLeadingIcon(); mTextBox出口宽度B2.LeadingIcon = GlobalResource.GetLeadingIcon(); //mTextBoxEdit速度系数.LeadingIcon = GlobalResource.GetLeadingIcon(); mTextBoxEdit基圆直径D3.LeadingIcon = GlobalResource.GetLeadingIcon(); mTextBox基圆宽度B3.LeadingIcon = GlobalResource.GetLeadingIcon(); } private void BuildAllTips() { //metroToolTip提示.SetToolTip(this.RBtn螺旋型, "螺旋型"); //metroToolTip提示.SetToolTip(this.RBtn双蜗壳型, "双蜗壳型"); //metroToolTip提示.SetToolTip(this.RBtn环型, "环型"); //metroToolTip提示.SetToolTip(this.RBtn准螺旋型, "准螺旋型"); //metroToolTip提示.SetToolTip(this.mTextBoxEdit总流量, "总流量"); //metroToolTip提示.SetToolTip(this.mTextBoxEdit转速, "转速"); //metroToolTip提示.SetToolTip(this.mTextBoxEdit扬程, "扬程"); //metroToolTip提示.SetToolTip(this.mTextBoxEdit出口直径, "出口直径"); //metroToolTip提示.SetToolTip(this.mTextBoxEdit出口宽度, "出口宽度"); //metroToolTip提示.SetToolTip(this.mTextBoxEdit基圆直径, "D3 解释"); //metroToolTip提示.SetToolTip(this.mTextBoxEdit基圆宽度, "b3 解释"); } private void pictureBox1_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(mTextBox出口宽度B2.Text)) return; var b2 = double.Parse(mTextBox出口宽度B2.Text); double b3 = 0; if (b2 <= 7) b3 = b2 * 3; if (b2 <= 32 && b2 > 7) b3 = b2 * 2; if (b2 > 32 && b2 <= 60) b3 = b2 * 1.5; if (b2 > 60) b3 = b2 * 1.2; mTextBox基圆宽度B3.Text = b3.ToString(); if (string.IsNullOrEmpty(mTextBoxEdit出口直径D2.Text)) return; double D2 = double.Parse(mTextBoxEdit出口直径D2.Text); double D3 = (int)(1.05 * D2); mTextBoxEdit基圆直径D3.Text = D3.ToString(); //计算并设置FAIO double FAI0 = 0;//, FAI0min, FAI0max; if (ns < 100) { FAI0 = 25 + (int)(ns / 20); // FAI0min = 25.0; // FAI0max = 30.0; } if (ns >= 100 && ns < 200) { FAI0 = 30 + (int)((ns - 100) / 12.5); // FAI0min = 30.0; // FAI0max = 38.0; } if (ns >= 200 && ns < 300) { FAI0 = 38 + (int)((ns - 200) / 50); // FAI0min = 38.0; // FAI0max = 40.0; } if (ns > 300) { FAI0 = 42; // FAI0min = 40.0; // FAI0max = 45.0; } mTextBoxEdit隔舌安放角.Text = FAI0.ToString(); } private void mTextBoxEdit总流量_TextChanged(object sender, EventArgs e) { double v = 0; if (!double.TryParse(mTextBoxEdit总流量.Text, out v)) { MessageBox.Show("请输入数字格式!"); return; } CalcNs(); } private void mTextBoxEdit扬程_TextChanged(object sender, EventArgs e) { double v = 0; if (!double.TryParse(mTextBoxEdit扬程.Text, out v)) { MessageBox.Show("请输入数字格式!"); return; } CalcNs(); } private void mTextBoxEdit转速_TextChanged(object sender, EventArgs e) { double v = 0; if (!double.TryParse(mTextBoxEdit转速.Text, out v)) { MessageBox.Show("请输入数字格式!"); return; } CalcNs(); } private void RBtn双吸泵_CheckedChanged(object sender) { CalcNs(); } private void btnNextStep_Click(object sender, EventArgs e) { NextStep(); } } }