duheng
2024-12-24 6936ebf1dfbd0025d3e86ae7dde316b6a6e43b9b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
namespace HStation.WinFrmUI
{
    public partial class PumpChartViewCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public PumpChartViewCtrl()
        {
            InitializeComponent();
        }
 
        private Yw.Vmo.PhartDiagramExGraphListVmo _vmo = null;
        private Yw.WinFrmUI.Phart.PumpCurveViewModel _vm = null;
 
        /// <summary>
        /// 数据变更事件
        /// </summary>
        public event Action<Yw.Vmo.PhartDiagramExGraphListVmo> DataChangedEvent;
 
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(Yw.Vmo.PhartDiagramExGraphListVmo vmo, double nr)
        {
            _vmo = vmo;
            if (vmo == null)
            {
                ClearBindingData();
                return;
            }
            var vm_list = vmo.GetPumpCurveViewMdoelList();
            if (vm_list == null || !vm_list.Any())
            {
                ClearBindingData();
                return;
            }
            var vm_def = vmo.GetDefaultPumpCurveViewMdoel();
            if (vm_def == null)
                return;
 
            var vm_v_speed_list = vmo.GetVariableSpeedPumpCurveViewMdoelList();
            var vm_e_eff_list = vmo.GetCurveEqualEViewMdoelList();
 
            var vm = new Yw.WinFrmUI.Phart.PumpCurveViewModel();
            vm.Id = "";
            vm.ColorQH = Color.Blue;
            vm.ColorQE = Color.Green;
            vm.ColorQP = Color.Red;
            vm.CurveQHName = "QH";
            vm.CurveQPName = "QP";
            vm.CurveQH = vm_def.CurveQH.FeatCurve.GetPointList(50);
            vm.CurveQE = vm_def.CurveQE?.FeatCurve.GetPointList(50);
            vm.CurveQP = vm_def.CurveQP?.FeatCurve.GetPointList(50);
            vm.PointListQH = vm.CurveQH;
            vm.PointListQE = vm.CurveQE;
            vm.PointListQP = vm.CurveQP;
            vm.Equip = null;
            if (vm_e_eff_list == null || !vm_e_eff_list.Any())
            {
                var curve_qe = vm_def.CurveQE.FeatCurve;
                if (curve_qe != null && curve_qe.IsValid())
                {
                    var max_eff = curve_qe.GetPointList().Max(x => x.Y);
                    var eff_list = EqualParaCurveEListHelper.CalcEqualParaCurveE(vm_def, 50, 30, max_eff - 1);
                    if (eff_list != null && eff_list.Any())
                    {
                        vm.EqualEffList = new List<Yw.WinFrmUI.Phart.PumpCurveEqualEffViewModel>();
                        foreach (var item in eff_list)
                        {
                            var def_pt_list = item.DefinePoints;
                            var eff_vm = new Yw.WinFrmUI.Phart.PumpCurveEqualEffViewModel();
                            eff_vm.Id = Guid.NewGuid().ToString();
                            eff_vm.CurveName = $"{item.Eff:N1}";
                            eff_vm.Color = Color.DarkGreen;
                            eff_vm.CurveEqualEff = item.DefinePoints;
                            eff_vm.Tension = item.Tension;
                            eff_vm.IsClosed = item.IsClosed;
                            vm.EqualEffList.Add(eff_vm);
                        }
                    }
                }
            }
 
            //vm.VariableSpeedList = new List<Yw.WinFrmUI.Phart.PumpChartVariableSpeedViewModel>(); 
            //vm.EqualPowerList = new List<Yw.WinFrmUI.Phart.PumpChartEqualPowerViewModel>(); 
            //for (int eff = 30; eff < 90; eff += 1)
            //{
            //    var ve = new Yw.WinFrmUI.Phart.PumpChartEqualEffViewModel();
            //    //ve.Id = rhs.Id;
            //    ve.CurveName = $"{eff}";
            //    ve.Color = Color.ForestGreen;
            //    ve.CurveEqualEff = new List<Yw.Geometry.Point2d>();
            //    for (int hz = 30; hz <= 50; hz += 5)
            //    {
            //        var qe = vm_defult.CurveQE.ToNewByN(50, hz);
            //        var q_array = qe.FeatCurve.GetPointsX(eff);
            //        if (q_array == null || !q_array.Any())
            //        {
            //            continue;
            //        }
            //        var qh = vm_defult.CurveQH.ToNewByN(50, hz);
            //        var flow = q_array.FirstOrDefault();
            //        var head = qh.FeatCurve.GetPointY(flow);
            //        ve.CurveEqualEff.Add(new Yw.Geometry.Point2d(flow, head));
            //    }
            //    if (!ve.CurveEqualEff.Any())
            //    {
            //        continue;
            //    }
 
            //    vm.EqualEffList.Add(ve);
            //}
 
            //for (int hz = 30; hz < 50; hz += 5)
            //{
            //    var tN = nr * hz / 50;
            //    var vs = new Yw.WinFrmUI.Phart.PumpChartVariableSpeedViewModel();
            //    vs.CurveQHName = $"{tN}";
            //    vs.CurveQPName = $"{tN}";
            //    vs.CurveQH = vm_defult.CurveQH.GetPointListByN(nr, tN, 50);
            //    vs.CurveQE = vm_defult.CurveQE.GetPointListByN(nr, tN, 50);
            //    vs.CurveQP = vm_defult.CurveQP.GetPointListByN(nr, tN, 50);
            //    vs.Hz = hz;
            //    vs.N = tN;
            //    vm.VariableSpeedList.Add(vs);
            //}
 
            this.pumpChart1.SetBindingData(vm);
        }
    
        /// <summary>
        /// 清空绑定数据
        /// </summary>
        public void ClearBindingData()
        {
            this.pumpChart1.ClearBindingData();
        }
 
        /// <summary>
        /// 获取
        /// </summary> 
        public Yw.Vmo.PhartDiagramExGraphListVmo Get()
        {
            return new Yw.Vmo.PhartDiagramExGraphListVmo();
        }
 
        private void barCekEffVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
 
        }
 
        private void barCekPowerVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
 
        }
 
        private void barCekSplitPanel_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
 
        }
    }
}