From 0f99d4d12f2eae29bbe343f4b3131f2faeccda5d Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期二, 14 一月 2025 17:31:20 +0800 Subject: [PATCH] 泵曲线修改 --- WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartGraphHelper.cs | 63 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/00-core/01-coordinate/PumpCoordinate_Disp.cs | 24 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/等效线/EqualParaCurveEListHelper.cs | 3 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled2.svg | 15 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-variable-speed/SetValueDlg.cs | 1 WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj | 4 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs | 46 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/07-PumpChart/PumpChartMainPage.cs | 8 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.Designer.cs | 51 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.resx | 18 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.Designer.cs | 60 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/00-core/01-coordinate/UniversalCoordinate_Disp.cs | 16 WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/01-view/ValveViewChart.cs | 208 +- WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/03-import/03-point/PumpChartPointImportCtrl.cs | 30 Vmo/HStation.Vmo.PhartRelation.Core/HStation.Vmo.PhartRelation.Core.csproj | 2 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-parallel/PumpParallelChart.cs | 38 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - 复制.cs | 1064 ++++++++++++++++ WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled3.svg | 15 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - 复制.resx | 120 + WinFrmUI/HStation.WinFrmUI.Assets.Core/HStation.WinFrmUI.Assets.Core.csproj | 2 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled.svg | 15 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_add.svg | 15 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/01-operation/PumpOperationChart.cs | 52 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs | 618 ++++++-- WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/HStation.WinFrmUI.PhartRelation.Core.csproj | 2 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs | 933 ++++++++------ WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/02-working-view/PumpWorkingViewChart.cs | 42 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/02-edit/ValveChartEditCtrl.cs | 2 WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/03-view-model/01-curve/EqualEViewModel.cs | 7 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_add1.svg | 15 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/01-viewmodel/PumpCurveViewModel.cs | 10 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - 复制.Designer.cs | 198 +++ Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs | 4 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled1.svg | 15 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChartViewModel.cs | 61 35 files changed, 2,893 insertions(+), 884 deletions(-) diff --git a/Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs b/Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs index bec331e..1256b20 100644 --- a/Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs +++ b/Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs @@ -19,7 +19,9 @@ new Yw.BLL.HydroDbFirstHelper().Initial();//hydro new Yw.BLL.AuthDbFirstHelper().Initial();//auth - new BLL.AssetsDbFirstHelper().Initial(); + new BLL.PhartRelationDbFirstHelper().Initial(); + + new Yw.BLL.PhartDbFirstHelper().Initial(); new BLL.PhartRelationDbFirstHelper().Initial(); } } diff --git a/Vmo/HStation.Vmo.PhartRelation.Core/HStation.Vmo.PhartRelation.Core.csproj b/Vmo/HStation.Vmo.PhartRelation.Core/HStation.Vmo.PhartRelation.Core.csproj index 0b8d4a5..69fec07 100644 --- a/Vmo/HStation.Vmo.PhartRelation.Core/HStation.Vmo.PhartRelation.Core.csproj +++ b/Vmo/HStation.Vmo.PhartRelation.Core/HStation.Vmo.PhartRelation.Core.csproj @@ -13,7 +13,7 @@ </ItemGroup> <ItemGroup> - <PackageReference Include="Yw.Vmo.Phart.Core" Version="3.0.1" /> + <PackageReference Include="Yw.Vmo.Phart.Core" Version="3.0.2" /> </ItemGroup> <ItemGroup> diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/07-PumpChart/PumpChartMainPage.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/07-PumpChart/PumpChartMainPage.cs index ec9ca1b..3e057cc 100644 --- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/07-PumpChart/PumpChartMainPage.cs +++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/07-PumpChart/PumpChartMainPage.cs @@ -9,8 +9,7 @@ public PumpChartMainPage() { InitializeComponent(); - this.phartDiagramRelationListCtrl1.SelectedChangedEvent += PhartDiagramRelationListCtrl1_SelectedChangedEvent; - this.pumpChartViewCtrl1.DataChangedEvent += PumpChartViewCtrl1_DataChangedEvent; + this.phartDiagramRelationListCtrl1.SelectedChangedEvent += PhartDiagramRelationListCtrl1_SelectedChangedEvent; } private AssetsPumpMainVmo _vmo; @@ -33,18 +32,19 @@ this.phartDiagramRelationListCtrl1.SetBindingData(_allBindingList); } - private async void PumpChartViewCtrl1_DataChangedEvent(Yw.Vmo.PhartDiagramExGraphListVmo vmo) + private async Task<bool> PumpChartViewCtrl1_DataChangedEvent(Yw.Vmo.PhartDiagramExGraphListVmo vmo) { var bol = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Update(vmo); if (!bol) { TipFormHelper.ShowError("鏇存柊澶辫触锛�"); - return; + } else { TipFormHelper.ShowSucceed("鏇存柊鎴愬姛锛�"); } + return bol; } //閫夋嫨鏀瑰彉 diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/HStation.WinFrmUI.Assets.Core.csproj b/WinFrmUI/HStation.WinFrmUI.Assets.Core/HStation.WinFrmUI.Assets.Core.csproj index 2b8d43c..0071fa5 100644 --- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/HStation.WinFrmUI.Assets.Core.csproj +++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/HStation.WinFrmUI.Assets.Core.csproj @@ -219,7 +219,7 @@ <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" /> <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2535.41" /> <PackageReference Include="Yw.BLL.Assets.Core" Version="3.0.1" /> - <PackageReference Include="Yw.BLL.Phart.Core" Version="3.0.5" /> + <PackageReference Include="Yw.BLL.Phart.Core" Version="3.0.6" /> </ItemGroup> <ItemGroup> diff --git "a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/\347\255\211\346\225\210\347\272\277/EqualParaCurveEListHelper.cs" "b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/\347\255\211\346\225\210\347\272\277/EqualParaCurveEListHelper.cs" index 0f5837f..2d0353f 100644 --- "a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/\347\255\211\346\225\210\347\272\277/EqualParaCurveEListHelper.cs" +++ "b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/\347\255\211\346\225\210\347\272\277/EqualParaCurveEListHelper.cs" @@ -1383,6 +1383,7 @@ equalCurve.IsClosed = false; equalCurve.DefinePoints = curveSmall; equalCurve.Eff = currentEta; + equalCurve.IsUShaped = true; equalCurves.Add(equalCurve); } else @@ -1393,6 +1394,7 @@ equalCurve.IsClosed = false; equalCurve.DefinePoints = curveSmall; equalCurve.Eff = currentEta; + equalCurve.IsUShaped = false; equalCurves.Add(equalCurve); } if (!isMergeCurve) @@ -1403,6 +1405,7 @@ equalCurve.IsClosed = false; equalCurve.DefinePoints = curveLarge; equalCurve.Eff = currentEta; + equalCurve.IsUShaped = false; equalCurves.Add(equalCurve); } } diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.Designer.cs index beb1295..627be70 100644 --- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.Designer.cs +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.Designer.cs @@ -45,7 +45,6 @@ barCekEqulEffVisible = new DevExpress.XtraBars.BarCheckItem(); barCekEqVisible = new DevExpress.XtraBars.BarCheckItem(); barBtnEqClear = new DevExpress.XtraBars.BarButtonItem(); - bar2 = new DevExpress.XtraBars.Bar(); barBtnAddVariableSpeedMenu = new DevExpress.XtraBars.BarSubItem(); barBtnAddVariableSpeedByN = new DevExpress.XtraBars.BarButtonItem(); barBtnAddVariableSpeedByHz = new DevExpress.XtraBars.BarButtonItem(); @@ -65,21 +64,22 @@ // pumpViewChart1 // pumpViewChart1.Dock = DockStyle.Fill; - pumpViewChart1.Location = new Point(0, 69); + pumpViewChart1.LineVisible = false; + pumpViewChart1.Location = new Point(0, 68); pumpViewChart1.Name = "pumpViewChart1"; - pumpViewChart1.Size = new Size(1369, 855); + pumpViewChart1.Size = new Size(1369, 856); + pumpViewChart1.SplitPanel = false; pumpViewChart1.TabIndex = 0; // // barManager1 // - barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { bar1, bar2 }); + barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { bar1 }); barManager1.DockControls.Add(barDockControlTop); barManager1.DockControls.Add(barDockControlBottom); barManager1.DockControls.Add(barDockControlLeft); barManager1.DockControls.Add(barDockControlRight); barManager1.Form = this; barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barCekSplitPanel, barCekEffVisible, barCekPowerVisible, barTxtStartHead, barTxtPipeQ, barTxtPipeHead, barBtnSetEqPt, barCekEqVisible, barCekEqulEffVisible, barBtnEqClear, barBtnAddVariableSpeedMenu, barBtnAddVariableSpeedByN, barBtnAddVariableSpeedByHz, barBtnAddVariableSpeedByPoint, barBtnAddEqualEffMenu, barBtnAddEqualEffByEff }); - barManager1.MainMenu = bar2; barManager1.MaxItemId = 25; barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repTxtStartHead, repTxtPipeQ, repTxtPipeHead }); // @@ -89,7 +89,7 @@ bar1.DockCol = 0; bar1.DockRow = 0; bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top; - bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barCekSplitPanel), new DevExpress.XtraBars.LinkPersistInfo(barCekEffVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekPowerVisible), new DevExpress.XtraBars.LinkPersistInfo(barTxtPipeQ), new DevExpress.XtraBars.LinkPersistInfo(barTxtPipeHead), new DevExpress.XtraBars.LinkPersistInfo(barTxtStartHead), new DevExpress.XtraBars.LinkPersistInfo(barBtnSetEqPt), new DevExpress.XtraBars.LinkPersistInfo(barCekEqulEffVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekEqVisible), new DevExpress.XtraBars.LinkPersistInfo(barBtnEqClear) }); + bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnAddVariableSpeedMenu), new DevExpress.XtraBars.LinkPersistInfo(barBtnAddEqualEffMenu), new DevExpress.XtraBars.LinkPersistInfo(barCekSplitPanel), new DevExpress.XtraBars.LinkPersistInfo(barCekEffVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekPowerVisible), new DevExpress.XtraBars.LinkPersistInfo(barTxtPipeQ), new DevExpress.XtraBars.LinkPersistInfo(barTxtPipeHead), new DevExpress.XtraBars.LinkPersistInfo(barTxtStartHead), new DevExpress.XtraBars.LinkPersistInfo(barBtnSetEqPt), new DevExpress.XtraBars.LinkPersistInfo(barCekEqulEffVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekEqVisible), new DevExpress.XtraBars.LinkPersistInfo(barBtnEqClear) }); bar1.OptionsBar.AllowQuickCustomization = false; bar1.OptionsBar.DrawBorder = false; bar1.OptionsBar.MultiLine = true; @@ -215,45 +215,36 @@ barBtnEqClear.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph; barBtnEqClear.ItemClick += barBtnEqClear_ItemClick; // - // bar2 - // - bar2.BarName = "Custom 3"; - bar2.DockCol = 0; - bar2.DockRow = 1; - bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top; - bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnAddVariableSpeedMenu), new DevExpress.XtraBars.LinkPersistInfo(barBtnAddEqualEffMenu) }); - bar2.OptionsBar.DrawBorder = false; - bar2.OptionsBar.MultiLine = true; - bar2.OptionsBar.UseWholeRow = true; - bar2.Text = "Custom 3"; - // // barBtnAddVariableSpeedMenu // barBtnAddVariableSpeedMenu.Caption = "鍙橀�熸洸绾�"; barBtnAddVariableSpeedMenu.Id = 17; - barBtnAddVariableSpeedMenu.ImageOptions.SvgImage = PhartRelation.Core.Properties.Resources.menu; + barBtnAddVariableSpeedMenu.ImageOptions.SvgImage = PhartRelation.Core.Properties.Resources.actions_add; barBtnAddVariableSpeedMenu.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnAddVariableSpeedByN), new DevExpress.XtraBars.LinkPersistInfo(barBtnAddVariableSpeedByHz), new DevExpress.XtraBars.LinkPersistInfo(barBtnAddVariableSpeedByPoint) }); barBtnAddVariableSpeedMenu.Name = "barBtnAddVariableSpeedMenu"; barBtnAddVariableSpeedMenu.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph; // // barBtnAddVariableSpeedByN // - barBtnAddVariableSpeedByN.Caption = "娣诲姞(杞��)"; + barBtnAddVariableSpeedByN.Caption = "杞��"; barBtnAddVariableSpeedByN.Id = 18; + barBtnAddVariableSpeedByN.ImageOptions.SvgImage = PhartRelation.Core.Properties.Resources.actions_addcircled; barBtnAddVariableSpeedByN.Name = "barBtnAddVariableSpeedByN"; barBtnAddVariableSpeedByN.ItemClick += barBtnAddVariableSpeedByN_ItemClick; // // barBtnAddVariableSpeedByHz // - barBtnAddVariableSpeedByHz.Caption = "娣诲姞(棰戠巼)"; + barBtnAddVariableSpeedByHz.Caption = "棰戠巼"; barBtnAddVariableSpeedByHz.Id = 19; + barBtnAddVariableSpeedByHz.ImageOptions.SvgImage = PhartRelation.Core.Properties.Resources.actions_addcircled1; barBtnAddVariableSpeedByHz.Name = "barBtnAddVariableSpeedByHz"; barBtnAddVariableSpeedByHz.ItemClick += barBtnAddVariableSpeedByHz_ItemClick; // // barBtnAddVariableSpeedByPoint // - barBtnAddVariableSpeedByPoint.Caption = "娣诲姞(鐐�)"; + barBtnAddVariableSpeedByPoint.Caption = "璁捐鐐�"; barBtnAddVariableSpeedByPoint.Id = 20; + barBtnAddVariableSpeedByPoint.ImageOptions.SvgImage = PhartRelation.Core.Properties.Resources.actions_addcircled2; barBtnAddVariableSpeedByPoint.Name = "barBtnAddVariableSpeedByPoint"; barBtnAddVariableSpeedByPoint.ItemClick += barBtnAddVariableSpeedByPoint_ItemClick; // @@ -261,15 +252,16 @@ // barBtnAddEqualEffMenu.Caption = "绛夋晥绾�"; barBtnAddEqualEffMenu.Id = 23; - barBtnAddEqualEffMenu.ImageOptions.SvgImage = PhartRelation.Core.Properties.Resources.menu1; + barBtnAddEqualEffMenu.ImageOptions.SvgImage = PhartRelation.Core.Properties.Resources.actions_add1; barBtnAddEqualEffMenu.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnAddEqualEffByEff) }); barBtnAddEqualEffMenu.Name = "barBtnAddEqualEffMenu"; barBtnAddEqualEffMenu.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph; // // barBtnAddEqualEffByEff // - barBtnAddEqualEffByEff.Caption = "娣诲姞(鏁堢巼)"; + barBtnAddEqualEffByEff.Caption = "鏁堢巼鐐�"; barBtnAddEqualEffByEff.Id = 24; + barBtnAddEqualEffByEff.ImageOptions.SvgImage = PhartRelation.Core.Properties.Resources.actions_addcircled3; barBtnAddEqualEffByEff.Name = "barBtnAddEqualEffByEff"; barBtnAddEqualEffByEff.ItemClick += barBtnAddEqualEffByEff_ItemClick; // @@ -279,7 +271,7 @@ barDockControlTop.Dock = DockStyle.Top; barDockControlTop.Location = new Point(0, 0); barDockControlTop.Manager = barManager1; - barDockControlTop.Size = new Size(1369, 69); + barDockControlTop.Size = new Size(1369, 68); // // barDockControlBottom // @@ -293,17 +285,17 @@ // barDockControlLeft.CausesValidation = false; barDockControlLeft.Dock = DockStyle.Left; - barDockControlLeft.Location = new Point(0, 69); + barDockControlLeft.Location = new Point(0, 68); barDockControlLeft.Manager = barManager1; - barDockControlLeft.Size = new Size(0, 855); + barDockControlLeft.Size = new Size(0, 856); // // barDockControlRight // barDockControlRight.CausesValidation = false; barDockControlRight.Dock = DockStyle.Right; - barDockControlRight.Location = new Point(1369, 69); + barDockControlRight.Location = new Point(1369, 68); barDockControlRight.Manager = barManager1; - barDockControlRight.Size = new Size(0, 855); + barDockControlRight.Size = new Size(0, 856); // // PumpChartViewCtrl // @@ -346,7 +338,6 @@ private DevExpress.XtraBars.BarCheckItem barCekEqVisible; private DevExpress.XtraBars.BarCheckItem barCekEqulEffVisible; private DevExpress.XtraBars.BarButtonItem barBtnEqClear; - private DevExpress.XtraBars.Bar bar2; private DevExpress.XtraBars.BarSubItem barBtnAddVariableSpeedMenu; private DevExpress.XtraBars.BarButtonItem barBtnAddVariableSpeedByN; private DevExpress.XtraBars.BarButtonItem barBtnAddVariableSpeedByHz; diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs index e24c35a..edbcbc1 100644 --- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs @@ -1,4 +1,7 @@ 锘縰sing DevExpress.Spreadsheet; +using Mapster; +using StackExchange.Profiling.Internal; +using Yw.Ahart; using Yw.Geometry; using Yw.Pump; using Yw.WinFrmUI.Phart; @@ -12,25 +15,24 @@ InitializeComponent(); this.barCekEqVisible.Checked = true; this.barCekEqulEffVisible.Checked = true; - this.bar2.Visible = false; - this.barCekEqulEffVisible.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + this.barCekPowerVisible.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + this.barCekEqVisible.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + + this.barBtnAddVariableSpeedMenu.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + this.barBtnAddEqualEffMenu.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + this.barCekEqulEffVisible.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; } - private Yw.Vmo.PhartDiagramExGraphListVmo _vmo = null; - private Yw.WinFrmUI.Phart.PumpPerformCurveViewModel _model = null; - private Yw.WinFrmUI.Phart.PumpCurveViewModel _vm = null; - private bool _default_visible = true; + private Yw.Vmo.PhartDiagramExGraphListVmo _vmo = null; + private List<Yw.WinFrmUI.Phart.PumpViewChartViewModel> _vm_list = null; + + private string _coordinate = null; private bool _power_visible = true; private bool _eff_visible = true; private bool _equal_eff_visible = true; private bool _split_panel = true; - private double _nr; - - /// <summary> - /// 鏁版嵁鍙樻洿浜嬩欢 - /// </summary> - public event Action<Yw.Vmo.PhartDiagramExGraphListVmo> DataChangedEvent; + private double _nr; /// <summary> /// 缁戝畾鏁版嵁 @@ -39,118 +41,188 @@ { _vmo = vmo; _nr = nr; + _vm_list = null; + _coordinate = null; if (vmo == null) { ClearBindingData(); return; } - var vm_list = vmo.GetPumpCurveViewMdoelList(); - if (vm_list == null || !vm_list.Any()) + + var vm_list = new List<Yw.WinFrmUI.Phart.PumpViewChartViewModel>(); + if (vmo.GraphList == null || !vmo.GraphList.Any()) { ClearBindingData(); return; } - _model = vmo.GetDefaultPumpCurveViewMdoel(); - if (_model == null) + _coordinate = vmo.DispParas; + + foreach (var graph in vmo.GraphList) + { + double hz = 50; + double n = nr; + var curve_type = (Yw.Ahart.eCurveType)graph.GraphType; + switch (curve_type) + { + case Yw.Ahart.eCurveType.QH: + { + var paras = PhartGraphHelper.GetGraphParas<Yw.WinFrmUI.Phart.QHGraphParasViewModel>(curve_type, graph.GraphParas); + hz = paras.Hz; + n = paras.N; + } + break; + case Yw.Ahart.eCurveType.QP: + { + var paras = PhartGraphHelper.GetGraphParas<Yw.WinFrmUI.Phart.QPGraphParasViewModel>(curve_type, graph.GraphParas); + hz = paras.Hz; + n = paras.N; + } + break; + case Yw.Ahart.eCurveType.QE: + { + var paras = PhartGraphHelper.GetGraphParas<Yw.WinFrmUI.Phart.QEGraphParasViewModel>(curve_type, graph.GraphParas); + hz = paras.Hz; + n = paras.N; + } + break; + } + + var feat_curve = PhartGraphHelper.GetPerformCurve(curve_type, graph.GeometryInfo); + var geometry_paras = PhartGraphHelper.GetGeometryParas(curve_type, graph.GeometryParas); + var annotation_list = PhartGraphHelper.GetAnnotationParasList(curve_type, graph.AnnotationParas); + if (curve_type == eCurveType.QE) + annotation_list = null; + var vm = new Yw.WinFrmUI.Phart.PumpViewChartViewModel(); + vm.Id = graph.ID.ToString(); + vm.Hz = hz; + vm.N = n; + vm.AnnotationList = annotation_list; + vm.CurveType = feat_curve.CurveType; + vm.FeatType = feat_curve.FeatType; + vm.DefPointList = geometry_paras?.DefinePoints; + vm.FitPointList = feat_curve.FeatCurve.GetPointList(100); + if (vm.CurveType== eCurveType.EqualE) + vm.FitPointList = feat_curve.FeatCurve.GetPointList(10); + + vm.GraphParas = graph.GraphParas; + vm_list.Add(vm); + } + + _vm_list = vm_list; + _vm_list[0].IsSelect = true; + + SetColor(_vm_list); + SetBindingData(_vm_list, _coordinate, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + } + + /// <summary> + /// + /// </summary> + private void SetColor(List<Yw.WinFrmUI.Phart.PumpViewChartViewModel> vm_list) + { + if (vm_list == null || !vm_list.Any()) return; - - var vm_equal_eff_list = vmo.GetCurveEqualEViewMdoelList(); - var vm_variable_speed_eff_list = vmo.GetVariableSpeedPumpCurveViewMdoelList(); - - var vm = new Yw.WinFrmUI.Phart.PumpCurveViewModel(); - vm.Id = ""; - vm.ColorQH = Color.Blue; - vm.ColorQE = Color.Green; - vm.ColorQP = Color.Red; - vm.CurveQHName = $"{_nr}rpm({50}hz)"; - vm.CurveQPName = $"{_nr}rpm({50}hz)"; - vm.CurveQH = _model.CurveQH.FeatCurve.GetPointList(50); - vm.CurveQE = _model.CurveQE?.FeatCurve.GetPointList(50); - vm.CurveQP = _model.CurveQP?.FeatCurve.GetPointList(50); - vm.PointListQH = vm.CurveQH; - vm.PointListQE = vm.CurveQE; - vm.PointListQP = vm.CurveQP; - vm.Equip = null; - if (vm_equal_eff_list != null && vm_equal_eff_list.Any()) + var group = vm_list.GroupBy(x => x.Hz); + if (group.Count() > 1) { - vm.EqualEffList = new(); - foreach (var item in vm_equal_eff_list) + for (int i = 0; i < group.Count(); i++) { - 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); + var color = Yw.WinFrmUI.PhartColorHelper.Get(i); + var item = group.ElementAt(i); + foreach (var vm in item) + { + vm.Color = color; + if (vm.CurveType == eCurveType.EqualE) + vm.Color = Color.DarkGreen; + } } } - - if (vm_variable_speed_eff_list != null && vm_variable_speed_eff_list.Any()) + else { - vm.VariableSpeedList = new(); - var index = 0; - foreach (var item in vm_variable_speed_eff_list) + var item = group.ElementAt(0); + foreach (var vm in item) { - var vs_color = Yw.WinFrmUI.PhartColorHelper.Get(index); - var vs_vm = new Yw.WinFrmUI.Phart.PumpCurveVariableSpeedViewModel(); - vs_vm.Id = Guid.NewGuid().ToString(); - vs_vm.ColorQH = vs_color; - vs_vm.ColorQE = vs_color; - vs_vm.ColorQP = vs_color; - vs_vm.CurveQHName = $"{item.N}rpm({item.Hz}hz)"; - vs_vm.CurveQPName = $"{item.N}rpm({item.Hz}hz)"; - vs_vm.CurveQH = item.CurveQH.FeatCurve.GetPointList(30); - vs_vm.CurveQE = item.CurveQE.FeatCurve.GetPointList(30); - vs_vm.CurveQP = item.CurveQP.FeatCurve.GetPointList(30); - vs_vm.N = item.N; - vs_vm.Hz = item.Hz; - vm.VariableSpeedList.Add(vs_vm); - index++; - } + switch (vm.CurveType) + { + case Yw.Ahart.eCurveType.QH: vm.Color = Yw.WinFrmUI.Phart.PumpChartDisplay.CurveColorQH; break; + case Yw.Ahart.eCurveType.QP: vm.Color = Yw.WinFrmUI.Phart.PumpChartDisplay.CurveColorQP; break; + case Yw.Ahart.eCurveType.QE: vm.Color = Yw.WinFrmUI.Phart.PumpChartDisplay.CurveColorQE; break; + } + } } - - vm.VariableSpeedList = new List<PumpCurveVariableSpeedViewModel>(); - vm.EqualEffList = new List<PumpCurveEqualEffViewModel>(); - vm.EqualPowerList = new(); - - SetBindingData(vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); } /// <summary> /// 缁戝畾鏁版嵁 /// </summary> - public void SetBindingData(Yw.WinFrmUI.Phart.PumpCurveViewModel vm, bool default_visible, bool split_panel, bool eff_visible, bool power_visible, bool equal_eff_visible) + private void SetBindingData(List<Yw.WinFrmUI.Phart.PumpViewChartViewModel> vm_list, string coordinate, bool split_panel, bool eff_visible, bool power_visible, bool equal_eff_visible) { - _vm = vm; - if (vm == null) + if (IsInvalidData()) { ClearBindingData(); return; } - if (vm.VariableSpeedList != null && vm.VariableSpeedList.Any()) + var list = new List<Yw.WinFrmUI.Phart.PumpViewChartViewModel>(); + foreach (var item in vm_list) { - vm.ColorQH = vm.ColorQE = vm.ColorQP = Color.Black; + if (!eff_visible) + { + if (item.CurveType == eCurveType.QE) + { + continue; + }; + } + + if (!power_visible) + { + if (item.CurveType == eCurveType.QP) + { + continue; + }; + } + + if (!equal_eff_visible) + { + if (item.CurveType == eCurveType.EqualE) + { + continue; + }; + } + + list.Add(item); } - this.pumpViewChart1.SetBindingData(vm, default_visible, split_panel, eff_visible, power_visible, equal_eff_visible); + + this.pumpViewChart1.SetBindingData(list, coordinate, split_panel, eff_visible, power_visible, equal_eff_visible); } + //鏄惁鏄棤鏁堟暟鎹� + private bool IsInvalidData() + { + if (_vm_list == null || !_vm_list.Any()) + { + return true; + } + if (!_vm_list.Exists(x => x.CurveType == Yw.Ahart.eCurveType.QH)) + { + return true; + } + return false; + } /// <summary> /// 娓呯┖缁戝畾鏁版嵁 /// </summary> public void ClearBindingData() { - this.pumpViewChart1.ClearBindingData(); + this.pumpViewChart1.Clear(); } private void SetEquip() { - if (_vm == null) + if (_vmo == null) return; - if (!_vm.IsValid()) + if (_vm_list == null || !_vm_list.Any()) return; if (this.barTxtStartHead.EditValue == null) return; @@ -159,59 +231,57 @@ if (this.barTxtPipeQ.EditValue == null) return; + var qh50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QH); + if (qh50 == null) + return; + var start_head = Convert.ToDouble(this.barTxtStartHead.EditValue); var pipe_head = Convert.ToDouble(this.barTxtPipeHead.EditValue); var pipe_flow = Convert.ToDouble(this.barTxtPipeQ.EditValue); var equip_pt = new Yw.Geometry.Point2d(pipe_flow, pipe_head); - var qh_line = new Yw.Ahart.CurveQH(Yw.Ahart.eFeatType.Cubic, _vm.CurveQH); - var equip_line = Yw.Pump.PerformParabolaHelper.GetEquipCurvePointListByQH(qh_line, equip_pt, start_head, 30, true, out Yw.Geometry.Point2d sect_pt); - if (equip_line == null || sect_pt == null) + var equip_pt_list = Yw.Pump.PerformParabolaHelper.GetEquipCurvePointListByQH(qh50.FitPointList, equip_pt, start_head, 30, true, out Yw.Geometry.Point2d sect_pt); + if (equip_pt_list == null || sect_pt == null) { XtraMessageBox.Show("璁$畻澶辫触,璁捐鐐逛笉鍚堢悊!"); return; } - _vm.Equip = new Yw.WinFrmUI.Phart.PumpCurveEquipViewModel(); - _vm.Equip.Id = Guid.NewGuid().ToString(); - _vm.Equip.Color = Color.Black; - _vm.Equip.StartH = start_head; - _vm.Equip.PipeQ = pipe_flow; - _vm.Equip.PipeH = pipe_head; + var pump_sect_pt = new Yw.WinFrmUI.Phart.PumpSectPointViewModel(); + pump_sect_pt.Q = sect_pt.X; + pump_sect_pt.H = sect_pt.Y; - _vm.Equip.SectQ = sect_pt.X; - _vm.Equip.SectH = sect_pt.Y; - - if (_vm.CurveQP != null && _vm.CurveQP.Any()) + var qe50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QE); + if (qe50 != null) { - _vm.Equip.SectP = _vm.CurveQP.GetInterPointsY(sect_pt.X)?.FirstOrDefault(); + pump_sect_pt.E = qe50?.FitPointList?.GetInterPointsY(sect_pt.X)?.FirstOrDefault(); } - if (_vm.CurveQE != null && _vm.CurveQE.Any()) + var qp50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QP); + if (qp50 != null) { - _vm.Equip.SectE = _vm.CurveQE.GetInterPointsY(sect_pt.X)?.FirstOrDefault(); + pump_sect_pt.P = qp50?.FitPointList?.GetInterPointsY(sect_pt.X)?.FirstOrDefault(); } - _vm.Equip.CurveEquip = equip_line.GetPointList(Yw.Ahart.eFeatType.Cubic); - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + this.pumpViewChart1.SetEquip(equip_pt_list, pump_sect_pt); } private void barCekEffVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { _eff_visible = this.barCekEffVisible.Checked; - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + SetBindingData(_vm_list,_coordinate, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); } private void barCekPowerVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { _power_visible = this.barCekPowerVisible.Checked; - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + SetBindingData(_vm_list,_coordinate, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); } private void barCekSplitPanel_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { _split_panel = this.barCekSplitPanel.Checked; - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + SetBindingData(_vm_list,_coordinate, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); } private void barCekEqVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -222,15 +292,14 @@ } else { - _vm.Equip = null; - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + this.pumpViewChart1.SetEquip(null,null); } } private void barCekEqulEffVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { _equal_eff_visible = this.barCekEqulEffVisible.Checked; - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + SetBindingData(_vm_list,_coordinate, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); } private void barBtnEqClear_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -239,8 +308,7 @@ this.barTxtPipeQ.EditValue = null; this.barTxtPipeHead.EditValue = null; - _vm.Equip = null; - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + this.pumpViewChart1.SetEquip(null, null); } private void barBtnSetEqPt_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -270,9 +338,15 @@ private void AddByN() { - if (_vm == null) + if (IsInvalidData()) return; - var dlg = new SetValueDlg(); + var qh50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QH); + if (qh50 == null) + return; + var qe50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QE); + var qp50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QP); + + var dlg = new Yw.WinFrmUI.Phart.SetValueDlg(); dlg.SetBindingData(_nr); dlg.VerifyValueChanged += (speed) => { @@ -281,25 +355,18 @@ { return false; } + if (_vm_list.Exists(x => x.N == speed)) + { + TipFormHelper.ShowWarn("杞�熷凡瀛樺湪"); + return false; + } + hz = Math.Round(hz, 1); - var index = _vm.VariableSpeedList?.Count + 1 ?? 1; - var vs_color = Yw.WinFrmUI.PhartColorHelper.Get(index); - var vs_vm = new Yw.WinFrmUI.Phart.PumpCurveVariableSpeedViewModel(); - vs_vm.Id = Guid.NewGuid().ToString(); - vs_vm.ColorQH = vs_color; - vs_vm.ColorQE = vs_color; - vs_vm.ColorQP = vs_color; - vs_vm.CurveQHName = $"{speed}rpm({hz}hz)"; - vs_vm.CurveQPName = $"{speed}rpm({hz}hz)"; - vs_vm.CurveQH = _vm.CurveQH.GetQHPointListByN(50, hz); - vs_vm.CurveQE = _vm.CurveQE.GetQEPointListByN(50, hz); - vs_vm.CurveQP = _vm.CurveQP.GetQEPointListByN(50, hz); - vs_vm.N = speed; - vs_vm.Hz = hz; - _vm.VariableSpeedList.Add(vs_vm); - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + var pt_qh_list = qh50.FitPointList.GetQHPointListByN(50, hz); + var pt_qe_list = qe50?.FitPointList?.GetQEPointListByN(50, hz); + var pt_qp_list = qp50?.FitPointList?.GetQPPointListByN(50, hz); - //this.DataChangedEvent?.Invoke(); + Insert(hz,speed,pt_qh_list,pt_qe_list,pt_qp_list); return true; }; dlg.ShowDialog(); @@ -307,33 +374,36 @@ private void AddByHz() { - if (_vm == null) + if (IsInvalidData()) return; - var dlg = new SetValueDlg(); + + var qh50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QH); + if (qh50 == null) + return; + var qe50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QE); + var qp50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QP); + + var dlg = new Yw.WinFrmUI.Phart.SetValueDlg(); dlg.VerifyValueChanged += (hz) => { if (hz > 50 || hz < 10) { return false; } + if (_vm_list.Exists(x => x.Hz == hz)) + { + TipFormHelper.ShowWarn("棰戠巼宸插瓨鍦�"); + return false; + } var speed = Math.Round(hz / 50 * _nr); - var index = _vm.VariableSpeedList?.Count + 1 ?? 1; - var vs_color = Yw.WinFrmUI.PhartColorHelper.Get(index); - var vs_vm = new Yw.WinFrmUI.Phart.PumpCurveVariableSpeedViewModel(); - vs_vm.Id = Guid.NewGuid().ToString(); - vs_vm.ColorQH = vs_color; - vs_vm.ColorQE = vs_color; - vs_vm.ColorQP = vs_color; - vs_vm.CurveQHName = $"{speed}rpm({hz}hz)"; - vs_vm.CurveQPName = $"{speed}rpm({hz}hz)"; - vs_vm.CurveQH = _vm.CurveQH.GetQHPointListByN(50, hz); - vs_vm.CurveQE = _vm.CurveQE.GetQEPointListByN(50, hz); - vs_vm.CurveQP = _vm.CurveQP.GetQEPointListByN(50, hz); - vs_vm.N = speed; - vs_vm.Hz = hz; - _vm.VariableSpeedList.Add(vs_vm); - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + speed = Math.Round(speed, 1); + + var pt_qh_list = qh50.FitPointList.GetQHPointListByN(50, hz); + var pt_qe_list = qe50?.FitPointList?.GetQEPointListByN(50, hz); + var pt_qp_list = qp50?.FitPointList?.GetQPPointListByN(50, hz); + + Insert(hz, speed, pt_qh_list, pt_qe_list, pt_qp_list); return true; }; dlg.ShowDialog(); @@ -341,16 +411,22 @@ private void AddByPoint() { - if (_vm == null) + if (IsInvalidData()) return; - if (!_vm.IsValid()) + + var qh50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QH); + if (qh50 == null) return; - var dlg = new SetPointDlg(); + var qe50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QE); + var qp50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QP); + + var dlg = new Yw.WinFrmUI.Phart.SetPointDlg(); dlg.SetBindingData(); dlg.VerifyValueChanged += (x, y) => { var pt = new Yw.Geometry.Point2d(x, y); - var sect_pt = Yw.Pump.PerformParabolaHelper.GetQHSectPoint(_model.CurveQH, pt); + var curve = new Yw.Pump. CurveQH(qh50.FeatType, qh50.DefPointList); + var sect_pt = Yw.Pump.PerformParabolaHelper.GetQHSectPoint(curve, pt); if (sect_pt == null || sect_pt.IsZeroPoint()) return false; @@ -361,23 +437,16 @@ return false; } speed = Math.Round(speed, 1); - var index = _vm.VariableSpeedList?.Count + 1 ?? 1; - var vs_color = Yw.WinFrmUI.PhartColorHelper.Get(index); - var vs_vm = new Yw.WinFrmUI.Phart.PumpCurveVariableSpeedViewModel(); - vs_vm.Id = Guid.NewGuid().ToString(); - vs_vm.ColorQH = vs_color; - vs_vm.ColorQE = vs_color; - vs_vm.ColorQP = vs_color; - vs_vm.CurveQHName = $"{speed}rpm({hz}hz)"; - vs_vm.CurveQPName = $"{speed}rpm({hz}hz)"; - vs_vm.CurveQH = _vm.CurveQH.GetQHPointListByN(50, hz); - vs_vm.CurveQE = _vm.CurveQE.GetQEPointListByN(50, hz); - vs_vm.CurveQP = _vm.CurveQP.GetQEPointListByN(50, hz); - vs_vm.N = speed; - vs_vm.Hz = hz; - _vm.VariableSpeedList.Add(vs_vm); - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); + if (_vm_list.Exists(x => x.N == speed)) + { + TipFormHelper.ShowWarn("杞�熷凡瀛樺湪"); + return false; + } + var pt_qh_list = qh50.FitPointList.GetQHPointListByN(50, hz); + var pt_qe_list = qe50?.FitPointList?.GetQEPointListByN(50, hz); + var pt_qp_list = qp50?.FitPointList?.GetQPPointListByN(50, hz); + Insert(hz, speed, pt_qh_list, pt_qe_list, pt_qp_list); return true; }; dlg.ShowDialog(); @@ -385,52 +454,229 @@ private void AddByEff() { - if (_vm == null) + if (IsInvalidData()) return; - if (!_vm.IsValid()) + var qh50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QH); + if (qh50 == null) return; - if (_vm.CurveQE == null || !_vm.CurveQE.Any()) + var qe50 = _vm_list.Find(x => x.Hz == 50 && x.CurveType == Yw.Ahart.eCurveType.QE); + if (qe50 == null) return; + var dlg = new SetEffDlg(); dlg.SetBindingData(); dlg.VerifyValueChanged += (eff_double_list) => { double max_hz = 50; double min_hz = 30; - if (_vm.VariableSpeedList != null && _vm.VariableSpeedList.Any()) - { - max_hz = Math.Max(max_hz, _vm.VariableSpeedList.Max(x => x.Hz)); - min_hz = Math.Min(min_hz, _vm.VariableSpeedList.Min(x => x.Hz)); - } + + max_hz = Math.Max(max_hz, _vm_list.Max(x => x.Hz)); + min_hz = Math.Min(min_hz, _vm_list.Min(x => x.Hz)); + + var qh = new Yw.Pump.CurveQH(qh50.FeatType, qh50.DefPointList); + var qe = new Yw.Pump.CurveQE(qe50.FeatType, qe50.DefPointList); foreach (var eff in eff_double_list) { - var eff_list = EqualParaCurveEListHelper.CalcEqualParaCurveE(_model.CurveQH, _model.CurveQE, max_hz, min_hz, eff); + var eff_list = EqualParaCurveEListHelper.CalcEqualParaCurveE(qh, qe, max_hz, min_hz, eff); if (eff_list != null && eff_list.Any()) { 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); + { + Insert(item.Eff,item.Tension,item.IsClosed,item.IsUShaped,item.DefinePoints); } } } - - SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible, _equal_eff_visible); - + return true; }; dlg.ShowDialog(); } + + private async void Insert(double hz, double speed, List<Yw.Geometry.Point2d> pt_qh_list, List<Yw.Geometry.Point2d> pt_qe_list, List<Yw.Geometry.Point2d> pt_qp_list) + { + var list = new List<Yw.Vmo.PhartGraphVmo>(); + var graph_qh = new Yw.Vmo.PhartGraphVmo() + { + Name = "鎵▼绾�", + GraphType = (int)Yw.Ahart.eCurveType.QH, + GraphParas = new QHGraphParasViewModel() + { + Hz = hz, + N = speed, + }.ToJson(), + GeometryParas = new Yw.WinFrmUI.Phart.CurveGeometryParasViewModel + { + DefinePoints = pt_qh_list + }.ToJson(), + GeometryStyle = (int)HStation.PhartRelation.eGeometryStyle.FeatCurve, + GeometryInfo = pt_qh_list.ToDbString(Yw.Ahart.eCurveType.QH, Yw.Ahart.eFeatType.Cubic), + AnnotationParas = new List<Yw.WinFrmUI.Phart.AnnotationParasViewModel>() + { + new () + { + X = pt_qh_list.Last().X, + Y = pt_qh_list.Last().Y, + Text = $"{speed}rpm({hz}hz)", + Aligment = eTextAligment.Right + } + }.ToJson() + }; + + list.Add(graph_qh); + if (pt_qe_list != null && pt_qe_list.Any()) + { + var graph_qe = new Yw.Vmo.PhartGraphVmo() + { + Name = "鏁堢巼绾�", + GraphType = (int)Yw.Ahart.eCurveType.QE, + GraphParas = new QEGraphParasViewModel() + { + Hz = hz, + N = speed, + }.ToJson(), + GeometryParas = new Yw.WinFrmUI.Phart.CurveGeometryParasViewModel + { + DefinePoints = pt_qe_list + }.ToJson(), + GeometryStyle = (int)HStation.PhartRelation.eGeometryStyle.FeatCurve, + GeometryInfo = pt_qe_list.ToDbString(Yw.Ahart.eCurveType.QE, Yw.Ahart.eFeatType.Cubic), + AnnotationParas = new List<Yw.WinFrmUI.Phart.AnnotationParasViewModel>() + { + new () + { + X = pt_qe_list.Last().X, + Y = pt_qe_list.Last().Y, + Text = $"{speed}rpm({hz}hz)", + Aligment = eTextAligment.Right + } + }.ToJson() + }; + + list.Add(graph_qe); + } + + + if (pt_qp_list != null && pt_qp_list.Any()) + { + var graph_qp = new Yw.Vmo.PhartGraphVmo() + { + Name = "鍔熺巼绾�", + GraphType = (int)Yw.Ahart.eCurveType.QP, + GraphParas = new QPGraphParasViewModel() + { + Hz = hz, + N = speed, + }.ToJson(), + GeometryParas = new Yw.WinFrmUI.Phart.CurveGeometryParasViewModel + { + DefinePoints = pt_qp_list + }.ToJson(), + GeometryStyle = (int)HStation.PhartRelation.eGeometryStyle.FeatCurve, + GeometryInfo = pt_qp_list.ToDbString(Yw.Ahart.eCurveType.QP, Yw.Ahart.eFeatType.Cubic), + AnnotationParas = new List<Yw.WinFrmUI.Phart.AnnotationParasViewModel>() + { + new () + { + X = pt_qp_list.Last().X, + Y = pt_qp_list.Last().Y, + Text = $"{speed}rpm({hz}hz)", + Aligment = eTextAligment.Right + } + }.ToJson() + }; + + list.Add(graph_qp); + } + + + list.ForEach(x => x.DiagramID = _vmo.ID); + var bol = await new Yw.BLL.PhartGraph().Inserts(list); + if (!bol) + { + TipFormHelper.ShowWarn("娣诲姞澶辫触!"); + return; + } + + var newVmo = await new Yw.BLL.PhartDiagramExtensions().GetByID(_vmo.ID); + if (newVmo == null) + { + TipFormHelper.ShowWarn("鑾峰彇澶辫触!"); + return; + } + + SetBindingData(newVmo, _nr); + SetEquip(); + } + + private async void Insert(double eff, double tension, bool is_closed,bool is_u, List<Yw.Geometry.Point2d> pt_equal_e_list) + { + if (tension<=0) + { + tension = 0.5; + } + var list = new List<Yw.Vmo.PhartGraphVmo>(); + var graph_equal_e = new Yw.Vmo.PhartGraphVmo() + { + Name = "鎵▼绾�", + GraphType = (int)Yw.Ahart.eCurveType.EqualE, + GraphParas = new EqualEGraphParasViewModel() + { + Eff = eff, + Tension = tension, + IsClosed = is_closed, + }.ToJson(), + GeometryParas = new Yw.WinFrmUI.Phart.CurveGeometryParasViewModel + { + DefinePoints = pt_equal_e_list + }.ToJson(), + GeometryStyle = (int)HStation.PhartRelation.eGeometryStyle.FeatCurve, + GeometryInfo = pt_equal_e_list.ToDbString(Yw.Ahart.eCurveType.EqualE, Yw.Ahart.eFeatType.Cubic), + + }; + + var annotation_list = new List<Yw.WinFrmUI.Phart.AnnotationParasViewModel>(); + annotation_list.Add(new() + { + X = pt_equal_e_list.Last().X, + Y = pt_equal_e_list.Last().Y, + Text = $"{eff}%", + Aligment = eTextAligment.Right + }); + if (is_u) + { + var first = pt_equal_e_list.First(); + annotation_list.Add(new() + { + X = first.X, + Y = first.Y, + Text = $"{eff}%", + Aligment = eTextAligment.Right + }); + } + graph_equal_e.AnnotationParas = annotation_list.ToJson(); + list.Add(graph_equal_e); + list.ForEach(x => x.DiagramID = _vmo.ID); + var bol = await new Yw.BLL.PhartGraph().Inserts(list); + if (!bol) + { + TipFormHelper.ShowWarn("娣诲姞澶辫触!"); + return; + } + + var newVmo = await new Yw.BLL.PhartDiagramExtensions().GetByID(_vmo.ID); + if (newVmo == null) + { + TipFormHelper.ShowWarn("鑾峰彇澶辫触!"); + return; + } + + SetBindingData(newVmo, _nr); + SetEquip(); + } + /// <summary> /// 鑾峰彇 /// </summary> diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/02-edit/ValveChartEditCtrl.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/02-edit/ValveChartEditCtrl.cs index 51ca3be..ced4060 100644 --- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/02-edit/ValveChartEditCtrl.cs +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/02-edit/ValveChartEditCtrl.cs @@ -30,7 +30,7 @@ if (feat_curve == null || feat_curve.IsInvalid()) continue; - var geometry_paras = Yw.WinFrmUI.PhartGraphHelper.GetGeometryParas<Yw.WinFrmUI.Phart.CurveGeometryParasViewModel>(curve_type, graph.GeometryParas); + var geometry_paras = Yw.WinFrmUI.PhartGraphHelper.GetGeometryParas(curve_type, graph.GeometryParas); var graph_paras = Yw.WinFrmUI.PhartGraphHelper.GetGraphParas<Yw.WinFrmUI.Phart.QLGraphParasViewModel>(curve_type, graph.GraphParas); var vm = new Yw.WinFrmUI.Phart.ValveEditChartViewModel(); diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/HStation.WinFrmUI.PhartRelation.Core.csproj b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/HStation.WinFrmUI.PhartRelation.Core.csproj index 4ca551d..26af384 100644 --- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/HStation.WinFrmUI.PhartRelation.Core.csproj +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/HStation.WinFrmUI.PhartRelation.Core.csproj @@ -62,7 +62,7 @@ <ItemGroup> <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" /> <PackageReference Include="NPOI" Version="2.7.1" /> - <PackageReference Include="Yw.BLL.Phart.Core" Version="3.0.5" /> + <PackageReference Include="Yw.BLL.Phart.Core" Version="3.0.6" /> </ItemGroup> <ItemGroup> diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.Designer.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.Designer.cs index ec2aad8..3f5f7c1 100644 --- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.Designer.cs +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.Designer.cs @@ -63,6 +63,66 @@ /// <summary> /// 鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆� /// </summary> + internal static DevExpress.Utils.Svg.SvgImage actions_add { + get { + object obj = ResourceManager.GetObject("actions_add", resourceCulture); + return ((DevExpress.Utils.Svg.SvgImage)(obj)); + } + } + + /// <summary> + /// 鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆� + /// </summary> + internal static DevExpress.Utils.Svg.SvgImage actions_add1 { + get { + object obj = ResourceManager.GetObject("actions_add1", resourceCulture); + return ((DevExpress.Utils.Svg.SvgImage)(obj)); + } + } + + /// <summary> + /// 鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆� + /// </summary> + internal static DevExpress.Utils.Svg.SvgImage actions_addcircled { + get { + object obj = ResourceManager.GetObject("actions_addcircled", resourceCulture); + return ((DevExpress.Utils.Svg.SvgImage)(obj)); + } + } + + /// <summary> + /// 鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆� + /// </summary> + internal static DevExpress.Utils.Svg.SvgImage actions_addcircled1 { + get { + object obj = ResourceManager.GetObject("actions_addcircled1", resourceCulture); + return ((DevExpress.Utils.Svg.SvgImage)(obj)); + } + } + + /// <summary> + /// 鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆� + /// </summary> + internal static DevExpress.Utils.Svg.SvgImage actions_addcircled2 { + get { + object obj = ResourceManager.GetObject("actions_addcircled2", resourceCulture); + return ((DevExpress.Utils.Svg.SvgImage)(obj)); + } + } + + /// <summary> + /// 鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆� + /// </summary> + internal static DevExpress.Utils.Svg.SvgImage actions_addcircled3 { + get { + object obj = ResourceManager.GetObject("actions_addcircled3", resourceCulture); + return ((DevExpress.Utils.Svg.SvgImage)(obj)); + } + } + + /// <summary> + /// 鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆� + /// </summary> internal static DevExpress.Utils.Svg.SvgImage clearall { get { object obj = ResourceManager.GetObject("clearall", resourceCulture); diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.resx b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.resx index 97f7da5..daf2aae 100644 --- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.resx +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Properties/Resources.resx @@ -133,4 +133,22 @@ <data name="menu1" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\menu1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> </data> + <data name="actions_add" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\actions_add.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> + </data> + <data name="actions_add1" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\actions_add1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> + </data> + <data name="actions_addcircled" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\actions_addcircled.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> + </data> + <data name="actions_addcircled1" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\actions_addcircled1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> + </data> + <data name="actions_addcircled2" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\actions_addcircled2.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> + </data> + <data name="actions_addcircled3" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\actions_addcircled3.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> + </data> </root> \ No newline at end of file diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_add.svg b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_add.svg new file mode 100644 index 0000000..0f7c9b6 --- /dev/null +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_add.svg @@ -0,0 +1,15 @@ +锘�<?xml version='1.0' encoding='UTF-8'?> +<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32"> + <style type="text/css"> + .Blue{fill:#1177D7;} + .Yellow{fill:#FFB115;} + .Black{fill:#727272;} + .Green{fill:#039C23;} + .Red{fill:#D11C1C;} + .st0{opacity:0.75;} + .st1{opacity:0.5;} +</style> + <g id="Add"> + <path d="M27,14h-9V5c0-0.5-0.5-1-1-1h-2c-0.5,0-1,0.5-1,1v9H5c-0.5,0-1,0.5-1,1v2c0,0.5,0.5,1,1,1h9v9 c0,0.5,0.5,1,1,1h2c0.5,0,1-0.5,1-1v-9h9c0.5,0,1-0.5,1-1v-2C28,14.5,27.5,14,27,14z" class="Green" /> + </g> +</svg> \ No newline at end of file diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_add1.svg b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_add1.svg new file mode 100644 index 0000000..0f7c9b6 --- /dev/null +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_add1.svg @@ -0,0 +1,15 @@ +锘�<?xml version='1.0' encoding='UTF-8'?> +<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32"> + <style type="text/css"> + .Blue{fill:#1177D7;} + .Yellow{fill:#FFB115;} + .Black{fill:#727272;} + .Green{fill:#039C23;} + .Red{fill:#D11C1C;} + .st0{opacity:0.75;} + .st1{opacity:0.5;} +</style> + <g id="Add"> + <path d="M27,14h-9V5c0-0.5-0.5-1-1-1h-2c-0.5,0-1,0.5-1,1v9H5c-0.5,0-1,0.5-1,1v2c0,0.5,0.5,1,1,1h9v9 c0,0.5,0.5,1,1,1h2c0.5,0,1-0.5,1-1v-9h9c0.5,0,1-0.5,1-1v-2C28,14.5,27.5,14,27,14z" class="Green" /> + </g> +</svg> \ No newline at end of file diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled.svg b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled.svg new file mode 100644 index 0000000..0c97b24 --- /dev/null +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled.svg @@ -0,0 +1,15 @@ +锘�<?xml version='1.0' encoding='UTF-8'?> +<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32"> + <style type="text/css"> + .Blue{fill:#1177D7;} + .Yellow{fill:#FFB115;} + .Black{fill:#727272;} + .Green{fill:#039C23;} + .Red{fill:#D11C1C;} + .st0{opacity:0.75;} + .st1{opacity:0.5;} +</style> + <g id="AddCircled"> + <path d="M16,4C9.4,4,4,9.4,4,16s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z M24,18h-6v6h-4v-6H8v-4h6V8h4v6h6V18z" class="Green" /> + </g> +</svg> \ No newline at end of file diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled1.svg b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled1.svg new file mode 100644 index 0000000..0c97b24 --- /dev/null +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled1.svg @@ -0,0 +1,15 @@ +锘�<?xml version='1.0' encoding='UTF-8'?> +<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32"> + <style type="text/css"> + .Blue{fill:#1177D7;} + .Yellow{fill:#FFB115;} + .Black{fill:#727272;} + .Green{fill:#039C23;} + .Red{fill:#D11C1C;} + .st0{opacity:0.75;} + .st1{opacity:0.5;} +</style> + <g id="AddCircled"> + <path d="M16,4C9.4,4,4,9.4,4,16s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z M24,18h-6v6h-4v-6H8v-4h6V8h4v6h6V18z" class="Green" /> + </g> +</svg> \ No newline at end of file diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled2.svg b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled2.svg new file mode 100644 index 0000000..0c97b24 --- /dev/null +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled2.svg @@ -0,0 +1,15 @@ +锘�<?xml version='1.0' encoding='UTF-8'?> +<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32"> + <style type="text/css"> + .Blue{fill:#1177D7;} + .Yellow{fill:#FFB115;} + .Black{fill:#727272;} + .Green{fill:#039C23;} + .Red{fill:#D11C1C;} + .st0{opacity:0.75;} + .st1{opacity:0.5;} +</style> + <g id="AddCircled"> + <path d="M16,4C9.4,4,4,9.4,4,16s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z M24,18h-6v6h-4v-6H8v-4h6V8h4v6h6V18z" class="Green" /> + </g> +</svg> \ No newline at end of file diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled3.svg b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled3.svg new file mode 100644 index 0000000..0c97b24 --- /dev/null +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/Resources/actions_addcircled3.svg @@ -0,0 +1,15 @@ +锘�<?xml version='1.0' encoding='UTF-8'?> +<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32"> + <style type="text/css"> + .Blue{fill:#1177D7;} + .Yellow{fill:#FFB115;} + .Black{fill:#727272;} + .Green{fill:#039C23;} + .Red{fill:#D11C1C;} + .st0{opacity:0.75;} + .st1{opacity:0.5;} +</style> + <g id="AddCircled"> + <path d="M16,4C9.4,4,4,9.4,4,16s5.4,12,12,12s12-5.4,12-12S22.6,4,16,4z M24,18h-6v6h-4v-6H8v-4h6V8h4v6h6V18z" class="Green" /> + </g> +</svg> \ No newline at end of file diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartGraphHelper.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartGraphHelper.cs index a58aed2..45704f4 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartGraphHelper.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartGraphHelper.cs @@ -200,14 +200,14 @@ /// <summary> /// 鑾峰彇 GeometryParas /// </summary> - public static object GetGeometryParas(Yw.Ahart.eCurveType curveType, string geometryParas) + public static CurveGeometryParasViewModel GetGeometryParas(Yw.Ahart.eCurveType curveType, string geometryParas) { if (string.IsNullOrEmpty(geometryParas)) { return default; } - object obj = null; + CurveGeometryParasViewModel obj = null; switch (curveType) { case Ahart.eCurveType.QH: @@ -262,23 +262,7 @@ return obj; } - /// <summary> - /// 鑾峰彇 GeometryParas - /// </summary> - public static T GetGeometryParas<T>(Yw.Ahart.eCurveType curveType, string graphParas) - { - if (string.IsNullOrEmpty(graphParas)) - { - return default; - } - var obj = GetGeometryParas(curveType, graphParas); - if (obj is T t) - { - return t; - } - return default; - } #endregion @@ -287,84 +271,67 @@ /// <summary> /// 鑾峰彇 AnnotationParas /// </summary> - public static object GetAnnotationParas(Yw.Ahart.eCurveType curveType, string annotationParas) + public static List<AnnotationParasViewModel> GetAnnotationParasList(Yw.Ahart.eCurveType curveType, string annotationParas) { if (string.IsNullOrEmpty(annotationParas)) { return default; } - object obj = null; + List<AnnotationParasViewModel> list = null; switch (curveType) { case Ahart.eCurveType.QH: { - obj = AnnotationParasViewModel.ToList(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; case Ahart.eCurveType.QP: { - obj = AnnotationParasViewModel.ToModel(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; case Ahart.eCurveType.QE: { - obj = AnnotationParasViewModel.ToModel(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; case Ahart.eCurveType.QNPSH: { - obj = AnnotationParasViewModel.ToList(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; case Ahart.eCurveType.EqualE: { - obj = AnnotationParasViewModel.ToList(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; case Ahart.eCurveType.EqualP: { - obj = AnnotationParasViewModel.ToList(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; case Ahart.eCurveType.QL: { - obj = AnnotationParasViewModel.ToList(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; case Ahart.eCurveType.OL: { - obj = AnnotationParasViewModel.ToList(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; case Ahart.eCurveType.VOL: { - obj = AnnotationParasViewModel.ToList(annotationParas); + list = AnnotationParasViewModel.ToList(annotationParas); } break; default: break; } - return obj; + return list; } - - /// <summary> - /// 鑾峰彇 AnnotationParas - /// </summary> - public static T GetAnnotationParas<T>(Yw.Ahart.eCurveType curveType, string annotationParas) - { - if (string.IsNullOrEmpty(annotationParas)) - { - return default; - } - - var obj = GetGeometryParas(curveType, annotationParas); - if (obj is T t) - { - return t; - } - return default; - } + #endregion #region 鑾峰彇瀛樺偍瀛楃涓� diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/03-view-model/01-curve/EqualEViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/03-view-model/01-curve/EqualEViewModel.cs index 21d23d9..93b94ca 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/03-view-model/01-curve/EqualEViewModel.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/03-view-model/01-curve/EqualEViewModel.cs @@ -22,7 +22,7 @@ this.Eff = graph_paras.Eff; this.Tension = graph_paras.Tension; this.IsClosed = graph_paras.IsClosed; - this.DefinePoints = geometry_paras.DefinePoints; + this.DefinePoints = geometry_paras.DefinePoints; } /// <summary> @@ -41,6 +41,11 @@ public bool IsClosed { get; set; } /// <summary> + /// 鏄惁U褰㈢姸 + /// </summary> + public bool IsUShaped { get; set; } + + /// <summary> /// 瀹氫箟鐐瑰垪琛� /// </summary> public List<Yw.Geometry.Point2d> DefinePoints { get; set; } diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/00-core/01-coordinate/PumpCoordinate_Disp.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/00-core/01-coordinate/PumpCoordinate_Disp.cs index d9f192d..8824ee8 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/00-core/01-coordinate/PumpCoordinate_Disp.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/00-core/01-coordinate/PumpCoordinate_Disp.cs @@ -207,12 +207,12 @@ if (min_head > max_head - 0.01) return null; - var validGridNumH = 6; + var valid_grid_num_h = 6; var coordinate_paras = new PumpCoordinate(); coordinate_paras.GridNumberX = 10;//10 coordinate_paras.GridNumberY = 18;//18 CalcCoordinateQ(min_flow, max_flow, ref coordinate_paras, coordinate_paras.GridNumberX); - CalcCoordinateH(min_head, max_head, validGridNumH, ref coordinate_paras, out double disMinH, out double disMaxH); + CalcCoordinateH(min_head, max_head, valid_grid_num_h, ref coordinate_paras, out double disMinH, out double disMaxH); if (max_power > min_power + 0.01) CalcCoordinateP(min_power, max_power, disMaxH, 0, ref coordinate_paras); @@ -269,11 +269,11 @@ /// </summary> /// <param name="min_head">鏈�灏忔壃绋�</param> /// <param name="max_head">鏈�澶ф壃绋�</param> - /// <param name="validGridNumH">鏈夋晥鎵▼鍒诲害鏁�</param> + /// <param name="valid_grid_num_h">鏈夋晥鎵▼鍒诲害鏁�</param> /// <param name="coordinate_paras">鍧愭爣Model</param> /// <param name="disMinH">鏈�灏忔樉绀烘壃绋�</param> /// <param name="disMaxH">鏈�澶ф樉绀烘壃绋�</param> - public static void CalcCoordinateH_Filter(double min_head, double max_head, int validGridNumH, ref PumpCoordinate coordinate_paras, out double disMinH, out double disMaxH) + public static void CalcCoordinateH_Filter(double min_head, double max_head, int valid_grid_num_h, ref PumpCoordinate coordinate_paras, out double disMinH, out double disMaxH) { if (max_head < 1.0) { @@ -322,7 +322,7 @@ } else { - CalcCoordinateH(min_head, max_head, validGridNumH, ref coordinate_paras, out disMinH, out disMaxH); + CalcCoordinateH(min_head, max_head, valid_grid_num_h, ref coordinate_paras, out disMinH, out disMaxH); } } @@ -331,13 +331,13 @@ /// </summary> /// <param name="min_head">鏈�灏忔壃绋�</param> /// <param name="max_head">鏈�澶ф壃绋�</param> - /// <param name="validGridNumH">鏈夋晥鎵▼鍒诲害鏁�</param> + /// <param name="valid_grid_num_h">鏈夋晥鎵▼鍒诲害鏁�</param> /// <param name="coordinate_paras">鍧愭爣Model</param> /// <param name="disMinH">鏈�灏忔樉绀烘壃绋�</param> /// <param name="disMaxH">鏈�澶ф樉绀烘壃绋�</param> - public static void CalcCoordinateH(double min_head, double max_head, int validGridNumH, ref PumpCoordinate coordinate_paras, out double disMinH, out double disMaxH) + public static void CalcCoordinateH(double min_head, double max_head, int valid_grid_num_h, ref PumpCoordinate coordinate_paras, out double disMinH, out double disMaxH) { - var coordSpaceH = PhartCoordinateHelper.GetOptimalSpaceMax(min_head, max_head, validGridNumH, out disMinH, out disMaxH); + var coordSpaceH = PhartCoordinateHelper.GetOptimalSpaceMax(min_head, max_head, valid_grid_num_h, out disMinH, out disMaxH); int endLineNoH = coordinate_paras.GridNumberY; int stratLineNoH = endLineNoH; @@ -396,13 +396,7 @@ coordinate_paras.StartLineNoP += diff_num; } - //纭鍒诲害鍦ㄦ湁鏁堝埢搴﹀唴 nsx - var diff_line = coordinate_paras.EndLineNoP - coordinate_paras.StartLineNoP; - if (diff_line < spaceNum) - { - coordinate_paras.StartLineNoP -= spaceNum - diff_line; - } - + coordinate_paras.CoordMinH = PhartCoordinateHelper.GetByPlacesLength(disMaxH - coordinate_paras.EndLineNoH * coordinate_paras.CoordSpaceH, 3); coordinate_paras.CoordMinP = PhartCoordinateHelper.GetByPlacesLength(disMaxP - coordinate_paras.EndLineNoP * coordinate_paras.CoordSpaceP, 3); diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/01-viewmodel/PumpCurveViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/01-viewmodel/PumpCurveViewModel.cs index e02d80a..7ceaf6b 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/01-viewmodel/PumpCurveViewModel.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/01-viewmodel/PumpCurveViewModel.cs @@ -23,7 +23,7 @@ this.Equip = rhs.Equip; this.VariableSpeedList = rhs.VariableSpeedList; this.EqualEffList = rhs.EqualEffList; - this.EqualPowerList = rhs.EqualPowerList; + //this.EqualPowerList = rhs.EqualPowerList; } @@ -102,10 +102,10 @@ /// </summary> public List<PumpCurveEqualEffViewModel> EqualEffList { get; set; } - /// <summary> - /// 绛夊姛鐜囧垪琛� - /// </summary> - public List<PumpCurveEqualPowerViewModel> EqualPowerList { get; set; } + ///// <summary> + ///// 绛夊姛鐜囧垪琛� + ///// </summary> + //public List<PumpCurveEqualPowerViewModel> EqualPowerList { get; set; } /// <summary> /// 鍧愭爣 diff --git "a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.Designer.cs" "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.Designer.cs" new file mode 100644 index 0000000..1bf5539 --- /dev/null +++ "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.Designer.cs" @@ -0,0 +1,198 @@ +锘縩amespace Yw.WinFrmUI.Phart +{ + partial class PumpViewChart + { + /// <summary> + /// Requipuired designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Requipuired method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + DevExpress.XtraCharts.XYDiagram xyDiagram1 = new DevExpress.XtraCharts.XYDiagram(); + DevExpress.XtraCharts.ConstantLine constantLine1 = new DevExpress.XtraCharts.ConstantLine(); + DevExpress.XtraCharts.ConstantLine constantLine2 = new DevExpress.XtraCharts.ConstantLine(); + DevExpress.XtraCharts.LayoutDefinition layoutDefinition1 = new DevExpress.XtraCharts.LayoutDefinition(); + DevExpress.XtraCharts.LayoutDefinition layoutDefinition2 = new DevExpress.XtraCharts.LayoutDefinition(); + DevExpress.XtraCharts.LayoutDefinition layoutDefinition3 = new DevExpress.XtraCharts.LayoutDefinition(); + DevExpress.XtraCharts.XYDiagramPane xyDiagramPane1 = new DevExpress.XtraCharts.XYDiagramPane(); + DevExpress.XtraCharts.SecondaryAxisY secondaryAxisy1 = new DevExpress.XtraCharts.SecondaryAxisY(); + DevExpress.XtraCharts.SecondaryAxisY secondaryAxisy2 = new DevExpress.XtraCharts.SecondaryAxisY(); + DevExpress.XtraCharts.Series series1 = new DevExpress.XtraCharts.Series(); + DevExpress.XtraCharts.SplineSeriesView splineSeriesView1 = new DevExpress.XtraCharts.SplineSeriesView(); + DevExpress.XtraCharts.Series series2 = new DevExpress.XtraCharts.Series(); + DevExpress.XtraCharts.SplineSeriesView splineSeriesView2 = new DevExpress.XtraCharts.SplineSeriesView(); + DevExpress.XtraCharts.Series series3 = new DevExpress.XtraCharts.Series(); + DevExpress.XtraCharts.SplineSeriesView splineSeriesView3 = new DevExpress.XtraCharts.SplineSeriesView(); + chartControl1 = new DevExpress.XtraCharts.ChartControl(); + bar1 = new DevExpress.XtraBars.Bar(); + ((System.ComponentModel.ISupportInitialize)chartControl1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)xyDiagram1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)constantLine1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)constantLine2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)xyDiagramPane1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)secondaryAxisy1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)secondaryAxisy2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)series1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)splineSeriesView1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)series2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)splineSeriesView2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)series3).BeginInit(); + ((System.ComponentModel.ISupportInitialize)splineSeriesView3).BeginInit(); + SuspendLayout(); + // + // chartControl1 + // + chartControl1.BorderOptions.Visibility = DevExpress.Utils.DefaultBoolean.False; + constantLine1.AxisValueSerializable = "1"; + constantLine1.ConstantLineID = 0; + constantLine1.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.Miter; + constantLine1.Name = "ConstantLineX"; + constantLine1.ShowInLegend = false; + constantLine1.Title.Alignment = DevExpress.XtraCharts.ConstantLineTitleAlignment.Far; + constantLine1.Title.DXFont = new DevExpress.Drawing.DXFont("Tahoma", 8F); + constantLine1.Title.Text = "ConstantLineZ"; + xyDiagram1.AxisX.ConstantLines.AddRange(new DevExpress.XtraCharts.ConstantLine[] { constantLine1 }); + xyDiagram1.AxisX.Title.Text = "娴侀噺 锛坢鲁/h锛�"; + xyDiagram1.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default; + xyDiagram1.AxisX.VisibleInPanesSerializable = "-1"; + xyDiagram1.AxisY.Color = Color.DodgerBlue; + constantLine2.AxisValueSerializable = "1"; + constantLine2.ConstantLineID = 0; + constantLine2.Name = "ConstantLineY"; + constantLine2.ShowInLegend = false; + xyDiagram1.AxisY.ConstantLines.AddRange(new DevExpress.XtraCharts.ConstantLine[] { constantLine2 }); + xyDiagram1.AxisY.Label.TextColor = Color.DodgerBlue; + xyDiagram1.AxisY.Title.Alignment = StringAlignment.Far; + xyDiagram1.AxisY.Title.EnableAntialiasing = DevExpress.Utils.DefaultBoolean.False; + xyDiagram1.AxisY.Title.Text = "鎵▼/m"; + xyDiagram1.AxisY.Title.TextColor = Color.DodgerBlue; + xyDiagram1.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; + xyDiagram1.AxisY.VisibleInPanesSerializable = "-1"; + xyDiagram1.DefaultPane.BorderVisible = false; + xyDiagram1.DefaultPane.Title.Text = "鏃犳暟鎹�"; + xyDiagram1.PaneLayout.AutoLayoutMode = DevExpress.XtraCharts.PaneAutoLayoutMode.Grid; + xyDiagram1.PaneLayout.RowDefinitions.AddRange(new DevExpress.XtraCharts.LayoutDefinition[] { layoutDefinition1, layoutDefinition2, layoutDefinition3 }); + xyDiagramPane1.BorderVisible = false; + xyDiagramPane1.LayoutOptions.Column = 0; + xyDiagramPane1.LayoutOptions.Row = 2; + xyDiagramPane1.Name = "BottomPanel"; + xyDiagramPane1.PaneID = 1; + xyDiagramPane1.RuntimeCollapse = DevExpress.Utils.DefaultBoolean.False; + xyDiagramPane1.SelectionRectangle.BorderVisible = false; + xyDiagram1.Panes.AddRange(new DevExpress.XtraCharts.XYDiagramPane[] { xyDiagramPane1 }); + secondaryAxisy1.AxisID = 0; + secondaryAxisy1.Color = Color.Green; + secondaryAxisy1.Label.Border.Visibility = DevExpress.Utils.DefaultBoolean.False; + secondaryAxisy1.Label.TextColor = Color.Green; + secondaryAxisy1.Name = "AxisYEff"; + secondaryAxisy1.Title.Text = "鏁堢巼/%"; + secondaryAxisy1.Title.TextColor = Color.Green; + secondaryAxisy1.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default; + secondaryAxisy1.VisibleInPanesSerializable = "-1"; + secondaryAxisy2.Alignment = DevExpress.XtraCharts.AxisAlignment.Near; + secondaryAxisy2.AxisID = 1; + secondaryAxisy2.Label.Border.Visibility = DevExpress.Utils.DefaultBoolean.False; + secondaryAxisy2.Label.TextColor = Color.Crimson; + secondaryAxisy2.Name = "AxisYPower"; + secondaryAxisy2.NumericScaleOptions.AutoGrid = false; + secondaryAxisy2.NumericScaleOptions.GridSpacing = 2D; + secondaryAxisy2.Title.Alignment = StringAlignment.Near; + secondaryAxisy2.Title.Text = "鍔熺巼/kW"; + secondaryAxisy2.Title.TextColor = Color.Crimson; + secondaryAxisy2.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default; + secondaryAxisy2.Visibility = DevExpress.Utils.DefaultBoolean.True; + secondaryAxisy2.VisibleInPanesSerializable = "1"; + xyDiagram1.SecondaryAxesY.AddRange(new DevExpress.XtraCharts.SecondaryAxisY[] { secondaryAxisy1, secondaryAxisy2 }); + chartControl1.Diagram = xyDiagram1; + chartControl1.Dock = DockStyle.Fill; + chartControl1.Legend.AlignmentHorizontal = DevExpress.XtraCharts.LegendAlignmentHorizontal.Right; + chartControl1.Legend.Border.Visibility = DevExpress.Utils.DefaultBoolean.False; + chartControl1.Legend.Direction = DevExpress.XtraCharts.LegendDirection.LeftToRight; + chartControl1.Legend.LegendID = -1; + chartControl1.Legend.MarkerMode = DevExpress.XtraCharts.LegendMarkerMode.CheckBoxAndMarker; + chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; + chartControl1.Location = new Point(0, 0); + chartControl1.Name = "chartControl1"; + series1.Name = "SeriesQH"; + series1.SeriesID = 0; + splineSeriesView1.Color = Color.FromArgb(84, 141, 212); + series1.View = splineSeriesView1; + series2.Name = "SeriesQE"; + series2.SeriesID = 1; + splineSeriesView2.AxisYName = "AxisYEff"; + splineSeriesView2.Color = Color.FromArgb(155, 187, 89); + series2.View = splineSeriesView2; + series3.Name = "SeriesQP"; + series3.SeriesID = 2; + splineSeriesView3.AxisYName = "AxisYPower"; + splineSeriesView3.Color = Color.FromArgb(192, 0, 0); + splineSeriesView3.PaneName = "BottomPanel"; + series3.View = splineSeriesView3; + chartControl1.SeriesSerializable = new DevExpress.XtraCharts.Series[] + { + series1, + series2, + series3 + }; + chartControl1.Size = new Size(1023, 857); + chartControl1.TabIndex = 0; + // + // bar1 + // + bar1.BarName = "Custom 2"; + bar1.DockCol = 0; + bar1.DockRow = 0; + bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top; + bar1.OptionsBar.MultiLine = true; + bar1.OptionsBar.UseWholeRow = true; + bar1.Text = "Custom 2"; + // + // PumpViewChart + // + AutoScaleDimensions = new SizeF(10F, 22F); + AutoScaleMode = AutoScaleMode.Font; + Controls.Add(chartControl1); + Name = "PumpViewChart"; + Size = new Size(1023, 857); + ((System.ComponentModel.ISupportInitialize)constantLine1).EndInit(); + ((System.ComponentModel.ISupportInitialize)constantLine2).EndInit(); + ((System.ComponentModel.ISupportInitialize)xyDiagramPane1).EndInit(); + ((System.ComponentModel.ISupportInitialize)secondaryAxisy1).EndInit(); + ((System.ComponentModel.ISupportInitialize)secondaryAxisy2).EndInit(); + ((System.ComponentModel.ISupportInitialize)xyDiagram1).EndInit(); + ((System.ComponentModel.ISupportInitialize)splineSeriesView1).EndInit(); + ((System.ComponentModel.ISupportInitialize)series1).EndInit(); + ((System.ComponentModel.ISupportInitialize)splineSeriesView2).EndInit(); + ((System.ComponentModel.ISupportInitialize)series2).EndInit(); + ((System.ComponentModel.ISupportInitialize)splineSeriesView3).EndInit(); + ((System.ComponentModel.ISupportInitialize)series3).EndInit(); + ((System.ComponentModel.ISupportInitialize)chartControl1).EndInit(); + ResumeLayout(false); + } + + #endregion + + private DevExpress.XtraCharts.ChartControl chartControl1; + private DevExpress.XtraBars.Bar bar1; + } +} diff --git "a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.cs" "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.cs" new file mode 100644 index 0000000..54b3d3b --- /dev/null +++ "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.cs" @@ -0,0 +1,1064 @@ +锘縰sing DevExpress.Utils; +using DevExpress.XtraCharts; + +namespace Yw.WinFrmUI.Phart +{ + /// <summary> + /// 娉靛浘琛� + /// </summary> + public partial class PumpViewChart : DevExpress.XtraEditors.XtraUserControl + { + public PumpViewChart() + { + InitializeComponent(); + InitialChart(); + } + + #region Private Variable + + private XYDiagram _diagram; + private XYDiagramDefaultPane _default_pane; + private XYDiagramPane _bottom_pane; + + private AxisX _axis_x_flow; + private AxisY _axis_y_head; + private SecondaryAxisY _axis_y_eff, _axis_y_power; + + private ConstantLine _const_line_x; + private ConstantLine _const_line_y; + private TextAnnotation _anno_txt_query_info; + + private PumpCoordinate _coordinate = null; + private PumpCurveViewModel _vm = null; + + private bool _default_visible = false; + private bool _power_visible = false; + private bool _eff_visible = false; + private bool _equal_eff_visible = false; + private bool _split_panel = false; + + private bool _line_visible = false; + private bool _initial_data = false; + + + #endregion + + #region Public Variable + + /// <summary> + /// + /// </summary> + public bool LineVisible + { + get + { + return _line_visible; + } + set + { + _line_visible = value; + _const_line_x.Visible = value; + _const_line_y.Visible = value; + SetAxisXValue(); + } + } + + /// <summary> + /// + /// </summary> + + public bool SplitPanel + { + get + { + return _split_panel; + } + set + { + _split_panel = value; + } + } + + #endregion + + #region Private Initial + + /// <summary> + /// 鍒濆鍖栧浘琛� + /// </summary> + private void InitialChart() + { + this.chartControl1.SetChartDisplay(); + this.chartControl1.RuntimeHitTesting = true; + this.chartControl1.AnimationStartMode = ChartAnimationMode.OnLoad; + this.chartControl1.ObjectHotTracked += new DevExpress.XtraCharts.HotTrackEventHandler(this.chartControl1_ObjectHotTracked); + this.chartControl1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseMove); + this.chartControl1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseUp); + this.chartControl1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseDown); + this.chartControl1.Resize += new System.EventHandler(this.chartControl1_Resize); + this.chartControl1.CustomPaint += ChartControl1_CustomPaint; + + + _diagram = (XYDiagram)this.chartControl1.Diagram; + _default_pane = _diagram.DefaultPane; + _bottom_pane = (XYDiagramPane)_diagram.FindPaneByName("BottomPanel"); + + _axis_x_flow = _diagram.AxisX; + _axis_x_flow.SetAxisXQDisplay(); + _axis_y_head = _diagram.AxisY; + _axis_y_head.SetAxisYQHDisplay(); + _axis_y_eff = _diagram.SecondaryAxesY.GetAxisByName("AxisYEff"); + _axis_y_eff.SetSecondaryAxisYQEDisplay(); + _axis_y_eff.Alignment = AxisAlignment.Far; + _axis_y_power = _diagram.SecondaryAxesY.GetAxisByName("AxisYPower"); + _axis_y_power.SetSecondaryAxisYQPDisplay(); + + _const_line_x = (ConstantLine)_diagram.AxisX.ConstantLines.GetElementByName("ConstantLineX"); + _const_line_x.SetWorkPointLineDisplay(); + + _const_line_y = (ConstantLine)_diagram.AxisY.ConstantLines.GetElementByName("ConstantLineY"); + _const_line_y.SetWorkPointLineDisplay(); + + _axis_x_flow.Visibility = DefaultBoolean.False; + _axis_x_flow.GridLines.Visible = false; + _axis_y_head.Visibility = DefaultBoolean.False; + _axis_y_head.GridLines.Visible = false; + _axis_y_eff.Visibility = DefaultBoolean.False; + _axis_y_eff.GridLines.Visible = false; + _axis_y_power.Visibility = DefaultBoolean.False; + _axis_y_power.GridLines.Visible = false; + + _const_line_x.Visible = false; + _const_line_y.Visible = false; + } + + /// <summary> + /// 鍒濆鍖栧潗鏍囪酱 + /// </summary> + private void InitialCoordinate() + { + //璁剧疆鎴愮櫧鏉垮潗鏍� + _coordinate = new PumpCoordinate(); + _coordinate.GridNumberX = 30; + _coordinate.GridNumberY = 16; + //鏄剧ず鐨勫潗鏍囩嚎鍙� + _coordinate.StartLineNoH = 10; + _coordinate.EndLineNoH = 15; + _coordinate.StartLineNoE = 0; + _coordinate.EndLineNoE = 10; + _coordinate.StartLineNoP = 2; + _coordinate.EndLineNoP = 9; + //鍧愭爣鏈�灏忓�煎拰闂撮殧 + _coordinate.CoordMinQ = 0; _coordinate.CoordSpaceQ = 1000; + _coordinate.CoordMinH = 10; _coordinate.CoordSpaceH = 100; + _coordinate.CoordMinE = 0; _coordinate.CoordSpaceE = 100; + _coordinate.CoordMinP = 10; _coordinate.CoordSpaceP = 100; + } + + #endregion + + #region Private Chart Event + + ToolTipController _tool_tip = new(); + private void chartControl1_ObjectHotTracked(object sender, HotTrackEventArgs e) + { + //if (!_initial_data) + // return; + //if (e.AdditionalObject is SeriesPoint series_pt) + //{ + // var tip = string.Format("X:{0:N1} Y:{1:N1}", series_pt.Argument, series_pt.Values[0]); + // _tool_tip.ShowHint(tip); + //} + //else + //{ + // _tool_tip.HideHint(); + //} + } + + private bool _on_move_x_line = false; + private bool _on_move_y_line = false; + private void chartControl1_MouseDown(object sender, MouseEventArgs e) + { + if (!_initial_data) + return; + var hitInfo = chartControl1.CalcHitInfo(e.Location); + if (e.Button == MouseButtons.Left) + { + if (hitInfo.InConstantLine) + { + if (hitInfo.ConstantLine == _const_line_x) + { + _on_move_x_line = true; + } + else if (hitInfo.ConstantLine == _const_line_y) + { + _on_move_y_line = true; + } + } + } + } + + private void chartControl1_MouseMove(object sender, MouseEventArgs e) + { + if (!_initial_data) + return; + + if (_on_move_x_line) + { + var diagram_coordinates = _diagram.PointToDiagram(e.Location); + var axis_value = diagram_coordinates.GetAxisValue(_axis_x_flow); + if (axis_value == null) + return; + double chartQ = axis_value.NumericalValue; + SetAxisXValue(chartQ); + + } + else if (_on_move_y_line) + { + var diagram_coordinates = _diagram.PointToDiagram(e.Location); + var axis_value = diagram_coordinates.GetAxisValue(_axis_y_head); + if (axis_value == null) + return; + double chartH = axis_value.NumericalValue; + SetAxisYValue(chartH); + } + else + { + var hitInfo = chartControl1.CalcHitInfo(e.Location); + if (hitInfo.InConstantLine) + { + this.chartControl1.Cursor = Cursors.Hand; + } + else if (hitInfo.InAnnotation) + { + this.chartControl1.Cursor = Cursors.SizeAll; + + } + else + { + this.chartControl1.Cursor = Cursors.Default; + } + } + } + + private void chartControl1_MouseUp(object sender, MouseEventArgs e) + { + if (!_initial_data) + return; + _on_move_x_line = false; + _on_move_y_line = false; + } + + private void chartControl1_Resize(object sender, EventArgs e) + { + + } + + private void ChartControl1_CustomPaint(object sender, CustomPaintEventArgs e) + { + if (!_initial_data) + return; + if (_vm == null) + return; + if (_axis_x_flow.Visibility == DefaultBoolean.False) + return; + if (e is not DXCustomPaintEventArgs dx_args) + return; + var cache = dx_args.Cache; + cache.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; + if (_equal_eff_visible && _vm.EqualEffList != null && _vm.EqualEffList.Any()) + { + using Pen pen = new(Color.Green, 2); + foreach (var eq_eff in _vm.EqualEffList) + { + if (!eq_eff.IsValid()) + continue; + var eq_eff_pt_list = eq_eff.CurveEqualEff; + var pic_eq_eff_pt_list = new List<Point>(); + foreach (var eq_eff_pt in eq_eff_pt_list) + { + var x = eq_eff_pt.X; + var y = eq_eff_pt.Y; + var coordinates = _diagram.DiagramToPoint(x, y, _diagram.AxisX, _diagram.AxisY); + if (coordinates == null) + continue; + var pt = new Point(coordinates.Point.X, coordinates.Point.Y); + pic_eq_eff_pt_list.Add(pt); + } + + var pt_count = pic_eq_eff_pt_list.Count; + if (pt_count > 2) + { + if (eq_eff.IsClosed) + { + var path = cache.CreatePath(); + path.AddClosedCurve(pic_eq_eff_pt_list.ToArray(), (float)eq_eff.Tension); + cache.DrawPath(pen, path); + } + else + { + var path = cache.CreatePath(); + path.AddCurve(pic_eq_eff_pt_list.ToArray(), (float)eq_eff.Tension); + cache.DrawPath(pen, path); + } + } + else if (pt_count == 2) + { + cache.DrawLine(pen, pic_eq_eff_pt_list[0], pic_eq_eff_pt_list[1]); + } + else if (pt_count == 1) + { + Rectangle rc = new Rectangle(pic_eq_eff_pt_list[0].X - 2, pic_eq_eff_pt_list[0].Y - 2, 4, 4); + using (Brush b = new SolidBrush(pen.Color)) + cache.FillEllipse(b, rc); + } + + } + } + + if (_vm.Equip != null && _vm.Equip.IsValid()) + { + using Pen pen = new(Color.Black, 2); + pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot; + + var offset_size = 10; + var qh_pt = _diagram.DiagramToPoint(_vm.Equip.SectQ, _vm.Equip.SectH, _axis_x_flow, _axis_y_head); + var qh_pt_x = qh_pt.Point.X; + var qh_pt_y = qh_pt.Point.Y; + cache.DrawLine(pen, new Point(qh_pt_x, qh_pt_y - offset_size), new Point(qh_pt_x, qh_pt_y + offset_size)); + + if (_eff_visible && _vm.Equip.SectE != null) + { + var qe_pt = _diagram.DiagramToPoint(_vm.Equip.SectQ, _vm.Equip.SectE.Value, _axis_x_flow, _axis_y_eff); + var qe_pt_x = qe_pt.Point.X; + var qe_pt_y = qe_pt.Point.Y; + cache.DrawLine(pen, new Point(qe_pt_x, qe_pt_y - offset_size), new Point(qe_pt_x, qe_pt_y + offset_size)); + } + if (_power_visible && _vm.Equip.SectP != null) + { + var qp_pt = _diagram.DiagramToPoint(_vm.Equip.SectQ, _vm.Equip.SectP.Value, _axis_x_flow, _axis_y_power); + var qp_pt_x = qp_pt.Point.X; + var qp_pt_y = qp_pt.Point.Y; + cache.DrawLine(pen, new Point(qp_pt_x, qp_pt_y - offset_size), new Point(qp_pt_x, qp_pt_y + offset_size)); + } + } + + } + + + + + #endregion + + #region Set + + /// <summary> + /// 娓呯┖鍥捐〃 + /// </summary> + public void Clear() + { + _vm = null; + _default_visible = false; + _split_panel = false; + _eff_visible = false; + _power_visible = false; + _initial_data = false; + this.chartControl1.BeginInit(); + this.chartControl1.Series.Clear(); + this.chartControl1.AnnotationRepository.Clear(); + this.chartControl1.Legend.CustomItems.Clear(); + this.chartControl1.EndInit(); + } + + /// <summary> + /// 璁剧疆鍥捐〃 + /// </summary> + public void SetBindingData(PumpCurveViewModel vm, bool split_panel = false, bool eff_visible = false, bool power_visible = true, bool equal_eff_visible = false) + { + _vm = vm; + _split_panel = split_panel; + _eff_visible = eff_visible; + _power_visible = power_visible; + _equal_eff_visible = equal_eff_visible; + this.chartControl1.BeginInit(); + this.chartControl1.Series.Clear(); + this.chartControl1.AnnotationRepository.Clear(); + this.chartControl1.Legend.CustomItems.Clear(); + if (vm == null) + { + _initial_data = false; + this.chartControl1.EndInit(); + return; + } + + + + AddDefault(vm); + + AddEquip(vm.Equip); + AddVariableSpeedList(vm.VariableSpeedList); + if (_equal_eff_visible) + AddEqualEffList(vm.EqualEffList); + AddEqualPowerList(vm.EqualPowerList); + + if (vm.Coordinate == null) + { + SetCoordinate(); + } + else + { + _coordinate = vm.Coordinate; + } + + SetChartAxis(); + this.chartControl1.EndInit(); + _initial_data = true; + } + + //鏄惁鏄棤鏁堟暟鎹� + private bool IsInvalidData() + { + if (_vm == null) + { + return true; + } + return false; + } + + #region Add Data + private void AddDefault(PumpCurveViewModel vm) + { + var id = vm.Id; + var caption_qh = vm.CurveQHName; + var caption_qp = vm.CurveQPName; + var color_qh = vm.ColorQH ?? PumpChartDisplay.CurveColorQH; + var color_qe = vm.ColorQE ?? PumpChartDisplay.CurveColorQE; + var color_qp = vm.ColorQP ?? PumpChartDisplay.CurveColorQP; + + var qh = vm.CurveQH; + var qe = vm.CurveQE; + var qp = vm.CurveQP; + + XYDiagramPaneBase bottom_pane = _split_panel ? _bottom_pane : _default_pane; + + AddLineSeries(id, color_qh, _axis_x_flow, _axis_y_head, _default_pane, qh, DevExpress.XtraCharts.DashStyle.Dash); + if (!string.IsNullOrEmpty(caption_qh)) + AddAnnotation(id, caption_qh, color_qh, _axis_y_head, _default_pane, qh.Last()); + + if (qe != null && qe.Any() && _eff_visible) + { + AddLineSeries(id, color_qe, _axis_x_flow, _axis_y_eff, _default_pane, qe, DevExpress.XtraCharts.DashStyle.Dash); + } + + if (qp != null && qp.Any() && _power_visible) + { + AddLineSeries(id, color_qp, _axis_x_flow, _axis_y_power, bottom_pane, qp, DevExpress.XtraCharts.DashStyle.Dash); + if (!string.IsNullOrEmpty(caption_qp)) + { + AddAnnotation(id, caption_qp, color_qp, _axis_y_power, bottom_pane, qp.Last()); + } + } + } + + private void AddEquip(PumpCurveEquipViewModel vm) + { + if (vm == null) + return; + var id = vm.Id; + var caption = vm.CurveName; + var color = vm.Color ?? Color.Black; + + var equip = vm.CurveEquip; + var equip_pt = new Yw.Geometry.Point2d(vm.PipeQ, vm.PipeH); + + AddLineSeries(id, color, _axis_x_flow, _axis_y_head, _default_pane, equip, DevExpress.XtraCharts.DashStyle.DashDotDot); + // AddPointSeries(id, color, _axis_x_flow, _axis_y_head, _default_pane, new List<Geometry.Point2d>() { equip_pt }, MarkerKind.ThinCross); + if (!string.IsNullOrEmpty(caption)) + AddAnnotation(id, caption, color, _axis_y_head, _default_pane, equip.Last()); + } + + private void AddVariableSpeedList(List<PumpCurveVariableSpeedViewModel> vm_list) + { + if (vm_list == null || !vm_list.Any()) + return; + XYDiagramPaneBase bottom_pane = _split_panel ? _bottom_pane : _default_pane; + foreach (var vm in vm_list) + { + if (!vm.IsValid()) + continue; + + var id = vm.Id; + var caption_qh = vm.CurveQHName; + var caption_qp = vm.CurveQPName; + var color_qh = vm.ColorQH ?? PumpChartDisplay.CurveColorQH; + var color_qe = vm.ColorQE ?? PumpChartDisplay.CurveColorQE; + var color_qp = vm.ColorQP ?? PumpChartDisplay.CurveColorQP; + + var qh = vm.CurveQH; + var qe = vm.CurveQE; + var qp = vm.CurveQP; + + AddLineSeries(id, color_qh, _axis_x_flow, _axis_y_head, _default_pane, qh); + if (!string.IsNullOrEmpty(caption_qh)) + AddAnnotation(id, caption_qh, color_qh, _axis_y_head, _default_pane, qh.Last()); + + if (qe != null && qe.Any() && _eff_visible) + { + AddLineSeries(id, color_qe, _axis_x_flow, _axis_y_eff, _default_pane, qe); + } + + if (qp != null && qp.Any() && _power_visible) + { + AddLineSeries(id, color_qp, _axis_x_flow, _axis_y_power, bottom_pane, qp); + if (!string.IsNullOrEmpty(caption_qp)) + { + AddAnnotation(id, caption_qp, color_qp, _axis_y_power, bottom_pane, qp.Last()); + } + } + } + } + + private void AddEqualEffList(List<PumpCurveEqualEffViewModel> vm_list) + { + if (vm_list == null || !vm_list.Any()) + return; + foreach (var vm in vm_list) + { + if (!vm.IsValid()) + continue; + + var id = vm.Id; + var caption = vm.CurveName; + var color = vm.Color ?? Color.Green; + + var equif_eff = vm.CurveEqualEff; + if (!string.IsNullOrEmpty(caption)) + { + if (equif_eff.Count > 2) + { + AddAnnotation(id, caption, color, _axis_y_head, _default_pane, equif_eff.First(), 60); + } + AddAnnotation(id, caption, color, _axis_y_head, _default_pane, equif_eff.Last(), 60); + } + } + + + } + + private void AddEqualPowerList(List<PumpCurveEqualPowerViewModel> vm_list) + { + if (vm_list == null || !vm_list.Any()) + return; + + foreach (var vm in vm_list) + { + if (!vm.IsValid()) + continue; + + var id = vm.Id; + var caption = vm.CurveName; + var color = vm.Color ?? Color.Green; + var equif_power = vm.CurveEqualPower; + if (equif_power.Count < 2) + { + AddPointSeries(id, color, _axis_x_flow, _axis_y_head, _default_pane, equif_power); + } + else + { + AddLineSeries(id, color, _axis_x_flow, _axis_y_head, _default_pane, equif_power, DashStyle.Dash); + } + if (!string.IsNullOrEmpty(caption)) + AddAnnotation(id, caption, color, _axis_y_head, _default_pane, equif_power.Last()); + } + } + + #endregion + + #region Add Chart Data + + private void AddPointSeries(string id, Color color, AxisXBase axis_x, AxisYBase axis_y, XYDiagramPaneBase pane, List<Yw.Geometry.Point2d> pt_list, MarkerKind marker = MarkerKind.Circle) + { + if (pt_list == null || !pt_list.Any()) + return; + + var view = new DevExpress.XtraCharts.PointSeriesView(); + view.PointMarkerOptions.Size = 8; + view.PointMarkerOptions.Kind = marker; + view.PointMarkerOptions.BorderColor = color; + view.Color = color; + view.AxisX = axis_x; + view.AxisY = axis_y; + view.EmptyPointOptions.Color = Color.Transparent; + view.Pane = pane; + + var series_pt_list = pt_list.Select(x => x.ToSeriesPoint()).ToArray(); + var series = new DevExpress.XtraCharts.Series(); + series.Tag = id; + series.ShowInLegend = false; + series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Numerical; + series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; + series.CrosshairEnabled = DefaultBoolean.False; + series.CrosshairLabelVisibility = DefaultBoolean.False; + series.ToolTipEnabled = DefaultBoolean.False; + series.SeriesPointsSorting = SortingMode.None; + series.Visible = true; + series.View = view; + series.CrosshairLabelPattern = "{A}"; + series.Points.AddRange(series_pt_list); + this.chartControl1.Series.Add(series); + } + + private void AddLineSeries(string id, Color color, AxisXBase axis_x, AxisYBase axis_y, XYDiagramPaneBase pane, List<Yw.Geometry.Point2d> pt_list, DevExpress.XtraCharts.DashStyle dash = DevExpress.XtraCharts.DashStyle.Solid) + { + if (pt_list == null || !pt_list.Any()) + return; + + var view = new DevExpress.XtraCharts.LineSeriesView(); + view.LineStyle.DashStyle = dash; + view.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.Round; + view.LineStyle.Thickness = 2; + view.Color = color; + view.EnableAntialiasing = DefaultBoolean.True; + view.MarkerVisibility = DefaultBoolean.False; + view.AxisX = axis_x; + view.AxisY = axis_y; + view.EmptyPointOptions.Color = Color.Transparent; + view.Pane = pane; + + var series_pt_list = pt_list.Select(x => x.ToSeriesPoint()).ToArray(); + var series = new DevExpress.XtraCharts.Series(); + series.Tag = id; + series.ShowInLegend = false; + series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Numerical; + series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; + series.CrosshairEnabled = DefaultBoolean.False; + series.ToolTipEnabled = DefaultBoolean.False; + series.SeriesPointsSorting = SortingMode.None; + series.Visible = true; + series.View = view; + series.Points.AddRange(series_pt_list); + + this.chartControl1.Series.Add(series); + } + + private void AddAnnotation(string id, string caption, Color color, AxisYBase axis_y, XYDiagramPaneBase pane, Yw.Geometry.Point2d pt, double angle = -10) + { + if (pt == null) + return; + var anchor_pt = pt; + var pane_anchor_pt = new DevExpress.XtraCharts.PaneAnchorPoint(); + pane_anchor_pt.Pane = pane; + pane_anchor_pt.AxisYCoordinate.Axis = axis_y; + pane_anchor_pt.AxisXCoordinate.AxisValue = anchor_pt.X; + pane_anchor_pt.AxisYCoordinate.AxisValue = anchor_pt.Y; + + var relative_position = new DevExpress.XtraCharts.RelativePosition(); + relative_position.Angle = angle; + relative_position.ConnectorLength = 20; + + var text_annotation = new TextAnnotation(); + text_annotation.AnchorPoint = pane_anchor_pt; + text_annotation.AutoHeight = true; + text_annotation.AutoWidth = true; + text_annotation.BackColor = System.Drawing.Color.Transparent; + text_annotation.Border.Color = System.Drawing.Color.Transparent; + text_annotation.Border.Visibility = DefaultBoolean.False; + text_annotation.ConnectorStyle = DevExpress.XtraCharts.AnnotationConnectorStyle.None; + text_annotation.Tag = id; + text_annotation.Padding.Bottom = 1; + text_annotation.Padding.Left = 1; + text_annotation.Padding.Right = 1; + text_annotation.Padding.Top = 1; + text_annotation.RuntimeMoving = true; + text_annotation.RuntimeAnchoring = false; + text_annotation.RuntimeResizing = false; + text_annotation.RuntimeRotation = false; + text_annotation.Text = caption; + text_annotation.TextColor = color; + text_annotation.ShapePosition = relative_position; + text_annotation.Visible = true; + text_annotation.DXFont = new DevExpress.Drawing.DXFont(this.Font.Name, 10F); + + this.chartControl1.AnnotationRepository.Add(text_annotation); + } + + #endregion + #endregion + + #region Set Axis + + private double _minQ, _maxQ; + private double _maxH = 0, _minH = 10000; + private double _maxE = 0, _minE = 0; + private double _maxP = 0, _minP = 1000; + + /// <summary> + /// 璁剧疆鍧愭爣 + /// </summary> + private void SetCoordinate() + { + if (_vm == null) + { + InitialCoordinate(); + return; + } + if (_vm.CurveQH == null || !_vm.CurveQH.Any()) + { + InitialCoordinate(); + return; + } + + _maxQ = 0; _minQ = 100000; + _maxH = 0; _minH = 10000; + _maxE = 0; _minE = 0; + _maxP = 0; _minP = 1000; + + var q_list_list = new List<List<double>>(); + var h_list_list = new List<List<double>>(); + var e_list_list = new List<List<double>>(); + var p_list_list = new List<List<double>>(); + + if (_default_visible) + { + q_list_list.Add(_vm.CurveQH.Select(x => x.X).ToList()); + h_list_list.Add(_vm.CurveQH.Select(x => x.Y).ToList()); + if (_vm.CurveQE != null) + { + e_list_list.Add(_vm.CurveQE.Select(x => x.Y).ToList()); + } + if (_vm.CurveQP != null) + { + p_list_list.Add(_vm.CurveQP.Select(x => x.Y).ToList()); + } + } + + if (_vm.Equip != null) + { + var item = _vm.Equip; + q_list_list.Add(item.CurveEquip.Select(x => x.X).ToList()); + h_list_list.Add(item.CurveEquip.Select(x => x.Y).ToList()); + } + + if (_vm.VariableSpeedList != null && _vm.VariableSpeedList.Any()) + { + foreach (var item in _vm.VariableSpeedList) + { + q_list_list.Add(item.CurveQH.Select(x => x.X).ToList()); + h_list_list.Add(item.CurveQH.Select(x => x.Y).ToList()); + if (item.CurveQE != null) + { + e_list_list.Add(item.CurveQE.Select(x => x.Y).ToList()); + } + if (item.CurveQP != null) + { + p_list_list.Add(item.CurveQP.Select(x => x.Y).ToList()); + } + } + } + + if (_vm.EqualEffList != null && _vm.EqualEffList.Any()) + { + foreach (var item in _vm.EqualEffList) + { + q_list_list.Add(item.CurveEqualEff.Select(x => x.X).ToList()); + h_list_list.Add(item.CurveEqualEff.Select(x => x.Y).ToList()); + } + } + + if (_vm.EqualPowerList != null && _vm.EqualPowerList.Any()) + { + foreach (var item in _vm.EqualPowerList) + { + q_list_list.Add(item.CurveEqualPower.Select(x => x.X).ToList()); + h_list_list.Add(item.CurveEqualPower.Select(x => x.Y).ToList()); + } + } + + + foreach (var list in q_list_list) + { + _minQ = Math.Min(_minQ, list.Min()); + _maxQ = Math.Max(_maxQ, list.Max()); + } + + foreach (var list in h_list_list) + { + _minH = Math.Min(_minH, list.Min()); + _maxH = Math.Max(_maxH, list.Max()); + } + + + foreach (var list in e_list_list) + { + _minE = Math.Max(_minE, list.Min()); + _maxE = Math.Max(_maxE, list.Max()); + } + + + foreach (var list in p_list_list) + { + _minP = Math.Min(_minP, list.Min()); + _maxP = Math.Max(_maxP, list.Max()); + } + + _coordinate = PumpCoordinate.CalcCoordinate(_minQ, _maxQ, _minH, _maxH, _minE, _maxE, _minP, _maxP); + if (_coordinate == null) + return; + if (_coordinate.CoordMinQ + _coordinate.CoordSpaceQ * this._coordinate.GridNumberX < _maxQ * 1.05) + { + _coordinate.GridNumberX++; + } + + } + + /// <summary> + /// 璁剧疆鍥捐〃杞� + /// </summary> + private void SetChartAxis() + { + _axis_x_flow.Visibility = DefaultBoolean.False; + _axis_x_flow.GridLines.Visible = false; + _axis_y_head.Visibility = DefaultBoolean.False; + _axis_y_head.GridLines.Visible = false; + _axis_y_eff.Visibility = DefaultBoolean.False; + _axis_y_eff.GridLines.Visible = false; + _axis_y_power.Visibility = DefaultBoolean.False; + _axis_y_power.GridLines.Visible = false; + if (_coordinate == null) + { + _const_line_x.Visible = false; + _const_line_y.Visible = false; + _bottom_pane.Visibility = ChartElementVisibility.Hidden; + return; + } + + + //璁$畻鍒诲害 Q + var axisQLabels = new List<CustomAxisLabel>(); + var disQ = _coordinate.CoordMinQ; + for (int i = 0; i < _coordinate.GridNumberX + 1; i++) + { + axisQLabels.Add(new CustomAxisLabel(disQ.ToString("N0"), disQ)); + disQ = disQ + _coordinate.CoordSpaceQ; + } + + _axis_x_flow.CustomLabels.Clear(); + _axis_x_flow.CustomLabels.AddRange(axisQLabels.ToArray()); + _axis_x_flow.Visibility = DefaultBoolean.True; + _axis_x_flow.GridLines.Visible = true; + + + //璁$畻鍒诲害 + var axis_head_labels = new List<CustomAxisLabel>(); + var display_head = _coordinate.CoordMinH + _coordinate.CoordSpaceH * _coordinate.StartLineNoH; + for (int i = _coordinate.StartLineNoH; i < _coordinate.EndLineNoH + 1; i++) + { + axis_head_labels.Add(new CustomAxisLabel(display_head.ToString(), display_head)); + display_head = display_head + _coordinate.CoordSpaceH; + } + + _axis_y_head.CustomLabels.Clear(); + _axis_y_head.CustomLabels.AddRange(axis_head_labels.ToArray()); + _axis_y_head.Visibility = DefaultBoolean.True; + _axis_y_head.GridLines.Visible = true; + + //鏁堢巼 + if (_maxE > _minE && _eff_visible) + { + //璁$畻鍒诲害 + var label_list = new List<CustomAxisLabel>(); + var display_eff = _coordinate.CoordMinE + _coordinate.CoordSpaceE * _coordinate.StartLineNoE; + for (int i = _coordinate.StartLineNoE; i < _coordinate.EndLineNoE + 1; i++) + { + label_list.Add(new CustomAxisLabel(display_eff.ToString(), display_eff)); + display_eff = display_eff + _coordinate.CoordSpaceE; + } + + _axis_y_eff.CustomLabels.Clear(); + _axis_y_eff.CustomLabels.AddRange(label_list.ToArray()); + _axis_y_eff.Visibility = DefaultBoolean.True; + _axis_y_eff.GridLines.Visible = true; + } + + //鍔熺巼 + if (_maxP > _minP && _power_visible) + { + //璁$畻鍒诲害 + var label_list = new List<CustomAxisLabel>(); + double display_power = _coordinate.CoordMinP + _coordinate.CoordSpaceP * _coordinate.StartLineNoP; + for (int i = _coordinate.StartLineNoP; i < _coordinate.EndLineNoP + 1; i++) + { + label_list.Add(new CustomAxisLabel(display_power.ToString(), display_power)); + display_power = display_power + _coordinate.CoordSpaceP; + } + + _axis_y_power.CustomLabels.Clear(); + _axis_y_power.CustomLabels.AddRange(label_list.ToArray()); + _axis_y_power.Visibility = DefaultBoolean.True; + _axis_y_power.GridLines.Visible = true; + } + + + _axis_x_flow.SetAxisRange(_coordinate.CoordMinQ, _coordinate.CoordMinQ + _coordinate.GridNumberX * _coordinate.CoordSpaceQ); + + + + //鏄惁鍒嗗壊闈㈡澘:娴侀噺鏁堢巼鍦ㄤ笂,鍔熺巼鍦ㄤ笅 + if (_split_panel) + { + if (_power_visible) + { + var grid_count_head = _coordinate.EndLineNoH - _coordinate.StartLineNoH; + var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; + int grid_count_add = Math.Max(grid_count_head, grid_count_eff); + if (_eff_visible) + grid_count_add += +5;//澶氫袱鏉� + + var max_axis_head = _coordinate.CoordMinH + _coordinate.EndLineNoH * _coordinate.CoordSpaceH; + var min_axis_head = max_axis_head - grid_count_add * _coordinate.CoordSpaceH; + _axis_y_head.SetAxisRange(min_axis_head, max_axis_head); + + var min_axis_eff = _coordinate.CoordMinE + _coordinate.StartLineNoE * _coordinate.CoordSpaceE; + var max_axis_eff = min_axis_eff + grid_count_add * _coordinate.CoordSpaceE; + + _axis_y_eff.SetAxisRange(min_axis_eff, max_axis_eff); + _bottom_pane.Visibility = ChartElementVisibility.Visible; + } + else + { + var grid_count_power = _coordinate.EndLineNoP - _coordinate.StartLineNoP; + var grid_delete_head = grid_count_power * _coordinate.CoordSpaceH; + grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; + + var grid_delete_eff = grid_count_power * _coordinate.CoordSpaceE; + grid_delete_eff = _coordinate.CoordMinE < 0 ? -grid_delete_eff : grid_delete_eff; + + _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); + _axis_y_eff.SetAxisRange(_coordinate.CoordMinE - grid_delete_eff, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); + + _bottom_pane.Visibility = ChartElementVisibility.Hidden; + } + + if ((!_eff_visible) && (!_power_visible)) + { + _axis_y_head.SetAxisRange(_coordinate.DispMinH(), _coordinate.DispMaxH()); + } + _axis_y_power.SetAxisRange(_coordinate.DispMinP(), _coordinate.DispMaxP()); + } + else + { + if ((!_eff_visible) && (!_power_visible)) + { + _axis_y_head.SetAxisRange(_coordinate.DispMinH(), _coordinate.DispMaxH()); + } + else if ((!_eff_visible) && _power_visible) + { + var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; + if (_coordinate.EndLineNoH - _coordinate.StartLineNoH < 6) + grid_count_eff++; + var grid_delete_head = grid_count_eff * _coordinate.CoordSpaceH; + grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; + var grid_delete_power = grid_count_eff * _coordinate.CoordSpaceP; + + _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); + _axis_y_power.SetAxisRange(_coordinate.CoordMinP, _coordinate.CoordMinP + _coordinate.GridNumberY * _coordinate.CoordSpaceP - grid_delete_power); + } + else if (_eff_visible && (!_power_visible)) + { + var grid_count_power = _coordinate.EndLineNoP - _coordinate.StartLineNoP; + var grid_delete_head = grid_count_power * _coordinate.CoordSpaceH; + grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; + + var grid_delete_eff = grid_count_power * _coordinate.CoordSpaceE; + grid_delete_eff = _coordinate.CoordMinE < 0 ? -grid_delete_eff : grid_delete_eff; + + _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); + _axis_y_eff.SetAxisRange(_coordinate.CoordMinE - grid_delete_eff, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); + } + else + { + _axis_y_head.SetAxisRange(_coordinate.CoordMinH, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); + _axis_y_eff.SetAxisRange(_coordinate.CoordMinE, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); + _axis_y_power.SetAxisRange(_coordinate.CoordMinP, _coordinate.CoordMinP + _coordinate.GridNumberY * _coordinate.CoordSpaceP); + } + + _bottom_pane.Visibility = ChartElementVisibility.Hidden; + } + + + } + + #endregion + + #region Set Axis Value + + /// <summary> + /// 璁剧疆X杞村�� + /// </summary> + public void SetAxisXValue(double? x = null) + { + if (!_line_visible) + { + _const_line_x.Visible = false; + _const_line_x.Title.Visible = false; + _const_line_y.Visible = false; + _const_line_y.Title.Visible = false; + return; + } + else + { + _const_line_x.Visible = true; + _const_line_x.Title.Visible = true; + _const_line_y.Visible = true; + _const_line_y.Title.Visible = true; + } + if (this.IsInvalidData()) + return; + + var min_x = _fit_pt_list.Min(x => x.X); + var max_x = _fit_pt_list.Max(x => x.X); + + if (x == null) + { + x = (min_x + max_x) / 2; + } + else + { + if (x < min_x || x > max_x) + return; + } + + var x_value = x.Value; + var y_value = _fit_pt_list.GetInterPointsY(x_value)?.FirstOrDefault(); + + _const_line_x.AxisValue = x_value; + _const_line_x.Title.Text = $"{x_value:N1}"; + + _const_line_y.AxisValue = y_value; + _const_line_y.Title.Text = $"{y_value:N1}"; + + } + + /// <summary> + /// 璁剧疆Y杞村�� + /// </summary> + public void SetAxisYValue(double y) + { + if (!_line_visible) + return; + if (IsInvalidData()) + return; + + var min_y = _fit_pt_list.Min(x => x.Y); + var max_y = _fit_pt_list.Max(x => x.Y); + if (y < min_y || y > max_y) + return; + + var x_value = _fit_pt_list.GetInterPointsX(y)?.LastOrDefault(); + SetAxisXValue(x_value); + + } + + #endregion + } +} diff --git "a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.resx" "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.resx" new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart - \345\244\215\345\210\266.resx" @@ -0,0 +1,120 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs index 8b6520c..804df39 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs @@ -1,5 +1,8 @@ 锘縰sing DevExpress.Utils; +using DevExpress.Utils.Drawing; using DevExpress.XtraCharts; +using Yw.Ahart; +using Yw.Geometry; namespace Yw.WinFrmUI.Phart { @@ -26,19 +29,63 @@ private ConstantLine _const_line_x; private ConstantLine _const_line_y; - private TextAnnotation _const_txt_annotation; + private TextAnnotation _anno_txt_query_info; private PumpCoordinate _coordinate = null; - private PumpCurveViewModel _vm = null; + private List<PumpViewChartViewModel> _vm_list = null; + private List<(List<Yw.Geometry.Point2d> FitPointList, bool IsClosed, double Tension)> _equal_eff_list = null; + private (List<Yw.Geometry.Point2d> FitPointList, PumpSectPointViewModel SectPoint)? _equip = null; - private bool _default_visible = false; private bool _power_visible = false; private bool _eff_visible = false; private bool _equal_eff_visible = false; private bool _split_panel = false; + private bool _line_visible = false; private bool _initial_data = false; + + #endregion + + #region Public Variable + + /// <summary> + /// + /// </summary> + public bool LineVisible + { + get + { + return _line_visible; + } + set + { + _line_visible = value; + _const_line_x.Visible = value; + _const_line_y.Visible = value; + SetAxisXValue(); + } + } + + /// <summary> + /// + /// </summary> + + public bool SplitPanel + { + get + { + return _split_panel; + } + set + { + _split_panel = value; + } + } + + #endregion + + #region Private Initial /// <summary> /// 鍒濆鍖栧浘琛� @@ -114,9 +161,9 @@ #endregion - #region Chart Event + #region Private Chart Event - ToolTipController toolTip = new ToolTipController(); + ToolTipController _tool_tip = new(); private void chartControl1_ObjectHotTracked(object sender, HotTrackEventArgs e) { //if (!_initial_data) @@ -124,53 +171,34 @@ //if (e.AdditionalObject is SeriesPoint series_pt) //{ // var tip = string.Format("X:{0:N1} Y:{1:N1}", series_pt.Argument, series_pt.Values[0]); - // toolTip.ShowHint(tip); + // _tool_tip.ShowHint(tip); //} //else //{ - // toolTip.HideHint(); + // _tool_tip.HideHint(); //} } - - // 鍙抽敭瀵硅薄 - private object _rightClickObj = null; - private bool _onMoveWorkPointLine = false; - private bool _onMoveWorkHLine = false; + private bool _on_move_x_line = false; + private bool _on_move_y_line = false; private void chartControl1_MouseDown(object sender, MouseEventArgs e) { if (!_initial_data) return; var hitInfo = chartControl1.CalcHitInfo(e.Location); + if (e.Button == MouseButtons.Left) { - if (hitInfo.InSeries) - { - _rightClickObj = hitInfo.Series; - - } - else if (hitInfo.InAxis) - { - _rightClickObj = hitInfo.Axis; - } - else if (hitInfo.InConstantLine) + if (hitInfo.InConstantLine) { if (hitInfo.ConstantLine == _const_line_x) { - _onMoveWorkPointLine = true; + _on_move_x_line = true; } else if (hitInfo.ConstantLine == _const_line_y) { - _onMoveWorkHLine = true; + _on_move_y_line = true; } - } - else if (hitInfo.InAnnotation) - { - _rightClickObj = hitInfo.Annotation; - } - else - { - _rightClickObj = null; } } @@ -178,53 +206,53 @@ private void chartControl1_MouseMove(object sender, MouseEventArgs e) { - //if (!_initial_data) - // return; + if (!_initial_data) + return; - //if (_onMoveWorkPointLine) - //{ - // var diagram_coordinates = _diagram.PointToDiagram(e.Location); - // var axisValue = diagram_coordinates.GetAxisValue(_axis_x_flow); - // if (axisValue == null) - // return; - // double chartQ = axisValue.NumericalValue; - // CalcWorkPointByQ(chartQ); + if (_on_move_x_line) + { + var diagram_coordinates = _diagram.PointToDiagram(e.Location); + var axis_value = diagram_coordinates.GetAxisValue(_axis_x_flow); + if (axis_value == null) + return; + double chartQ = axis_value.NumericalValue; + SetAxisXValue(chartQ); - //} - //else if (_onMoveWorkHLine) - //{ - // var diagram_coordinates = _diagram.PointToDiagram(e.Location); - // var axisValue = diagram_coordinates.GetAxisValue(_axis_y_head); - // if (axisValue == null) - // return; - // double chartH = axisValue.NumericalValue; - // CalcWorkPointByH(chartH); - //} - //else - //{ - // var hitInfo = chartControl1.CalcHitInfo(e.Location); - // if (hitInfo.InConstantLine) - // { - // this.chartControl1.Cursor = Cursors.Hand; - // } - // else if (hitInfo.InAnnotation) - // { - // this.chartControl1.Cursor = Cursors.SizeAll; + } + else if (_on_move_y_line) + { + var diagram_coordinates = _diagram.PointToDiagram(e.Location); + var axis_value = diagram_coordinates.GetAxisValue(_axis_y_head); + if (axis_value == null) + return; + double chartH = axis_value.NumericalValue; + SetAxisYValue(chartH); + } + else + { + var hitInfo = chartControl1.CalcHitInfo(e.Location); + if (hitInfo.InConstantLine) + { + this.chartControl1.Cursor = Cursors.Hand; + } + else if (hitInfo.InAnnotation) + { + this.chartControl1.Cursor = Cursors.SizeAll; - // } - // else - // { - // this.chartControl1.Cursor = Cursors.Default; - // } - //} + } + else + { + this.chartControl1.Cursor = Cursors.Default; + } + } } private void chartControl1_MouseUp(object sender, MouseEventArgs e) { if (!_initial_data) return; - _onMoveWorkPointLine = false; - _onMoveWorkHLine = false; + _on_move_x_line = false; + _on_move_y_line = false; } private void chartControl1_Resize(object sender, EventArgs e) @@ -236,7 +264,7 @@ { if (!_initial_data) return; - if (_vm == null) + if (_vm_list == null) return; if (_axis_x_flow.Visibility == DefaultBoolean.False) return; @@ -244,16 +272,15 @@ return; var cache = dx_args.Cache; cache.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; - if (_equal_eff_visible && _vm.EqualEffList != null && _vm.EqualEffList.Any()) + + if (_equal_eff_list != null && _equal_eff_list.Any()) { using Pen pen = new(Color.Green, 2); - foreach (var eq_eff in _vm.EqualEffList) + foreach (var vm in _equal_eff_list) { - if (!eq_eff.IsValid()) - continue; - var eq_eff_pt_list = eq_eff.CurveEqualEff; + var fit_pt_list = vm.FitPointList; var pic_eq_eff_pt_list = new List<Point>(); - foreach (var eq_eff_pt in eq_eff_pt_list) + foreach (var eq_eff_pt in fit_pt_list) { var x = eq_eff_pt.X; var y = eq_eff_pt.Y; @@ -267,16 +294,16 @@ var pt_count = pic_eq_eff_pt_list.Count; if (pt_count > 2) { - if (eq_eff.IsClosed) + if (vm.IsClosed) { var path = cache.CreatePath(); - path.AddClosedCurve(pic_eq_eff_pt_list.ToArray(), (float)eq_eff.Tension); + path.AddClosedCurve(pic_eq_eff_pt_list.ToArray(), (float)vm.Tension); cache.DrawPath(pen, path); } else { var path = cache.CreatePath(); - path.AddCurve(pic_eq_eff_pt_list.ToArray(), (float)eq_eff.Tension); + path.AddCurve(pic_eq_eff_pt_list.ToArray(), (float)vm.Tension); cache.DrawPath(pen, path); } } @@ -287,45 +314,74 @@ else if (pt_count == 1) { Rectangle rc = new Rectangle(pic_eq_eff_pt_list[0].X - 2, pic_eq_eff_pt_list[0].Y - 2, 4, 4); - using (Brush b = new SolidBrush(pen.Color)) - cache.FillEllipse(b, rc); + using Brush b = new SolidBrush(pen.Color); + cache.FillEllipse(b, rc); } - } + } - if (_vm.Equip != null && _vm.Equip.IsValid()) + if (_equip.HasValue) { using Pen pen = new(Color.Black, 2); pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot; + DrawEquipLine(dx_args.Cache, pen, _equip.Value.FitPointList); + DrawEquipPoint(dx_args.Cache, pen, _equip.Value.SectPoint); + } + } - var offset_size = 10; - var qh_pt = _diagram.DiagramToPoint(_vm.Equip.SectQ, _vm.Equip.SectH, _axis_x_flow, _axis_y_head); - var qh_pt_x = qh_pt.Point.X; - var qh_pt_y = qh_pt.Point.Y; - cache.DrawLine(pen, new Point(qh_pt_x, qh_pt_y - offset_size), new Point(qh_pt_x, qh_pt_y + offset_size)); + private void DrawEquipPoint(GraphicsCache cache, Pen pen, PumpSectPointViewModel sect_pt) + { + if (sect_pt == null) + return; - if (_eff_visible && _vm.Equip.SectE != null) - { - var qe_pt = _diagram.DiagramToPoint(_vm.Equip.SectQ, _vm.Equip.SectE.Value, _axis_x_flow, _axis_y_eff); - var qe_pt_x = qe_pt.Point.X; - var qe_pt_y = qe_pt.Point.Y; - cache.DrawLine(pen, new Point(qe_pt_x, qe_pt_y - offset_size), new Point(qe_pt_x, qe_pt_y + offset_size)); - } - if (_power_visible && _vm.Equip.SectP != null) - { - var qp_pt = _diagram.DiagramToPoint(_vm.Equip.SectQ, _vm.Equip.SectP.Value, _axis_x_flow, _axis_y_power); - var qp_pt_x = qp_pt.Point.X; - var qp_pt_y = qp_pt.Point.Y; - cache.DrawLine(pen, new Point(qp_pt_x, qp_pt_y - offset_size), new Point(qp_pt_x, qp_pt_y + offset_size)); - } + double Q = sect_pt.Q; + double H = sect_pt.H; + double? E = sect_pt.E; + double? P = sect_pt.P; + + var offset_size = 10; + var qh_pt = _diagram.DiagramToPoint(Q, H, _axis_x_flow, _axis_y_head); + + var qh_pt_x = qh_pt.Point.X; + var qh_pt_y = qh_pt.Point.Y; + cache.DrawLine(pen, new Point(qh_pt_x, qh_pt_y - offset_size), new Point(qh_pt_x, qh_pt_y + offset_size)); + + if (E.HasValue && _eff_visible) + { + var qe_pt = _diagram.DiagramToPoint(Q, E.Value, _axis_x_flow, _axis_y_eff); + var qe_pt_x = qe_pt.Point.X; + var qe_pt_y = qe_pt.Point.Y; + cache.DrawLine(pen, new Point(qe_pt_x, qe_pt_y - offset_size), new Point(qe_pt_x, qe_pt_y + offset_size)); + } + + if (P.HasValue && _power_visible) + { + var qp_pt = _diagram.DiagramToPoint(Q, P.Value, _axis_x_flow, _axis_y_power); + var qp_pt_x = qp_pt.Point.X; + var qp_pt_y = qp_pt.Point.Y; + cache.DrawLine(pen, new Point(qp_pt_x, qp_pt_y - offset_size), new Point(qp_pt_x, qp_pt_y + offset_size)); } } + private void DrawEquipLine(GraphicsCache cache, Pen pen, List<Yw.Geometry.Point2d> pt_list) + { + if (pt_list == null || !pt_list.Any()) + return; + var pt_f_list = new List<PointF>(); + foreach (var pt in pt_list) + { + var x = pt.X; + var y = pt.Y; + var c_pt = _diagram.DiagramToPoint(x, y, _axis_x_flow, _axis_y_head); + pt_f_list.Add(new PointF(c_pt.Point.X, c_pt.Point.Y)); + } - - + using var path = new System.Drawing.Drawing2D.GraphicsPath(); + path.AddCurve(pt_f_list.ToArray()); + cache.DrawPath(pen, path); + } #endregion #region Set @@ -333,10 +389,12 @@ /// <summary> /// 娓呯┖鍥捐〃 /// </summary> - public void ClearBindingData() + public void Clear() { - _vm = null; - _default_visible = false; + _vm_list = null; + _equal_eff_list = null; + _equip = null; + _coordinate = null; _split_panel = false; _eff_visible = false; _power_visible = false; @@ -351,197 +409,125 @@ /// <summary> /// 璁剧疆鍥捐〃 /// </summary> - public void SetBindingData(PumpCurveViewModel vm, bool default_visible = true, bool split_panel = false, bool eff_visible = false, bool power_visible = true, bool equal_eff_visible = false) + public void SetBindingData(List<PumpViewChartViewModel> vm_list, string coordinate = null, bool split_panel = false, bool eff_visible = false, bool power_visible = true, bool equal_eff_visible = false) { - _vm = vm; - _default_visible = default_visible; + _vm_list = vm_list; + _equal_eff_list = null; + _equip = null; + _coordinate = PumpCoordinate.ToModel(coordinate); _split_panel = split_panel; _eff_visible = eff_visible; _power_visible = power_visible; _equal_eff_visible = equal_eff_visible; + this.chartControl1.BeginInit(); this.chartControl1.Series.Clear(); this.chartControl1.AnnotationRepository.Clear(); this.chartControl1.Legend.CustomItems.Clear(); - if (vm == null) + if (IsInvalidData()) { _initial_data = false; this.chartControl1.EndInit(); return; } + AxisXBase axis_x = null; + AxisYBase axis_y = null; + XYDiagramPaneBase pane = null; - if (default_visible) - AddDefault(vm); - - AddEquip(vm.Equip); - AddVariableSpeedList(vm.VariableSpeedList); - if (_equal_eff_visible) - AddEqualEffList(vm.EqualEffList); - AddEqualPowerList(vm.EqualPowerList); - - if (vm.Coordinate == null) + _equal_eff_list = new List<(List<Point2d> FitPointList, bool IsClosed, double Tension)>(); + foreach (var vm in _vm_list) { + if (vm.CurveType == Ahart.eCurveType.EqualE) + { + axis_x = _axis_x_flow; + axis_y = _axis_y_head; + pane = _default_pane; + var paras = PhartGraphHelper.GetGraphParas<EqualEGraphParasViewModel>(vm.CurveType, vm.GraphParas); + if (paras.Tension<=0) + { + paras.Tension = 0.7; + } + _equal_eff_list.Add((vm.FitPointList, paras.IsClosed, paras.Tension)); + } + else if (vm.CurveType == Ahart.eCurveType.QH) + { + axis_x = _axis_x_flow; + axis_y = _axis_y_head; + pane = _default_pane; + + } + else if (vm.CurveType == Ahart.eCurveType.QE) + { + axis_x = _axis_x_flow; + axis_y = _axis_y_eff; + pane = _default_pane; + + } + else if (vm.CurveType == Ahart.eCurveType.QP) + { + axis_x = _axis_x_flow; + axis_y = _axis_y_power; + pane = _split_panel? _bottom_pane: _default_pane; + } + + if (vm.AnnotationList != null && vm.AnnotationList.Any()) + { + foreach (var name in vm.AnnotationList) + { + AddAnnotation(vm.Id, name.Text, vm.Color, axis_y, pane, new Geometry.Point2d(name.X, name.Y), -40); + } + } + + + if (vm.CurveType == Ahart.eCurveType.EqualE) + continue; + + var dash_style = DashStyle.Solid; + if (vm.Hz == 50) + dash_style = DashStyle.Dot; + + AddLineSeries(vm.Id, vm.Color, axis_x, axis_y, pane, vm.FitPointList, dash_style); + } + + if (_coordinate == null) SetCoordinate(); - } - else - { - _coordinate = vm.Coordinate; - } SetChartAxis(); this.chartControl1.EndInit(); _initial_data = true; + } - #region Add Data - private void AddDefault(PumpCurveViewModel vm) + /// <summary> + /// 璁剧疆鍥捐〃 + /// </summary> + public void SetEquip(List<Yw.Geometry.Point2d> fit_pt_list, PumpSectPointViewModel sect_pt) { - var id = vm.Id; - var caption_qh = vm.CurveQHName; - var caption_qp = vm.CurveQPName; - var color_qh = vm.ColorQH ?? PumpChartDisplay.CurveColorQH; - var color_qe = vm.ColorQE ?? PumpChartDisplay.CurveColorQE; - var color_qp = vm.ColorQP ?? PumpChartDisplay.CurveColorQP; - - var qh = vm.CurveQH; - var qe = vm.CurveQE; - var qp = vm.CurveQP; - - XYDiagramPaneBase bottom_pane = _split_panel ? _bottom_pane : _default_pane; - - AddLineSeries(id, color_qh, _axis_x_flow, _axis_y_head, _default_pane, qh, DevExpress.XtraCharts.DashStyle.Dash); - if (!string.IsNullOrEmpty(caption_qh)) - AddAnnotation(id, caption_qh, color_qh, _axis_y_head, _default_pane, qh.Last()); - - if (qe != null && qe.Any() && _eff_visible) + _equip = null; + if (fit_pt_list != null && fit_pt_list.Any() && sect_pt != null) { - AddLineSeries(id, color_qe, _axis_x_flow, _axis_y_eff, _default_pane, qe, DevExpress.XtraCharts.DashStyle.Dash); + _equip = (fit_pt_list, sect_pt); } - if (qp != null && qp.Any() && _power_visible) - { - AddLineSeries(id, color_qp, _axis_x_flow, _axis_y_power, bottom_pane, qp, DevExpress.XtraCharts.DashStyle.Dash); - if (!string.IsNullOrEmpty(caption_qp)) - { - AddAnnotation(id, caption_qp, color_qp, _axis_y_power, bottom_pane, qp.Last()); - } - } + SetCoordinate(); + SetChartAxis(); } - private void AddEquip(PumpCurveEquipViewModel vm) + //鏄惁鏄棤鏁堟暟鎹� + private bool IsInvalidData() { - if (vm == null) - return; - var id = vm.Id; - var caption = vm.CurveName; - var color = vm.Color ?? Color.Black; - - var equip = vm.CurveEquip; - var equip_pt = new Yw.Geometry.Point2d(vm.PipeQ, vm.PipeH); - - AddLineSeries(id, color, _axis_x_flow, _axis_y_head, _default_pane, equip, DevExpress.XtraCharts.DashStyle.DashDotDot); - // AddPointSeries(id, color, _axis_x_flow, _axis_y_head, _default_pane, new List<Geometry.Point2d>() { equip_pt }, MarkerKind.ThinCross); - if (!string.IsNullOrEmpty(caption)) - AddAnnotation(id, caption, color, _axis_y_head, _default_pane, equip.Last()); - } - - private void AddVariableSpeedList(List<PumpCurveVariableSpeedViewModel> vm_list) - { - if (vm_list == null || !vm_list.Any()) - return; - XYDiagramPaneBase bottom_pane = _split_panel ? _bottom_pane : _default_pane; - foreach (var vm in vm_list) + if (_vm_list == null || !_vm_list.Any()) { - if (!vm.IsValid()) - continue; - - var id = vm.Id; - var caption_qh = vm.CurveQHName; - var caption_qp = vm.CurveQPName; - var color_qh = vm.ColorQH ?? PumpChartDisplay.CurveColorQH; - var color_qe = vm.ColorQE ?? PumpChartDisplay.CurveColorQE; - var color_qp = vm.ColorQP ?? PumpChartDisplay.CurveColorQP; - - var qh = vm.CurveQH; - var qe = vm.CurveQE; - var qp = vm.CurveQP; - - AddLineSeries(id, color_qh, _axis_x_flow, _axis_y_head, _default_pane, qh); - if (!string.IsNullOrEmpty(caption_qh)) - AddAnnotation(id, caption_qh, color_qh, _axis_y_head, _default_pane, qh.Last()); - - if (qe != null && qe.Any() && _eff_visible) - { - AddLineSeries(id, color_qe, _axis_x_flow, _axis_y_eff, _default_pane, qe); - } - - if (qp != null && qp.Any() && _power_visible) - { - AddLineSeries(id, color_qp, _axis_x_flow, _axis_y_power, bottom_pane, qp); - if (!string.IsNullOrEmpty(caption_qp)) - { - AddAnnotation(id, caption_qp, color_qp, _axis_y_power, bottom_pane, qp.Last()); - } - } + return true; } - } - - private void AddEqualEffList(List<PumpCurveEqualEffViewModel> vm_list) - { - if (vm_list == null || !vm_list.Any()) - return; - foreach (var vm in vm_list) + if (!_vm_list.Exists(x => x.CurveType == Ahart.eCurveType.QH)) { - if (!vm.IsValid()) - continue; - - var id = vm.Id; - var caption = vm.CurveName; - var color = vm.Color ?? Color.Green; - - var equif_eff = vm.CurveEqualEff; - if (!string.IsNullOrEmpty(caption)) - { - if (equif_eff.Count > 2) - { - AddAnnotation(id, caption, color, _axis_y_head, _default_pane, equif_eff.First(), 60); - } - AddAnnotation(id, caption, color, _axis_y_head, _default_pane, equif_eff.Last(), 60); - } + return true; } - - + return false; } - private void AddEqualPowerList(List<PumpCurveEqualPowerViewModel> vm_list) - { - if (vm_list == null || !vm_list.Any()) - return; - - foreach (var vm in vm_list) - { - if (!vm.IsValid()) - continue; - - var id = vm.Id; - var caption = vm.CurveName; - var color = vm.Color ?? Color.Green; - var equif_power = vm.CurveEqualPower; - if (equif_power.Count < 2) - { - AddPointSeries(id, color, _axis_x_flow, _axis_y_head, _default_pane, equif_power); - } - else - { - AddLineSeries(id, color, _axis_x_flow, _axis_y_head, _default_pane, equif_power, DashStyle.Dash); - } - if (!string.IsNullOrEmpty(caption)) - AddAnnotation(id, caption, color, _axis_y_head, _default_pane, equif_power.Last()); - } - } - - #endregion #region Add Chart Data @@ -586,6 +572,10 @@ view.LineStyle.DashStyle = dash; view.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.Round; view.LineStyle.Thickness = 2; + if (dash!= DashStyle.Solid) + { + view.LineStyle.Thickness =3; + } view.Color = color; view.EnableAntialiasing = DefaultBoolean.True; view.MarkerVisibility = DefaultBoolean.False; @@ -652,6 +642,7 @@ } #endregion + #endregion #region Set Axis @@ -666,12 +657,7 @@ /// </summary> private void SetCoordinate() { - if (_vm == null) - { - InitialCoordinate(); - return; - } - if (_vm.CurveQH == null || !_vm.CurveQH.Any()) + if (IsInvalidData()) { InitialCoordinate(); return; @@ -687,60 +673,28 @@ var e_list_list = new List<List<double>>(); var p_list_list = new List<List<double>>(); - if (_default_visible) + foreach (var vm in _vm_list) { - q_list_list.Add(_vm.CurveQH.Select(x => x.X).ToList()); - h_list_list.Add(_vm.CurveQH.Select(x => x.Y).ToList()); - if (_vm.CurveQE != null) + if (vm.CurveType == Ahart.eCurveType.QH || vm.CurveType == Ahart.eCurveType.EqualE) { - e_list_list.Add(_vm.CurveQE.Select(x => x.Y).ToList()); + q_list_list.Add(vm.FitPointList.Select(x => x.X).ToList()); + h_list_list.Add(vm.FitPointList.Select(x => x.Y).ToList()); } - if (_vm.CurveQP != null) + else if (vm.CurveType == Ahart.eCurveType.QE) { - p_list_list.Add(_vm.CurveQP.Select(x => x.Y).ToList()); + e_list_list.Add(vm.FitPointList.Select(x => x.Y).ToList()); + } + else if (vm.CurveType == Ahart.eCurveType.QP) + { + p_list_list.Add(vm.FitPointList.Select(x => x.Y).ToList()); } } - if (_vm.Equip != null) + if (_equip.HasValue) { - var item = _vm.Equip; - q_list_list.Add(item.CurveEquip.Select(x => x.X).ToList()); - h_list_list.Add(item.CurveEquip.Select(x => x.Y).ToList()); - } - - if (_vm.VariableSpeedList != null && _vm.VariableSpeedList.Any()) - { - foreach (var item in _vm.VariableSpeedList) - { - q_list_list.Add(item.CurveQH.Select(x => x.X).ToList()); - h_list_list.Add(item.CurveQH.Select(x => x.Y).ToList()); - if (item.CurveQE != null) - { - e_list_list.Add(item.CurveQE.Select(x => x.Y).ToList()); - } - if (item.CurveQP != null) - { - p_list_list.Add(item.CurveQP.Select(x => x.Y).ToList()); - } - } - } - - if (_vm.EqualEffList != null && _vm.EqualEffList.Any()) - { - foreach (var item in _vm.EqualEffList) - { - q_list_list.Add(item.CurveEqualEff.Select(x => x.X).ToList()); - h_list_list.Add(item.CurveEqualEff.Select(x => x.Y).ToList()); - } - } - - if (_vm.EqualPowerList != null && _vm.EqualPowerList.Any()) - { - foreach (var item in _vm.EqualPowerList) - { - q_list_list.Add(item.CurveEqualPower.Select(x => x.X).ToList()); - h_list_list.Add(item.CurveEqualPower.Select(x => x.Y).ToList()); - } + var fit_pt_list = _equip.Value.FitPointList; + q_list_list.Add(fit_pt_list.Select(x => x.X).ToList()); + h_list_list.Add(fit_pt_list.Select(x => x.Y).ToList()); } @@ -869,99 +823,316 @@ _axis_x_flow.SetAxisRange(_coordinate.CoordMinQ, _coordinate.CoordMinQ + _coordinate.GridNumberX * _coordinate.CoordSpaceQ); - - - - //鏄惁鍒嗗壊闈㈡澘:娴侀噺鏁堢巼鍦ㄤ笂,鍔熺巼鍦ㄤ笅 if (_split_panel) { - if (_power_visible) + + var grid_count_head = _coordinate.EndLineNoH - _coordinate.StartLineNoH; + var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; + int grid_count_up = Math.Max(grid_count_head, grid_count_eff); + if (_eff_visible) { - var grid_count_head = _coordinate.EndLineNoH - _coordinate.StartLineNoH; - var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; - int grid_count_add = Math.Max(grid_count_head, grid_count_eff); - if (_eff_visible) - grid_count_add += +5;//澶氫袱鏉� - - var max_axis_head = _coordinate.CoordMinH + _coordinate.EndLineNoH * _coordinate.CoordSpaceH; - var min_axis_head = max_axis_head - grid_count_add * _coordinate.CoordSpaceH; - _axis_y_head.SetAxisRange(min_axis_head, max_axis_head); - - var min_axis_eff = _coordinate.CoordMinE + _coordinate.StartLineNoE * _coordinate.CoordSpaceE; - var max_axis_eff = min_axis_eff + grid_count_add * _coordinate.CoordSpaceE; - - _axis_y_eff.SetAxisRange(min_axis_eff, max_axis_eff); - _bottom_pane.Visibility = ChartElementVisibility.Visible; + grid_count_up += 4;//澶氫袱鏉� } - else - { - var grid_count_power = _coordinate.EndLineNoP - _coordinate.StartLineNoP; - var grid_delete_head = grid_count_power * _coordinate.CoordSpaceH; - grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; - var grid_delete_eff = grid_count_power * _coordinate.CoordSpaceE; - grid_delete_eff = _coordinate.CoordMinE < 0 ? -grid_delete_eff : grid_delete_eff; + var max_axis_head = _coordinate.CoordMinH + _coordinate.EndLineNoH * _coordinate.CoordSpaceH; + var min_axis_head = max_axis_head - grid_count_up * _coordinate.CoordSpaceH; + _axis_y_head.SetAxisRange(min_axis_head, max_axis_head); - _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); - _axis_y_eff.SetAxisRange(_coordinate.CoordMinE - grid_delete_eff, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); - - _bottom_pane.Visibility = ChartElementVisibility.Hidden; - } + var min_axis_eff = _coordinate.CoordMinE + _coordinate.StartLineNoE * _coordinate.CoordSpaceE; + var max_axis_eff = min_axis_eff + grid_count_up * _coordinate.CoordSpaceE; + _axis_y_eff.SetAxisRange(min_axis_eff, max_axis_eff); if ((!_eff_visible) && (!_power_visible)) { _axis_y_head.SetAxisRange(_coordinate.DispMinH(), _coordinate.DispMaxH()); } - _axis_y_power.SetAxisRange(_coordinate.DispMinP(), _coordinate.DispMaxP()); + + _axis_y_power.SetAxisRange(_coordinate.DispMinP(), _coordinate.DispMaxP()); + _bottom_pane.Visibility = ChartElementVisibility.Visible; } else { - if ((!_eff_visible) && (!_power_visible)) - { - _axis_y_head.SetAxisRange(_coordinate.DispMinH(), _coordinate.DispMaxH()); - } - else if ((!_eff_visible) && _power_visible) - { - var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; - if (_coordinate.EndLineNoH - _coordinate.StartLineNoH < 6) - grid_count_eff++; - var grid_delete_head = grid_count_eff * _coordinate.CoordSpaceH; - grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; - var grid_delete_power = grid_count_eff * _coordinate.CoordSpaceP; - - _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); - _axis_y_power.SetAxisRange(_coordinate.CoordMinP, _coordinate.CoordMinP + _coordinate.GridNumberY * _coordinate.CoordSpaceP - grid_delete_power); - } - else if (_eff_visible && (!_power_visible)) - { - var grid_count_power = _coordinate.EndLineNoP - _coordinate.StartLineNoP; - var grid_delete_head = grid_count_power * _coordinate.CoordSpaceH; - grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; - - var grid_delete_eff = grid_count_power * _coordinate.CoordSpaceE; - grid_delete_eff = _coordinate.CoordMinE < 0 ? -grid_delete_eff : grid_delete_eff; - - _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); - _axis_y_eff.SetAxisRange(_coordinate.CoordMinE - grid_delete_eff, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); - } - else + if (_eff_visible) { _axis_y_head.SetAxisRange(_coordinate.CoordMinH, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); _axis_y_eff.SetAxisRange(_coordinate.CoordMinE, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); _axis_y_power.SetAxisRange(_coordinate.CoordMinP, _coordinate.CoordMinP + _coordinate.GridNumberY * _coordinate.CoordSpaceP); } + else + { + + var grid_count_eff = _coordinate.GridNumberY - (_coordinate.EndLineNoH - _coordinate.StartLineNoH+ _coordinate.EndLineNoP - _coordinate.StartLineNoP); + var grid_delete_head = grid_count_eff * _coordinate.CoordSpaceH; + double min_head = _coordinate.CoordMinH; + if (true) + { + if (_coordinate.CoordMinH<0) + { + min_head=_coordinate.CoordMinH - -grid_delete_head; + } + else + { + min_head = _coordinate.CoordMinH+grid_delete_head; + } + } + var grid_delete_power = grid_count_eff * _coordinate.CoordSpaceP; + _axis_y_head.SetAxisRange(min_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); + _axis_y_power.SetAxisRange(_coordinate.CoordMinP, _coordinate.CoordMinP + _coordinate.GridNumberY * _coordinate.CoordSpaceP - grid_delete_power); + } + _bottom_pane.Visibility = ChartElementVisibility.Hidden; } - } - - - - #endregion + #region Set Axis Value + + /// <summary> + /// 璁剧疆X杞村�� + /// </summary> + public void SetAxisXValue(double? x = null) + { + if (!_line_visible) + { + _const_line_x.Visible = false; + _const_line_x.Title.Visible = false; + _const_line_y.Visible = false; + _const_line_y.Title.Visible = false; + return; + } + else + { + _const_line_x.Visible = true; + _const_line_x.Title.Visible = true; + _const_line_y.Visible = true; + _const_line_y.Title.Visible = true; + } + if (this.IsInvalidData()) + return; + var vm_sel = _vm_list.Find(x => x.IsSelect); + if (vm_sel == null) + return; + + var min_x = vm_sel.FitPointList.Min(x => x.X); + var max_x = vm_sel.FitPointList.Max(x => x.X); + + if (x == null) + { + x = (min_x + max_x) / 2; + } + else + { + if (x < min_x || x > max_x) + return; + } + + var x_value = x.Value; + var y_value = vm_sel.FitPointList.GetInterPointsY(x_value)?.FirstOrDefault(); + + _const_line_x.AxisValue = x_value; + _const_line_x.Title.Text = $"{x_value:N1}"; + + _const_line_y.AxisValue = y_value; + _const_line_y.Title.Text = $"{y_value:N1}"; + } + + /// <summary> + /// 璁剧疆Y杞村�� + /// </summary> + public void SetAxisYValue(double y) + { + if (!_line_visible) + return; + if (IsInvalidData()) + return; + var vm_sel = _vm_list.Find(x => x.IsSelect); + if (vm_sel == null) + return; + + var min_y = vm_sel.FitPointList.Min(x => x.Y); + var max_y = vm_sel.FitPointList.Max(x => x.Y); + if (y < min_y || y > max_y) + return; + + var x_value = vm_sel.FitPointList.GetInterPointsX(y)?.LastOrDefault(); + SetAxisXValue(x_value); + } + + #endregion } } + +///// <summary> +///// 璁剧疆鍥捐〃杞� +///// </summary> +//private void SetChartAxis() +//{ +// _axis_x_flow.Visibility = DefaultBoolean.False; +// _axis_x_flow.GridLines.Visible = false; +// _axis_y_head.Visibility = DefaultBoolean.False; +// _axis_y_head.GridLines.Visible = false; +// _axis_y_eff.Visibility = DefaultBoolean.False; +// _axis_y_eff.GridLines.Visible = false; +// _axis_y_power.Visibility = DefaultBoolean.False; +// _axis_y_power.GridLines.Visible = false; +// if (_coordinate == null) +// { +// _const_line_x.Visible = false; +// _const_line_y.Visible = false; +// _bottom_pane.Visibility = ChartElementVisibility.Hidden; +// return; +// } + + +// //璁$畻鍒诲害 Q +// var axisQLabels = new List<CustomAxisLabel>(); +// var disQ = _coordinate.CoordMinQ; +// for (int i = 0; i < _coordinate.GridNumberX + 1; i++) +// { +// axisQLabels.Add(new CustomAxisLabel(disQ.ToString("N0"), disQ)); +// disQ = disQ + _coordinate.CoordSpaceQ; +// } + +// _axis_x_flow.CustomLabels.Clear(); +// _axis_x_flow.CustomLabels.AddRange(axisQLabels.ToArray()); +// _axis_x_flow.Visibility = DefaultBoolean.True; +// _axis_x_flow.GridLines.Visible = true; + + +// //璁$畻鍒诲害 +// var axis_head_labels = new List<CustomAxisLabel>(); +// var display_head = _coordinate.CoordMinH + _coordinate.CoordSpaceH * _coordinate.StartLineNoH; +// for (int i = _coordinate.StartLineNoH; i < _coordinate.EndLineNoH + 1; i++) +// { +// axis_head_labels.Add(new CustomAxisLabel(display_head.ToString(), display_head)); +// display_head = display_head + _coordinate.CoordSpaceH; +// } + +// _axis_y_head.CustomLabels.Clear(); +// _axis_y_head.CustomLabels.AddRange(axis_head_labels.ToArray()); +// _axis_y_head.Visibility = DefaultBoolean.True; +// _axis_y_head.GridLines.Visible = true; + +// //鏁堢巼 +// if (_maxE > _minE && _eff_visible) +// { +// //璁$畻鍒诲害 +// var label_list = new List<CustomAxisLabel>(); +// var display_eff = _coordinate.CoordMinE + _coordinate.CoordSpaceE * _coordinate.StartLineNoE; +// for (int i = _coordinate.StartLineNoE; i < _coordinate.EndLineNoE + 1; i++) +// { +// label_list.Add(new CustomAxisLabel(display_eff.ToString(), display_eff)); +// display_eff = display_eff + _coordinate.CoordSpaceE; +// } + +// _axis_y_eff.CustomLabels.Clear(); +// _axis_y_eff.CustomLabels.AddRange(label_list.ToArray()); +// _axis_y_eff.Visibility = DefaultBoolean.True; +// _axis_y_eff.GridLines.Visible = true; +// } + +// //鍔熺巼 +// if (_maxP > _minP && _power_visible) +// { +// //璁$畻鍒诲害 +// var label_list = new List<CustomAxisLabel>(); +// double display_power = _coordinate.CoordMinP + _coordinate.CoordSpaceP * _coordinate.StartLineNoP; +// for (int i = _coordinate.StartLineNoP; i < _coordinate.EndLineNoP + 1; i++) +// { +// label_list.Add(new CustomAxisLabel(display_power.ToString(), display_power)); +// display_power = display_power + _coordinate.CoordSpaceP; +// } + +// _axis_y_power.CustomLabels.Clear(); +// _axis_y_power.CustomLabels.AddRange(label_list.ToArray()); +// _axis_y_power.Visibility = DefaultBoolean.True; +// _axis_y_power.GridLines.Visible = true; +// } + + +// _axis_x_flow.SetAxisRange(_coordinate.CoordMinQ, _coordinate.CoordMinQ + _coordinate.GridNumberX * _coordinate.CoordSpaceQ); +// if (_split_panel) +// { +// if (_power_visible) +// { +// var grid_count_head = _coordinate.EndLineNoH - _coordinate.StartLineNoH; +// var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; +// int grid_count_add = Math.Max(grid_count_head, grid_count_eff); +// if (_eff_visible) +// grid_count_add += +5;//澶氫袱鏉� + +// var max_axis_head = _coordinate.CoordMinH + _coordinate.EndLineNoH * _coordinate.CoordSpaceH; +// var min_axis_head = max_axis_head - grid_count_add * _coordinate.CoordSpaceH; +// _axis_y_head.SetAxisRange(min_axis_head, max_axis_head); + +// var min_axis_eff = _coordinate.CoordMinE + _coordinate.StartLineNoE * _coordinate.CoordSpaceE; +// var max_axis_eff = min_axis_eff + grid_count_add * _coordinate.CoordSpaceE; + +// _axis_y_eff.SetAxisRange(min_axis_eff, max_axis_eff); +// _bottom_pane.Visibility = ChartElementVisibility.Visible; +// } +// else +// { +// var grid_count_power = _coordinate.EndLineNoP - _coordinate.StartLineNoP; +// var grid_delete_head = grid_count_power * _coordinate.CoordSpaceH; +// grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; + +// var grid_delete_eff = grid_count_power * _coordinate.CoordSpaceE; +// grid_delete_eff = _coordinate.CoordMinE < 0 ? -grid_delete_eff : grid_delete_eff; + +// _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); +// _axis_y_eff.SetAxisRange(_coordinate.CoordMinE - grid_delete_eff, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); + +// _bottom_pane.Visibility = ChartElementVisibility.Hidden; +// } + +// if ((!_eff_visible) && (!_power_visible)) +// { +// _axis_y_head.SetAxisRange(_coordinate.DispMinH(), _coordinate.DispMaxH()); +// } +// _axis_y_power.SetAxisRange(_coordinate.DispMinP(), _coordinate.DispMaxP()); +// } +// else +// { +// if ((!_eff_visible) && (!_power_visible)) +// { +// _axis_y_head.SetAxisRange(_coordinate.DispMinH(), _coordinate.DispMaxH()); +// } +// else if ((!_eff_visible) && _power_visible) +// { +// var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; +// if (_coordinate.EndLineNoH - _coordinate.StartLineNoH < 6) +// grid_count_eff++; +// var grid_delete_head = grid_count_eff * _coordinate.CoordSpaceH; +// grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; +// var grid_delete_power = grid_count_eff * _coordinate.CoordSpaceP; + +// _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); +// _axis_y_power.SetAxisRange(_coordinate.CoordMinP, _coordinate.CoordMinP + _coordinate.GridNumberY * _coordinate.CoordSpaceP - grid_delete_power); +// } +// else if (_eff_visible && (!_power_visible)) +// { +// var grid_count_power = _coordinate.EndLineNoP - _coordinate.StartLineNoP; +// var grid_delete_head = grid_count_power * _coordinate.CoordSpaceH; +// grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head; + +// var grid_delete_eff = grid_count_power * _coordinate.CoordSpaceE; +// grid_delete_eff = _coordinate.CoordMinE < 0 ? -grid_delete_eff : grid_delete_eff; + +// _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); +// _axis_y_eff.SetAxisRange(_coordinate.CoordMinE - grid_delete_eff, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); +// } +// else +// { +// _axis_y_head.SetAxisRange(_coordinate.CoordMinH, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH); +// _axis_y_eff.SetAxisRange(_coordinate.CoordMinE, _coordinate.CoordMinE + _coordinate.GridNumberY * _coordinate.CoordSpaceE); +// _axis_y_power.SetAxisRange(_coordinate.CoordMinP, _coordinate.CoordMinP + _coordinate.GridNumberY * _coordinate.CoordSpaceP); +// } + +// _bottom_pane.Visibility = ChartElementVisibility.Hidden; +// } + +//} \ No newline at end of file diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChartViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChartViewModel.cs new file mode 100644 index 0000000..045a74b --- /dev/null +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChartViewModel.cs @@ -0,0 +1,61 @@ +锘縩amespace Yw.WinFrmUI.Phart +{ + public class PumpViewChartViewModel + { + /// <summary> + /// + /// </summary> + public string Id { get; set; } + + /// <summary> + /// + /// </summary> + public double Hz { get; set; } + + /// <summary> + /// + /// </summary> + public double N { get; set; } + + /// <summary> + /// + /// </summary> + public Color Color { get; set; } + + /// <summary> + /// + /// </summary> + public List<AnnotationParasViewModel> AnnotationList { get; set; } + + /// <summary> + /// + /// </summary> + public Yw.Ahart.eCurveType CurveType { get; set; } + + /// <summary> + /// + /// </summary> + public Yw.Ahart.eFeatType FeatType { get; set; } + + /// <summary> + /// + /// </summary> + public List<Yw.Geometry.Point2d> DefPointList { get; set; } + + /// <summary> + /// + /// </summary> + public List<Yw.Geometry.Point2d> FitPointList { get; set; } + + /// <summary> + /// + /// </summary> + public string GraphParas { get; set; } + + + /// <summary> + /// + /// </summary> + public bool IsSelect { get; set; } + } +} diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/03-import/03-point/PumpChartPointImportCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/03-import/03-point/PumpChartPointImportCtrl.cs index 068ce69..ad122da 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/03-import/03-point/PumpChartPointImportCtrl.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/03-import/03-point/PumpChartPointImportCtrl.cs @@ -1,4 +1,5 @@ 锘縰sing DevExpress.XtraEditors; +using Yw.Ahart; namespace Yw.WinFrmUI.Phart { @@ -341,18 +342,35 @@ if (!bol) { - this.pumpViewChart1.ClearBindingData(); + this.pumpViewChart1.Clear(); } else { - var vm = new PumpCurveViewModel(); - vm.CurveQH = _def_qh_pt_list; - vm.CurveQE = _def_qe_pt_list; - vm.CurveQP = _def_qp_pt_list; - this.pumpViewChart1.SetBindingData(vm); + var list = new List<Yw.WinFrmUI.Phart.PumpViewChartViewModel>(); + list.Add(GetViewModel(_def_qh_pt_list, Yw.Ahart.eCurveType.QH)); + if (_def_qe_pt_list != null && _def_qe_pt_list.Any()) + list.Add(GetViewModel(_def_qe_pt_list, Yw.Ahart.eCurveType.QE)); + if (_def_qp_pt_list != null && _def_qp_pt_list.Any()) + list.Add(GetViewModel(_def_qp_pt_list, Yw.Ahart.eCurveType.QP)); + this.pumpViewChart1.SetBindingData(list); } } + private Yw.WinFrmUI.Phart.PumpViewChartViewModel GetViewModel(List<Yw.Geometry.Point2d> pt_list,Yw.Ahart.eCurveType curve_type) + { + var last_pt = pt_list.Last(); + var vm = new Yw.WinFrmUI.Phart.PumpViewChartViewModel(); + vm.Id = Guid.NewGuid().ToString(); + vm.Hz = 50; + vm.N = Convert.ToDouble(this.barTxtN.EditValue); + vm.CurveType = curve_type; + vm.FeatType = eFeatType.Cubic; + vm.DefPointList = pt_list; + vm.FitPointList = pt_list; + vm.GraphParas = ""; + return vm; + } + //鐢熸垚 private void barBtnCreate_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/01-operation/PumpOperationChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/01-operation/PumpOperationChart.cs index d3b5e8f..96d6e2f 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/01-operation/PumpOperationChart.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/01-operation/PumpOperationChart.cs @@ -31,8 +31,8 @@ private TextAnnotation _anno_txt_query_info; private PumpCoordinate _coordinate; - private bool _qe_visible = true; - private bool _qp_visible = true; + private bool _eff_visible = true; + private bool _power_visible = true; private bool _equip_visible = true; private List<Yw.Geometry.Point2d> _equip_pt_list = null; @@ -125,11 +125,11 @@ /// </summary> public bool QEVisible { - get => _qe_visible; + get => _eff_visible; set { - _qe_visible = value; - this.barCekCurveQEVisible.Checked = _qe_visible; + _eff_visible = value; + this.barCekCurveQEVisible.Checked = _eff_visible; } } @@ -138,11 +138,11 @@ /// </summary> public bool QPVisible { - get => _qp_visible; + get => _power_visible; set { - _qp_visible = value; - this.barCekCurveQPVisible.Checked = _qp_visible; + _power_visible = value; + this.barCekCurveQPVisible.Checked = _power_visible; } } @@ -289,7 +289,7 @@ var qh_pt_y = qh_pt.Point.Y; cache.DrawLine(pen, new Point(qh_pt_x, qh_pt_y - offset_size), new Point(qh_pt_x, qh_pt_y + offset_size)); - if (E.HasValue && _qe_visible) + if (E.HasValue && _eff_visible) { var qe_pt = _diagram.DiagramToPoint(Q, E.Value, _axis_x_flow, _axis_y_eff); var qe_pt_x = qe_pt.Point.X; @@ -297,7 +297,7 @@ cache.DrawLine(pen, new Point(qe_pt_x, qe_pt_y - offset_size), new Point(qe_pt_x, qe_pt_y + offset_size)); } - if (P.HasValue && _qp_visible) + if (P.HasValue && _power_visible) { var qp_pt = _diagram.DiagramToPoint(Q, P.Value, _axis_x_flow, _axis_y_power); var qp_pt_x = qp_pt.Point.X; @@ -609,7 +609,7 @@ _query_flow_line.Visible = false; _bottom_pane.Visibility = ChartElementVisibility.Hidden; - _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; + _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; //璁$畻鍒诲害 Q var axisQLabels = new List<CustomAxisLabel>(); @@ -641,7 +641,7 @@ _axis_y_head.GridLines.Visible = true; //鏁堢巼 - if (_max_eff > _min_eff && _qe_visible) + if (_max_eff > _min_eff && _eff_visible) { //璁$畻鍒诲害 var labels = new List<CustomAxisLabel>(); @@ -659,7 +659,7 @@ } //鍔熺巼 - if (_max_power > _min_power && _qp_visible) + if (_max_power > _min_power && _power_visible) { //璁$畻鍒诲害 var labels = new List<CustomAxisLabel>(); @@ -683,7 +683,7 @@ var grid_count_head = _coordinate.EndLineNoH - _coordinate.StartLineNoH; var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; int grid_count_up = Math.Max(grid_count_head, grid_count_eff); - if (_qe_visible) + if (_eff_visible) { grid_count_up += 2;//澶氫袱鏉� } @@ -944,7 +944,7 @@ series_qe.SeriesPointsSorting = SortingMode.None; series_qe.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qe.View = series_qe_view; - series_qe.Visible = _qe_visible; + series_qe.Visible = _eff_visible; var pt_qe_list = vm.CurveQE.GetPointList(_feat_type_qe, 100); @@ -978,7 +978,7 @@ series_qp.SeriesPointsSorting = SortingMode.None; series_qp.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qp.View = series_qp_view; - series_qp.Visible = _qp_visible; + series_qp.Visible = _power_visible; var pt_qp_list = vm.CurveQP.GetPointList(_feat_type_qp, 100); for (int i = 0; i < pt_qp_list.Count; i++) @@ -1078,7 +1078,7 @@ series_qe.SeriesPointsSorting = SortingMode.None; series_qe.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qe.View = series_qe_view; - series_qe.Visible = _qe_visible; + series_qe.Visible = _eff_visible; var pt_qe_list = vm.CurrentCurveQE.GetPointList(_feat_type_qe, 100); for (int i = 0; i < pt_qe_list.Count; i++) @@ -1110,7 +1110,7 @@ series_qp.SeriesPointsSorting = SortingMode.None; series_qp.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qp.View = series_qp_view; - series_qp.Visible = _qp_visible; + series_qp.Visible = _power_visible; var pt_qp_list = vm.CurrentCurveQP.GetPointList(_feat_type_qp, 100); for (int i = 0; i < pt_qp_list.Count; i++) @@ -1175,10 +1175,10 @@ if (_onMoveWorkPointLine) { var diagram_coordinates = _diagram.PointToDiagram(e.Location); - var axisValue = diagram_coordinates.GetAxisValue(_axis_x_flow); - if (axisValue == null) + var axis_value = diagram_coordinates.GetAxisValue(_axis_x_flow); + if (axis_value == null) return; - double chartQ = axisValue.NumericalValue; + double chartQ = axis_value.NumericalValue; CalcWorkPointByQ(chartQ); } else @@ -1271,14 +1271,14 @@ private void barCekCurveQEVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - _qe_visible = this.barCekCurveQEVisible.Checked; + _eff_visible = this.barCekCurveQEVisible.Checked; UpdateChart(); } private void barCekCurveQPVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - _qp_visible = this.barCekCurveQPVisible.Checked; - _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; + _power_visible = this.barCekCurveQPVisible.Checked; + _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; UpdateChart(); } @@ -1311,7 +1311,7 @@ /// </summary> public bool GetQEVisible() { - return _qe_visible; + return _eff_visible; } /// <summary> @@ -1319,7 +1319,7 @@ /// </summary> public bool GetQPVisible() { - return _qp_visible; + return _power_visible; } diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/02-working-view/PumpWorkingViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/02-working-view/PumpWorkingViewChart.cs index ecf4fc2..34fefaf 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/02-working-view/PumpWorkingViewChart.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/02-working-view/PumpWorkingViewChart.cs @@ -29,8 +29,8 @@ private PumpCoordinate _coordinate; - private bool _qe_visible = true; - private bool _qp_visible = true; + private bool _eff_visible = true; + private bool _power_visible = true; private bool _run_point_visible = true; private bool _equip_visible = true; @@ -91,11 +91,11 @@ /// </summary> public bool QEVisible { - get => _qe_visible; + get => _eff_visible; set { - _qe_visible = value; - SetQEVisible(_qe_visible); + _eff_visible = value; + SetQEVisible(_eff_visible); } } @@ -104,11 +104,11 @@ /// </summary> public bool QPVisble { - get => _qp_visible; + get => _power_visible; set { - _qp_visible = value; - SetQPVisible(_qp_visible); + _power_visible = value; + SetQPVisible(_power_visible); } } @@ -242,7 +242,7 @@ dx_args.Cache.FillEllipse(dg_x, dg_y, 10, 10, color); _rect_list.Add(new(new Rectangle(dg_x, dg_y, 10, 10), color, vm)); } - if (eff.HasValue && _qe_visible) + if (eff.HasValue && _eff_visible) { var dg_pt = _diagram.DiagramToPoint(flow, eff.Value, _axis_x_flow, _axis_y_eff); var dg_x = dg_pt.Point.X - 5; @@ -251,7 +251,7 @@ _rect_list.Add(new(new Rectangle(dg_x, dg_y, 10, 10), color, vm)); } - if (power.HasValue && _qp_visible) + if (power.HasValue && _power_visible) { var dg_pt = _diagram.DiagramToPoint(flow, power.Value, _axis_x_flow, _axis_y_power); var dg_x = dg_pt.Point.X - 5; @@ -515,7 +515,7 @@ _bottom_pane.Visibility = ChartElementVisibility.Hidden; - _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; + _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; //璁$畻鍒诲害 Q var axisQLabels = new List<CustomAxisLabel>(); @@ -547,7 +547,7 @@ _axis_y_head.GridLines.Visible = true; //鏁堢巼 - if (_max_eff > _min_eff && _qe_visible) + if (_max_eff > _min_eff && _eff_visible) { //璁$畻鍒诲害 var labels = new List<CustomAxisLabel>(); @@ -565,7 +565,7 @@ } //鍔熺巼 - if (_max_power > _min_power && _qp_visible) + if (_max_power > _min_power && _power_visible) { //璁$畻鍒诲害 var labels = new List<CustomAxisLabel>(); @@ -589,7 +589,7 @@ var grid_count_head = _coordinate.EndLineNoH - _coordinate.StartLineNoH; var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; int grid_count_up = Math.Max(grid_count_head, grid_count_eff); - if (_qe_visible) + if (_eff_visible) { grid_count_up += 2;//澶氫袱鏉� } @@ -639,7 +639,7 @@ qh_pt_ex_list.Add(max_pt); CreateLineSeries(vm.Id + "qh", vm.Color, qh_pt_ex_list, _default_pane, _axis_y_head, DashStyle.Dot); - if (vm.CurveQE != null && vm.CurveQE.Any() && _qe_visible) + if (vm.CurveQE != null && vm.CurveQE.Any() && _eff_visible) { var qe = vm.CurveQE.GetFeatCurve(_feat_type_qe); var qe_pt_ex_list = vm.CurveQE.GetExpandPointList(_feat_type_qe, 1, max_ratio, 100); @@ -647,7 +647,7 @@ CreateLineSeries(vm.Id + "qe", vm.Color, qe_pt_ex_list, _default_pane, _axis_y_eff, DashStyle.Dot); } - if (vm.CurveQP != null && vm.CurveQP.Any() && _qp_visible) + if (vm.CurveQP != null && vm.CurveQP.Any() && _power_visible) { var qp = vm.CurveQP.GetFeatCurve(_feat_type_qp); var qp_pt_ex_list = vm.CurveQP.GetExpandPointList(_feat_type_qp, 1, max_ratio, 100); @@ -721,7 +721,7 @@ series_qe.SeriesPointsSorting = SortingMode.None; series_qe.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qe.View = series_qe_view; - series_qe.Visible = _qe_visible; + series_qe.Visible = _eff_visible; var pt_qe_list = qe.GetPointList(_feat_type_qe, 100); for (int i = 0; i < pt_qe_list.Count; i++) @@ -753,7 +753,7 @@ series_qp.SeriesPointsSorting = SortingMode.None; series_qp.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qp.View = series_qp_view; - series_qp.Visible = _qp_visible; + series_qp.Visible = _power_visible; var pt_qp_list = qp.GetPointList(_feat_type_qp, 100); for (int i = 0; i < pt_qp_list.Count; i++) @@ -875,7 +875,7 @@ /// </summary> public void SetQEVisible(bool visible) { - _qe_visible = visible; + _eff_visible = visible; UpdateChart(); } @@ -885,8 +885,8 @@ /// </summary> public void SetQPVisible(bool visible) { - _qp_visible = visible; - _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; + _power_visible = visible; + _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; UpdateChart(); } diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs index dfe6c2e..ea90c4e 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs @@ -30,8 +30,8 @@ private PumpCoordinate _coordinate; - private bool _qe_visible = true; - private bool _qp_visible = true; + private bool _eff_visible = true; + private bool _power_visible = true; private bool _run_point_visible = true; private bool _initial_data = false; @@ -90,11 +90,11 @@ /// </summary> public bool QEVisible { - get => _qe_visible; + get => _eff_visible; set { - _qe_visible = value; - SetQEVisible(_qe_visible); + _eff_visible = value; + SetQEVisible(_eff_visible); } } @@ -103,11 +103,11 @@ /// </summary> public bool QPVisble { - get => _qp_visible; + get => _power_visible; set { - _qp_visible = value; - SetQPVisible(_qp_visible); + _power_visible = value; + SetQPVisible(_power_visible); } } @@ -227,7 +227,7 @@ dx_args.Cache.FillEllipse(dg_x, dg_y, 10, 10, color); _rect_list.Add(new(new Rectangle(dg_x, dg_y, 10, 10), color, vm)); } - if (eff.HasValue && _qe_visible) + if (eff.HasValue && _eff_visible) { var dg_pt = _diagram.DiagramToPoint(flow, eff.Value, _axis_x_flow, _axis_y_eff); var dg_x = dg_pt.Point.X - 5; @@ -236,7 +236,7 @@ _rect_list.Add(new(new Rectangle(dg_x, dg_y, 10, 10), color, vm)); } - if (power.HasValue && _qp_visible) + if (power.HasValue && _power_visible) { var dg_pt = _diagram.DiagramToPoint(flow, power.Value, _axis_x_flow, _axis_y_power); var dg_x = dg_pt.Point.X - 5; @@ -450,7 +450,7 @@ _bottom_pane.Visibility = ChartElementVisibility.Hidden; - _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; + _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; //璁$畻鍒诲害 Q var axisQLabels = new List<CustomAxisLabel>(); @@ -482,7 +482,7 @@ _axis_y_head.GridLines.Visible = true; //鏁堢巼 - if (_max_eff > _min_eff && _qe_visible) + if (_max_eff > _min_eff && _eff_visible) { //璁$畻鍒诲害 var labels = new List<CustomAxisLabel>(); @@ -500,7 +500,7 @@ } //鍔熺巼 - if (_max_power > _min_power && _qp_visible) + if (_max_power > _min_power && _power_visible) { //璁$畻鍒诲害 var labels = new List<CustomAxisLabel>(); @@ -524,7 +524,7 @@ var grid_count_head = _coordinate.EndLineNoH - _coordinate.StartLineNoH; var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; int grid_count_up = Math.Max(grid_count_head, grid_count_eff); - if (_qe_visible) + if (_eff_visible) { grid_count_up += 2;//澶氫袱鏉� } @@ -585,7 +585,7 @@ qh_pt_ex_list.Add(max_pt); CreateLineSeries(vm.Id + "qh", vm.Color, qh_pt_ex_list, _default_pane, _axis_y_head, DashStyle.Dot); - if (vm.CurveQE != null && vm.CurveQE.Any() && _qe_visible) + if (vm.CurveQE != null && vm.CurveQE.Any() && _eff_visible) { var qe = vm.CurveQE.GetFeatCurve(_feat_type_qe); var qe_pt_ex_list = vm.CurveQE.GetExpandPointList(_feat_type_qe, 1, max_ratio, 100); @@ -593,7 +593,7 @@ CreateLineSeries(vm.Id + "qe", vm.Color, qe_pt_ex_list, _default_pane, _axis_y_eff, DashStyle.Dot); } - if (vm.CurveQP != null && vm.CurveQP.Any() && _qp_visible) + if (vm.CurveQP != null && vm.CurveQP.Any() && _power_visible) { var qp = vm.CurveQP.GetFeatCurve(_feat_type_qp); var qp_pt_ex_list = vm.CurveQP.GetExpandPointList(_feat_type_qp, 1, max_ratio, 100); @@ -707,7 +707,7 @@ series_qe.SeriesPointsSorting = SortingMode.None; series_qe.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qe.View = series_qe_view; - series_qe.Visible = _qe_visible; + series_qe.Visible = _eff_visible; var pt_qe_list = qe.GetPointList(_feat_type_qe, 100); for (int i = 0; i < pt_qe_list.Count; i++) @@ -740,7 +740,7 @@ series_qp.SeriesPointsSorting = SortingMode.None; series_qp.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qp.View = series_qp_view; - series_qp.Visible = _qp_visible; + series_qp.Visible = _power_visible; var pt_qp_list = qp.GetPointList(_feat_type_qp, 100); for (int i = 0; i < pt_qp_list.Count; i++) @@ -849,7 +849,7 @@ series_qe.SeriesPointsSorting = SortingMode.None; series_qe.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qe.View = series_qe_view; - series_qe.Visible = _qe_visible; + series_qe.Visible = _eff_visible; var pt_qe_list = qe.GetPointList(_feat_type_qe, 100); for (int i = 0; i < pt_qe_list.Count; i++) @@ -881,7 +881,7 @@ series_qp.SeriesPointsSorting = SortingMode.None; series_qp.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qp.View = series_qp_view; - series_qp.Visible = _qp_visible; + series_qp.Visible = _power_visible; var pt_qp_list = qp.GetPointList(_feat_type_qp, 100); for (int i = 0; i < pt_qp_list.Count; i++) @@ -962,7 +962,7 @@ /// </summary> public void SetQEVisible(bool visible) { - _qe_visible = visible; + _eff_visible = visible; UpdateChart(); } @@ -972,8 +972,8 @@ /// </summary> public void SetQPVisible(bool visible) { - _qp_visible = visible; - _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; + _power_visible = visible; + _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; UpdateChart(); } diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-parallel/PumpParallelChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-parallel/PumpParallelChart.cs index 56bc30d..fefe722 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-parallel/PumpParallelChart.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-parallel/PumpParallelChart.cs @@ -33,8 +33,8 @@ private TextAnnotation _anno_txt_query_info; private PumpCoordinate _coordinate; - private bool _qe_visible = true; - private bool _qp_visible = true; + private bool _eff_visible = true; + private bool _power_visible = true; private bool _equip_visible = true; private List<Yw.Geometry.Point2d> _equip_pt_list = null; @@ -227,12 +227,12 @@ var max_flow = vm.CurrentExtendFlow.Value; DrawExpandLine(dx_args.Cache, pen, _axis_y_head, vm.CurrentCurveQH, max_flow); - if (_qe_visible) + if (_eff_visible) { DrawExpandLine(dx_args.Cache, pen, _axis_y_eff, vm.CurrentCurveQE, max_flow); } - if (_qp_visible) + if (_power_visible) { DrawExpandLine(dx_args.Cache, pen, _axis_y_power, vm.CurrentCurveQP, max_flow); } @@ -300,7 +300,7 @@ var qh_pt_y = qh_pt.Point.Y; cache.DrawLine(pen, new Point(qh_pt_x, qh_pt_y - offset_size), new Point(qh_pt_x, qh_pt_y + offset_size)); - if (E.HasValue && _qe_visible) + if (E.HasValue && _eff_visible) { var qe_pt = _diagram.DiagramToPoint(Q, E.Value, _axis_x_flow, _axis_y_eff); var qe_pt_x = qe_pt.Point.X; @@ -308,7 +308,7 @@ cache.DrawLine(pen, new Point(qe_pt_x, qe_pt_y - offset_size), new Point(qe_pt_x, qe_pt_y + offset_size)); } - if (P.HasValue && _qp_visible) + if (P.HasValue && _power_visible) { var qp_pt = _diagram.DiagramToPoint(Q, P.Value, _axis_x_flow, _axis_y_power); var qp_pt_x = qp_pt.Point.X; @@ -449,7 +449,7 @@ #endregion - #region Calc + #region Set Axis private double _min_flow, _max_flow; private double _max_head = 0, _min_head = 10000; @@ -609,7 +609,7 @@ _bottom_pane.Visibility = ChartElementVisibility.Hidden; - _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; + _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; //璁$畻鍒诲害 Q var axisQLabels = new List<CustomAxisLabel>(); @@ -641,7 +641,7 @@ _axis_y_head.GridLines.Visible = true; //鏁堢巼 - if (_max_eff > _min_eff && _qe_visible) + if (_max_eff > _min_eff && _eff_visible) { //璁$畻鍒诲害 var labels = new List<CustomAxisLabel>(); @@ -659,7 +659,7 @@ } //鍔熺巼 - if (_max_power > _min_power && _qp_visible) + if (_max_power > _min_power && _power_visible) { //璁$畻鍒诲害 var labels = new List<CustomAxisLabel>(); @@ -683,7 +683,7 @@ var grid_count_head = _coordinate.EndLineNoH - _coordinate.StartLineNoH; var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE; int grid_count_up = Math.Max(grid_count_head, grid_count_eff); - if (_qe_visible) + if (_eff_visible) { grid_count_up += 2;//澶氫袱鏉� } @@ -992,7 +992,7 @@ series_qe.SeriesPointsSorting = SortingMode.None; series_qe.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qe.View = series_qe_view; - series_qe.Visible = _qe_visible; + series_qe.Visible = _eff_visible; var pt_qe_list = vm.CurrentCurveQE.GetPointList(_feat_type_qe, 100); for (int i = 0; i < pt_qe_list.Count; i++) @@ -1024,7 +1024,7 @@ series_qp.SeriesPointsSorting = SortingMode.None; series_qp.SeriesPointsSortingKey = SeriesPointKey.Value_1; series_qp.View = series_qp_view; - series_qp.Visible = _qp_visible; + series_qp.Visible = _power_visible; var pt_qp_list = vm.CurrentCurveQP.GetPointList(_feat_type_qp, 100); for (int i = 0; i < pt_qp_list.Count; i++) @@ -1088,10 +1088,10 @@ if (_onMoveWorkPointLine) { var diagram_coordinates = _diagram.PointToDiagram(e.Location); - var axisValue = diagram_coordinates.GetAxisValue(_axis_x_flow); - if (axisValue == null) + var axis_value = diagram_coordinates.GetAxisValue(_axis_x_flow); + if (axis_value == null) return; - double chartQ = axisValue.NumericalValue; + double chartQ = axis_value.NumericalValue; CalcWorkPointByQ(chartQ); } else @@ -1184,14 +1184,14 @@ private void barCekCurveQEVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - _qe_visible = this.barCekCurveQEVisible.Checked; + _eff_visible = this.barCekCurveQEVisible.Checked; UpdateChart(); } private void barCekCurveQPVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - _qp_visible = this.barCekCurveQPVisible.Checked; - _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; + _power_visible = this.barCekCurveQPVisible.Checked; + _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden; UpdateChart(); } diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-variable-speed/SetValueDlg.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-variable-speed/SetValueDlg.cs index 95e3304..cb085b1 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-variable-speed/SetValueDlg.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/04-variable-speed/SetValueDlg.cs @@ -38,7 +38,6 @@ var bol = this.VerifyValueChanged(value); if (!bol) { - XtraMessageBox.Show("鏁板�间笉鍚堢悊!"); return; } this.DialogResult = DialogResult.OK; diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/00-core/01-coordinate/UniversalCoordinate_Disp.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/00-core/01-coordinate/UniversalCoordinate_Disp.cs index dca8bb5..3204296 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/00-core/01-coordinate/UniversalCoordinate_Disp.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/00-core/01-coordinate/UniversalCoordinate_Disp.cs @@ -113,12 +113,12 @@ if (min_y > max_y - 0.01) return null; - var validGridNumH = 6; + var valid_grid_num_h = 6; var coordinate_paras = new UniversalCoordinate(); coordinate_paras.GridNumberX = 10;//10 coordinate_paras.GridNumberY = 18;//18 CalcCoordinateX(min_x, max_x, ref coordinate_paras, coordinate_paras.GridNumberX); - CalcCoordinateH(min_y, max_y, validGridNumH, ref coordinate_paras, out double disMinH, out double disMaxH); + CalcCoordinateH(min_y, max_y, valid_grid_num_h, ref coordinate_paras, out double disMinH, out double disMaxH); return coordinate_paras; } @@ -169,11 +169,11 @@ /// </summary> /// <param name="min_y">鏈�灏廦</param> /// <param name="max_y">鏈�澶</param> - /// <param name="validGridNumH">鏈夋晥Y鍒诲害鏁�</param> + /// <param name="valid_grid_num_h">鏈夋晥Y鍒诲害鏁�</param> /// <param name="coordinate_paras">鍧愭爣Model</param> /// <param name="disMinH">鏈�灏忔樉绀篩</param> /// <param name="disMaxH">鏈�澶ф樉绀篩</param> - public static void CalcCoordinateH_Filter(double min_y, double max_y, int validGridNumH, ref UniversalCoordinate coordinate_paras, out double disMinH, out double disMaxH) + public static void CalcCoordinateH_Filter(double min_y, double max_y, int valid_grid_num_h, ref UniversalCoordinate coordinate_paras, out double disMinH, out double disMaxH) { if (max_y < 1.0) { @@ -222,7 +222,7 @@ } else { - CalcCoordinateH(min_y, max_y, validGridNumH, ref coordinate_paras, out disMinH, out disMaxH); + CalcCoordinateH(min_y, max_y, valid_grid_num_h, ref coordinate_paras, out disMinH, out disMaxH); } } @@ -231,13 +231,13 @@ /// </summary> /// <param name="min_y">鏈�灏廦</param> /// <param name="max_y">鏈�澶</param> - /// <param name="validGridNumH">鏈夋晥Y鍒诲害鏁�</param> + /// <param name="valid_grid_num_h">鏈夋晥Y鍒诲害鏁�</param> /// <param name="coordinate_paras">鍧愭爣Model</param> /// <param name="disMinH">鏈�灏忔樉绀篩</param> /// <param name="disMaxH">鏈�澶ф樉绀篩</param> - public static void CalcCoordinateH(double min_y, double max_y, int validGridNumH, ref UniversalCoordinate coordinate_paras, out double disMinH, out double disMaxH) + public static void CalcCoordinateH(double min_y, double max_y, int valid_grid_num_h, ref UniversalCoordinate coordinate_paras, out double disMinH, out double disMaxH) { - var coordSpaceH = PhartCoordinateHelper.GetOptimalSpaceMax(min_y, max_y, validGridNumH, out disMinH, out disMaxH); + var coordSpaceH = PhartCoordinateHelper.GetOptimalSpaceMax(min_y, max_y, valid_grid_num_h, out disMinH, out disMaxH); int endLineNoH = coordinate_paras.GridNumberY; int stratLineNoH = endLineNoH; diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/01-view/ValveViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/01-view/ValveViewChart.cs index a3d0bce..314fe81 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/01-view/ValveViewChart.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/01-view/ValveViewChart.cs @@ -1,6 +1,5 @@ 锘縰sing DevExpress.Utils; using DevExpress.XtraCharts; -using DevExpress.XtraSpreadsheet.Model; using Yw.Geometry; namespace Yw.WinFrmUI.Phart @@ -80,9 +79,9 @@ /// 閫変腑鐐� /// </summary> public event Action<int> SelectedPointIndexChangedEvent; - #endregion + #endregion - #region Initial + #region Private Initial /// <summary> /// 鍒濆鍖栧浘琛� @@ -191,8 +190,106 @@ } #endregion Initial + + #region Private Chart Event - #region SetBindingData + + private bool _on_move_x_flow_line = false; + private bool _on_move_x_opening_line = false; + private bool _on_move_y_k = false; + private void chartControl1_MouseDown(object sender, MouseEventArgs e) + { + if (!_initial_data) + return; + var hitInfo = chartControl1.CalcHitInfo(e.Location); + if (e.Button == MouseButtons.Left) + { + if (hitInfo.InConstantLine) + { + if (hitInfo.ConstantLine == _const_line_x_flow) + { + _on_move_x_flow_line = true; + } + else if (hitInfo.ConstantLine == _const_line_x_opening) + { + _on_move_x_opening_line = true; + } + else if (hitInfo.ConstantLine == _const_line_y_k) + { + _on_move_y_k = true; + } + } + } + + } + + private void chartControl1_MouseMove(object sender, MouseEventArgs e) + { + if (!_initial_data) + return; + + if (_on_move_x_flow_line) + { + var diagram_coordinates = _diagram.PointToDiagram(e.Location); + var axis_value = diagram_coordinates.GetAxisValue(_axis_x_flow); + if (axis_value == null) + return; + double x = axis_value.NumericalValue; + SetAxisXFlowValue(x); + + } + else if (_on_move_x_opening_line) + { + var diagram_coordinates = _diagram.PointToDiagram(e.Location); + var axis_value = diagram_coordinates.GetAxisValue(_axis_x_opening); + if (axis_value == null) + return; + double x = axis_value.NumericalValue; + SetAxisXOpeningValue(x); + } + else if (_on_move_y_k) + { + var diagram_coordinates = _diagram.PointToDiagram(e.Location); + var axis_value = diagram_coordinates.GetAxisValue(_axis_y_k); + if (axis_value == null) + return; + double y = axis_value.NumericalValue; + SetAxisYKValue(y); + } + else + { + var hitInfo = chartControl1.CalcHitInfo(e.Location); + if (hitInfo.InConstantLine) + { + this.chartControl1.Cursor = Cursors.Hand; + } + else if (hitInfo.InAnnotation) + { + this.chartControl1.Cursor = Cursors.SizeAll; + } + else + { + this.chartControl1.Cursor = Cursors.Default; + } + } + } + + private void chartControl1_MouseUp(object sender, MouseEventArgs e) + { + if (!_initial_data) + return; + _on_move_x_flow_line = false; + _on_move_x_opening_line = false; + _on_move_y_k = false; + } + + private void chartControl1_Resize(object sender, EventArgs e) + { + SetTextAnchorPoint(); + } + #endregion + + #region Set /// <summary> /// 缁戝畾鏁版嵁 @@ -203,8 +300,7 @@ _coordinate = null; _vm_list = null; _exist_ql = false; - _exist_ol = false; - + _exist_ol = false; this.chartControl1.BeginInit(); this.chartControl1.Series.Clear(); for (int i = this.chartControl1.AnnotationRepository.Count - 1; i > 0; i--) @@ -625,105 +721,7 @@ #endregion Calc - - #region Chart Event - - - private bool _on_move_x_flow_line = false; - private bool _on_move_x_opening_line = false; - private bool _on_move_y_k = false; - private void chartControl1_MouseDown(object sender, MouseEventArgs e) - { - if (!_initial_data) - return; - var hitInfo = chartControl1.CalcHitInfo(e.Location); - if (e.Button == MouseButtons.Left) - { - if (hitInfo.InConstantLine) - { - if (hitInfo.ConstantLine == _const_line_x_flow) - { - _on_move_x_flow_line = true; - } - else if (hitInfo.ConstantLine == _const_line_x_opening) - { - _on_move_x_opening_line = true; - } - else if (hitInfo.ConstantLine == _const_line_y_k) - { - _on_move_y_k = true; - } - } - } - - } - - private void chartControl1_MouseMove(object sender, MouseEventArgs e) - { - if (!_initial_data) - return; - - if (_on_move_x_flow_line) - { - var diagram_coordinates = _diagram.PointToDiagram(e.Location); - var axis_value = diagram_coordinates.GetAxisValue(_axis_x_flow); - if (axis_value == null) - return; - double x = axis_value.NumericalValue; - SetAxisXFlowValue(x); - - } - else if (_on_move_x_opening_line) - { - var diagram_coordinates = _diagram.PointToDiagram(e.Location); - var axis_value = diagram_coordinates.GetAxisValue(_axis_x_opening); - if (axis_value == null) - return; - double x = axis_value.NumericalValue; - SetAxisXOpeningValue(x); - } - else if (_on_move_y_k) - { - var diagram_coordinates = _diagram.PointToDiagram(e.Location); - var axis_value = diagram_coordinates.GetAxisValue(_axis_y_k); - if (axis_value == null) - return; - double y = axis_value.NumericalValue; - SetAxisYKValue(y); - } - else - { - var hitInfo = chartControl1.CalcHitInfo(e.Location); - if (hitInfo.InConstantLine) - { - this.chartControl1.Cursor = Cursors.Hand; - } - else if (hitInfo.InAnnotation) - { - this.chartControl1.Cursor = Cursors.SizeAll; - } - else - { - this.chartControl1.Cursor = Cursors.Default; - } - } - } - - private void chartControl1_MouseUp(object sender, MouseEventArgs e) - { - if (!_initial_data) - return; - _on_move_x_flow_line = false; - _on_move_x_opening_line = false; - _on_move_y_k = false; - } - - private void chartControl1_Resize(object sender, EventArgs e) - { - SetTextAnchorPoint(); - } - #endregion - + #region Set Axis Value /// <summary> diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj index c6b9ba4..f5b2e27 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj @@ -42,6 +42,9 @@ <Compile Remove="00-core\Point2dComparer.cs" /> <Compile Remove="00-core\Point2dListExtensions.cs" /> <Compile Remove="00-core\LineHelper.cs" /> + <Compile Remove="01-pump\01-view\01-viewmodel\PumpCurveEqualPowerViewModel.cs" /> + <Compile Remove="01-pump\01-view\PumpViewChart - 澶嶅埗.cs" /> + <Compile Remove="01-pump\01-view\PumpViewChart - 澶嶅埗.Designer.cs" /> <Compile Remove="01-pump\03-import\02-image\PumpCharImageImportCtrl - 澶嶅埗%282%29.cs" /> <Compile Remove="01-pump\03-import\02-image\PumpCharImageImportCtrl - 澶嶅埗%282%29.Designer.cs" /> <Compile Remove="01-pump\03-import\02-image\PumpCharImageImportCtrl - 澶嶅埗.cs" /> @@ -58,6 +61,7 @@ </ItemGroup> <ItemGroup> + <EmbeddedResource Remove="01-pump\01-view\PumpViewChart - 澶嶅埗.resx" /> <EmbeddedResource Remove="01-pump\03-import\02-image\PumpCharImageImportCtrl - 澶嶅埗%282%29.resx" /> <EmbeddedResource Remove="01-pump\03-import\02-image\PumpCharImageImportCtrl - 澶嶅埗.resx" /> <EmbeddedResource Remove="01-pump\03-import\03-point\PumpChartPointImportCtrl - 澶嶅埗%282%29.resx" /> -- Gitblit v1.9.3