ÎļþÃû´Ó WinFrmUI/Yw.WinFrmUI.Phart.Core/v2/02-pump/01-view/PumpVariableSpeedChart.cs ÐÞ¸Ä |
| | |
| | | |
| | | public event Action<PumpCoordinate> OnCurveCoordinateChanged; |
| | | |
| | | public event Action<string, PumpGroupPt> OnCalcQueryPoint = null; |
| | | public event Action<string, PumpQueryPointViewModel> OnCalcQueryPoint = null; |
| | | |
| | | public event Action AddBySpeedEvent = null; |
| | | |
| | |
| | | var equip_paras = EquipCurveHelper.CalcEquipCurve(vm.QhCalc, _equip_pt, dis_min_h, out Yw.Geometry.Point2d sect_pt); |
| | | if (equip_paras == null || sect_pt == null) |
| | | continue; |
| | | if (equip_paras.EquipCurve.IsInvalid()) |
| | | if (equip_paras.IsInvalid()) |
| | | continue; |
| | | var c_pt_qh = _diagram.DiagramToPoint(sect_pt.X, sect_pt.Y, _axis_x_flow, _axis_y_head); |
| | | dxArgs.Cache.DrawLine(pen, new Point((int)c_pt_qh.Point.X, (int)c_pt_qh.Point.Y - 10), new Point((int)c_pt_qh.Point.X, (int)c_pt_qh.Point.Y + 10)); |
| | |
| | | |
| | | if (vm.IsDefault) |
| | | { |
| | | var pts = equip_paras.EquipCurve.GetPointList().Select(x => new PointF((float)x.X, (float)x.Y)).ToArray(); |
| | | var pts = equip_paras.GetPointList().Select(x => new PointF((float)x.X, (float)x.Y)).ToArray(); |
| | | using var path = new System.Drawing.Drawing2D.GraphicsPath(); |
| | | var g_pts = new List<PointF>(); |
| | | foreach (var pt in pts) |
| | |
| | | /// <summary> |
| | | /// 计ç®å·¥ä½ç¹ |
| | | /// </summary> |
| | | public void CalcWorkPointByQ(double? work_flow = null) |
| | | public void CalcWorkPointByQ(double? x_flow = null) |
| | | { |
| | | if (!_line_visible) |
| | | { |
| | |
| | | var min_flow = def_vm.Qh.MinX; |
| | | var max_flow = def_vm.Qh.MaxX; |
| | | |
| | | work_flow ??= _equip_pt?.X ?? max_flow / 3 * 2; |
| | | if (work_flow < min_flow || work_flow > max_flow) |
| | | x_flow ??= _equip_pt?.X ?? max_flow / 3 * 2; |
| | | if (x_flow < min_flow || x_flow > max_flow) |
| | | return; |
| | | |
| | | var work_pt = new PumpGroupPt(0, 0, 0, 0, 0); |
| | | work_pt.Q = work_flow.Value; |
| | | work_pt.H = def_vm.QhCalc.GetPointY(work_flow.Value); |
| | | var work_pt = new PumpQueryPointViewModel(); |
| | | work_pt.Q = x_flow.Value; |
| | | work_pt.H = def_vm.QhCalc.GetPointY(x_flow.Value); |
| | | |
| | | var work_info_str_builder = new StringBuilder(); |
| | | work_info_str_builder.AppendLine($"æµé:{work_pt.Q.ToString("N1")} "); |
| | |
| | | if (def_vm.QpCalc != null) |
| | | { |
| | | work_pt.P = def_vm.QpCalc.GetPointY(work_pt.Q); |
| | | work_pt.E = PumpCalcHelper.CalculateE(work_pt.Q, work_pt.H, work_pt.P); |
| | | work_pt.E = PumpCalcHelper.CalculateE(work_pt.Q, work_pt.H, work_pt.P.Value); |
| | | } |
| | | else |
| | | { |
| | | work_pt.E = def_vm.QeCalc.GetPointY(work_pt.Q); |
| | | } |
| | | work_info_str_builder.AppendLine($"æç:{work_pt.E.ToString("N2")} "); |
| | | work_info_str_builder.AppendLine($"æç:{work_pt.E.Value.ToString("N2")} "); |
| | | } |
| | | if (def_vm.QpCalc != null) |
| | | { |
| | | work_pt.P = def_vm.QpCalc.GetPointY(work_pt.Q); |
| | | work_info_str_builder.Append($"åç:{work_pt.P.ToString("N1")} "); |
| | | work_info_str_builder.Append($"åç:{work_pt.P.Value.ToString("N1")} "); |
| | | } |
| | | |
| | | _anno_txt_query_info.Text = work_info_str_builder.ToString(); |
| | |
| | | { |
| | | if (vm.IsDefault) |
| | | continue; |
| | | var pump_work_pt = new PumpGroupPt(0, 0, 0, 0, 0); |
| | | var pump_work_pt = new PumpQueryPointViewModel(); |
| | | pump_work_pt.Q = vm.QhCalc.GetPointsX(work_pt.H).LastOrDefault(); |
| | | pump_work_pt.H = work_pt.H; |
| | | if (vm.QeCalc != null) |
| | |
| | | if (vm.QpCalc != null) |
| | | { |
| | | pump_work_pt.P = vm.QpCalc.GetPointY(pump_work_pt.Q); |
| | | pump_work_pt.E = PumpCalcHelper.CalculateE(pump_work_pt.Q, pump_work_pt.H, pump_work_pt.P); |
| | | pump_work_pt.E = PumpCalcHelper.CalculateE(pump_work_pt.Q, pump_work_pt.H, pump_work_pt.P.Value); |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | work_flow ??= _max_flow / 3 * 2; |
| | | if (work_flow < _min_flow || work_flow > _max_flow) |
| | | x_flow ??= _max_flow / 3 * 2; |
| | | if (x_flow < _min_flow || x_flow > _max_flow) |
| | | return; |
| | | } |
| | | |
| | | _query_flow_line.AxisValue = work_flow; |
| | | _query_flow_line.Title.Text = work_flow.Value.ToString("N1"); |
| | | _query_flow_line.AxisValue = x_flow; |
| | | _query_flow_line.Title.Text = x_flow.Value.ToString("N1"); |
| | | } |
| | | |
| | | /// <summary> |