duheng
2024-10-24 2af3ae119846a6b12cabdc28fb67329e122e39b5
Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0
已修改21个文件
已重命名3个文件
308 ■■■■ 文件已修改
Hydro/HStation.Hydro.Core/TransferHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro/Yw.Hydro.Core/Yw.Hydro.Core.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitFlowmeter.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitMeter.cs 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitPressmeter.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/04-service/01-json/00-core/RevitJsonProp.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump-main/XhsPumpMainPhartPanel.Designer.cs 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump-main/XhsPumpMainPhartPanel.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump-main/XhsPumpMainPhartPanel.resx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/02-analy/SinglePumpAnalyDlg.Designer.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/00-core/HydroParterInfoUpdateExtensions.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/02-pump/HydroPumpPropertyViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/03-valve/HydroValvePropertyViewModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveTypeConverter.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/02-chart/Perform2dChartExtend.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/01-perform/PumpPerformChart.Designer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/01-perform/PumpPerformChart.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/05-import/03-one-point/ImportPumpPerform2dByOnePointCtrl.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/05-import/03-one-point/ImportPumpPerform2dByOnePointDlg.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/99-models/01-coordinate/PumpCoordinate_Disp.cs 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro/HStation.Hydro.Core/TransferHelper.cs
@@ -834,6 +834,8 @@
            flowmeter.UpdatePropStatus(nameof(flowmeter.Position2d), revitFlowmeter, nameof(revitFlowmeter.Position));
            flowmeter.Position3d = new Yw.Model.Hydro.Position3d(revitFlowmeter.Position.X, revitFlowmeter.Position.Y, revitFlowmeter.Position.Z);
            flowmeter.UpdatePropStatus(nameof(flowmeter.Position3d), revitFlowmeter, nameof(revitFlowmeter.Position));
            flowmeter.CurrentFlow = revitFlowmeter.CurrentFlow;
            flowmeter.UpdatePropStatus(nameof(flowmeter.CurrentFlow), revitFlowmeter, nameof(revitFlowmeter.CurrentFlow));
            flowmeter.ScenePropValueList = revitFlowmeter.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
@@ -876,6 +878,8 @@
            pressmeter.UpdatePropStatus(nameof(pressmeter.Position2d), revitPressmeter, nameof(revitPressmeter.Position));
            pressmeter.Position3d = new Yw.Model.Hydro.Position3d(revitPressmeter.Position.X, revitPressmeter.Position.Y, revitPressmeter.Position.Z);
            pressmeter.UpdatePropStatus(nameof(pressmeter.Position3d), revitPressmeter, nameof(revitPressmeter.Position));
            pressmeter.CurrentPress = revitPressmeter.CurrentPress;
            pressmeter.UpdatePropStatus(nameof(pressmeter.CurrentPress), revitPressmeter, nameof(revitPressmeter.CurrentPress));
            pressmeter.ScenePropValueList = revitPressmeter.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
Hydro/Yw.Hydro.Core/Yw.Hydro.Core.csproj
@@ -7,7 +7,7 @@
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Yw.Service.Hydro.Core" Version="3.6.5" />
    <PackageReference Include="Yw.Service.Hydro.Core" Version="3.6.6" />
  </ItemGroup>
  <ItemGroup>
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitFlowmeter.cs
ÎļþÃû´Ó Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/05-other/RevitFlowmeter.cs ÐÞ¸Ä
@@ -15,10 +15,13 @@
        /// </summary>
        public RevitFlowmeter(RevitFlowmeter rhs) : base(rhs)
        {
            this.CurrentFlow = rhs.CurrentFlow;
        }
        /// <summary>
        /// å½“前流量
        /// </summary>
        public double? CurrentFlow { get; set; }
    }
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitMeter.cs
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitPressmeter.cs
ÎļþÃû´Ó Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/05-other/RevitPressmeter.cs ÐÞ¸Ä
@@ -19,6 +19,11 @@
        }
        /// <summary>
        /// å½“前压力
        /// </summary>
        public double? CurrentPress { get; set; }
    }
}
Service/HStation.Service.Revit.Core/04-service/01-json/00-core/RevitJsonProp.cs
@@ -262,14 +262,19 @@
        public const string LinkStatusValve = "阀门状态";
        /// <summary>
        /// é˜€é—¨ç±»åž‹ï¼ˆé˜€é—¨ï¼‰
        /// é˜€é—¨ç±»åž‹
        /// </summary>
        public const string ValveType = "阀门类型";
        /// <summary>
        /// é˜€é—¨è®¾ç½®ï¼ˆé˜€é—¨ï¼‰
        /// é˜€é—¨è®¾ç½®
        /// </summary>
        public const string ValveSetting = "阀门设置";
        /// <summary>
        /// é˜€é—¨å¼€åº¦
        /// </summary>
        public const string ValveOpeningDegree = "阀门开度";
        /// <summary>
        /// æ—ä¸Žç±»åž‹
@@ -281,7 +286,15 @@
        /// </summary>
        public const string ClanName = "族名称";
        /// <summary>
        /// æµé‡
        /// </summary>
        public const string Flow = "流量";
        /// <summary>
        /// åŽ‹åŠ›
        /// </summary>
        public const string Press = "压力";
Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs
@@ -2618,6 +2618,19 @@
            #endregion
            #region Flow
            if (jobject[RevitJsonProp.Flow].MatchNumeric(out double flow))
            {
                flowmeter.CurrentFlow = flow;
            }
            else
            {
                flowmeter.AppendOrUpdatePropStatus(nameof(flowmeter.CurrentFlow), ePropStatus.Abnormal, "[流量]缺少或者数据格式错误");
            }
            #endregion
            return flowmeter;
        }
@@ -2847,6 +2860,19 @@
            else
            {
                pressmeter.AppendOrUpdatePropStatus(nameof(pressmeter.DemandPattern), ePropStatus.Abnormal, "缺少[需水模式]");
            }
            #endregion
            #region Press
            if (jobject[RevitJsonProp.Press].MatchNumeric(out double press))
            {
                pressmeter.CurrentPress = press;
            }
            else
            {
                pressmeter.AppendOrUpdatePropStatus(nameof(pressmeter.CurrentPress), ePropStatus.Abnormal, "[压力]缺少或者数据格式错误");
            }
            #endregion
@@ -6161,6 +6187,20 @@
            #endregion
            #region OpeningDegree
            if (jobject[RevitJsonProp.ValveOpeningDegree].MatchNumeric(out double openingDegree))
            {
                valve.OpeningDegree = openingDegree;
            }
            else
            {
                valve.OpeningDegree = 100;
                valve.AppendOrUpdatePropStatus(nameof(valve.MinorLoss), ePropStatus.Abnormal, "[阀门开度]缺少或者数据格式错误,使用默认值(100)进行修正");
            }
            #endregion
            #region ValveSetting
            if (jobject.ParseString(RevitJsonProp.ValveSetting, out string valveSetting))
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump-main/XhsPumpMainPhartPanel.Designer.cs
@@ -77,10 +77,10 @@
            xtrPerform2dChart1.DefinePointVisible = false;
            xtrPerform2dChart1.Dock = DockStyle.Fill;
            xtrPerform2dChart1.LineVisible = false;
            xtrPerform2dChart1.Location = new Point(164, 101);
            xtrPerform2dChart1.Margin = new Padding(1, 1, 1, 1);
            xtrPerform2dChart1.Location = new Point(336, 148);
            xtrPerform2dChart1.Margin = new Padding(1, 2, 1, 2);
            xtrPerform2dChart1.Name = "xtrPerform2dChart1";
            xtrPerform2dChart1.Size = new Size(228, 411);
            xtrPerform2dChart1.Size = new Size(224, 657);
            xtrPerform2dChart1.TabIndex = 1;
            // 
            // sidePanel2
@@ -88,9 +88,8 @@
            sidePanel2.Controls.Add(xhsPumpMainPhartListCtrl1);
            sidePanel2.Dock = DockStyle.Fill;
            sidePanel2.Location = new Point(0, 0);
            sidePanel2.Margin = new Padding(2, 2, 2, 2);
            sidePanel2.Name = "sidePanel2";
            sidePanel2.Size = new Size(163, 388);
            sidePanel2.Size = new Size(335, 623);
            sidePanel2.TabIndex = 4;
            sidePanel2.Text = "sidePanel2";
            // 
@@ -100,19 +99,18 @@
            xhsPumpMainPhartListCtrl1.Appearance.Options.UseBackColor = true;
            xhsPumpMainPhartListCtrl1.Dock = DockStyle.Fill;
            xhsPumpMainPhartListCtrl1.Location = new Point(0, 0);
            xhsPumpMainPhartListCtrl1.Margin = new Padding(4, 5, 4, 5);
            xhsPumpMainPhartListCtrl1.Margin = new Padding(6, 8, 6, 8);
            xhsPumpMainPhartListCtrl1.Name = "xhsPumpMainPhartListCtrl1";
            xhsPumpMainPhartListCtrl1.Size = new Size(163, 388);
            xhsPumpMainPhartListCtrl1.Size = new Size(335, 623);
            xhsPumpMainPhartListCtrl1.TabIndex = 0;
            // 
            // sidePanel1
            // 
            sidePanel1.Controls.Add(tabPane1);
            sidePanel1.Dock = DockStyle.Right;
            sidePanel1.Location = new Point(392, 101);
            sidePanel1.Margin = new Padding(2, 2, 2, 2);
            sidePanel1.Location = new Point(560, 148);
            sidePanel1.Name = "sidePanel1";
            sidePanel1.Size = new Size(350, 411);
            sidePanel1.Size = new Size(500, 657);
            sidePanel1.TabIndex = 3;
            sidePanel1.Text = "sidePanel1";
            // 
@@ -121,12 +119,11 @@
            tabPane1.Controls.Add(tabNavigationPage1);
            tabPane1.Dock = DockStyle.Fill;
            tabPane1.Location = new Point(1, 0);
            tabPane1.Margin = new Padding(2, 2, 2, 2);
            tabPane1.Name = "tabPane1";
            tabPane1.Pages.AddRange(new DevExpress.XtraBars.Navigation.NavigationPageBase[] { tabNavigationPage1 });
            tabPane1.RegularSize = new Size(349, 411);
            tabPane1.RegularSize = new Size(499, 657);
            tabPane1.SelectedPage = tabNavigationPage1;
            tabPane1.Size = new Size(349, 411);
            tabPane1.Size = new Size(499, 657);
            tabPane1.TabIndex = 0;
            tabPane1.Text = "tabPane1";
            // 
@@ -134,33 +131,35 @@
            // 
            tabNavigationPage1.Caption = "运行参数";
            tabNavigationPage1.Controls.Add(pumpPerformInfoCtrl1);
            tabNavigationPage1.Margin = new Padding(2, 2, 2, 2);
            tabNavigationPage1.Name = "tabNavigationPage1";
            tabNavigationPage1.Size = new Size(349, 378);
            tabNavigationPage1.Size = new Size(499, 608);
            // 
            // pumpPerformInfoCtrl1
            // 
            pumpPerformInfoCtrl1.Dock = DockStyle.Fill;
            pumpPerformInfoCtrl1.Location = new Point(0, 0);
            pumpPerformInfoCtrl1.Margin = new Padding(1, 1, 1, 1);
            pumpPerformInfoCtrl1.Margin = new Padding(1, 2, 1, 2);
            pumpPerformInfoCtrl1.Name = "pumpPerformInfoCtrl1";
            pumpPerformInfoCtrl1.Size = new Size(349, 378);
            pumpPerformInfoCtrl1.Size = new Size(499, 608);
            pumpPerformInfoCtrl1.TabIndex = 0;
            // 
            // ribbonControl1
            // 
            ribbonControl1.EmptyAreaImageOptions.ImagePadding = new Padding(43, 47, 43, 47);
            ribbonControl1.ExpandCollapseItem.Id = 0;
            ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, BtnAdd, BtnEdit, BtnDelete, barBtnEditPumpCurve, BarBtnEidtPumpPart, barCheckItem1, barBtnImportByExcel, barBtnImportByPicture, barButtonItem3, barButtonItem4, barBtnDelete, barBtnAddText, barBtnUpdateimportance, barBtnOtherName, barBtnEditChart, barBtnImportByOnePoint, barBtnVariableSpeed });
            ribbonControl1.Location = new Point(0, 0);
            ribbonControl1.Margin = new Padding(4, 5, 4, 5);
            ribbonControl1.MaxItemId = 34;
            ribbonControl1.Name = "ribbonControl1";
            ribbonControl1.OptionsMenuMinWidth = 471;
            ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
            ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
            ribbonControl1.ShowExpandCollapseButton = DevExpress.Utils.DefaultBoolean.False;
            ribbonControl1.ShowPageHeadersInFormCaption = DevExpress.Utils.DefaultBoolean.False;
            ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide;
            ribbonControl1.Size = new Size(742, 101);
            ribbonControl1.Size = new Size(1060, 148);
            ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
            // 
            // BtnAdd
@@ -322,35 +321,33 @@
            dockPanel1.Controls.Add(dockPanel1_Container);
            dockPanel1.Dock = DevExpress.XtraBars.Docking.DockingStyle.Left;
            dockPanel1.ID = new Guid("202c2203-fb3a-4b47-a9cb-083c698bd2ac");
            dockPanel1.Location = new Point(0, 101);
            dockPanel1.Margin = new Padding(2, 2, 2, 2);
            dockPanel1.Location = new Point(0, 148);
            dockPanel1.Name = "dockPanel1";
            dockPanel1.OriginalSize = new Size(235, 200);
            dockPanel1.Size = new Size(164, 411);
            dockPanel1.Size = new Size(336, 657);
            dockPanel1.Text = "曲线列表";
            // 
            // dockPanel1_Container
            // 
            dockPanel1_Container.Controls.Add(sidePanel2);
            dockPanel1_Container.Location = new Point(0, 23);
            dockPanel1_Container.Margin = new Padding(2, 2, 2, 2);
            dockPanel1_Container.Location = new Point(0, 34);
            dockPanel1_Container.Name = "dockPanel1_Container";
            dockPanel1_Container.Size = new Size(163, 388);
            dockPanel1_Container.Size = new Size(335, 623);
            dockPanel1_Container.TabIndex = 0;
            // 
            // XhsPumpMainPhartPanel
            // 
            Appearance.BackColor = SystemColors.Control;
            Appearance.Options.UseBackColor = true;
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleDimensions = new SizeF(10F, 22F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(xtrPerform2dChart1);
            Controls.Add(sidePanel1);
            Controls.Add(dockPanel1);
            Controls.Add(ribbonControl1);
            Margin = new Padding(4, 5, 4, 5);
            Margin = new Padding(6, 8, 6, 8);
            Name = "XhsPumpMainPhartPanel";
            Size = new Size(742, 512);
            Size = new Size(1060, 805);
            sidePanel2.ResumeLayout(false);
            sidePanel1.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)tabPane1).EndInit();
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump-main/XhsPumpMainPhartPanel.cs
@@ -198,6 +198,11 @@
        private void barBtnImportByOnePoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var dlg = new Yw.WinFrmUI.Phart.ImportPumpPerform2dByOnePointDlg();
            if (_pump_main != null)
            {
                dlg.Set(_pump_main.RatedFlow, _pump_main.RatedHead, _pump_main.RatedSpeed, _pump_main.RatedEfficiency);
            }
            dlg.ReloadDataEvent += async (other_name, qh, qe, qp) =>
            {
                var bol = await Import(other_name, qh, qe, qp);
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump-main/XhsPumpMainPhartPanel.resx
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Microsoft ResX Schema
    Version 2.0
@@ -48,7 +48,7 @@
    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
WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs
@@ -297,6 +297,7 @@
                pump.RatedH = matching.RatedH;
                pump.RatedN = matching.RatedN;
                pump.RatedHz = matching.RatedHz;
                pump.SpeedRatio = Math.Round(matching.CurrentHz / matching.RatedHz, 1);
                if (!pump.DbLocked)
                {
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
@@ -119,14 +119,15 @@
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke());
                        var dlg = new SinglePumpAnalyDlg();
                        dlg.SetBindindData(input);
                        //dlg.ReloadDataEvent += (output) =>
                        //{
                        //    bol = AssetsMatchingParasHelper.Apply(hydroInfo, output);
                        //    if (bol)
                        //    {
                        //        propertyViewModel.UpdateProperty(pumpInfo, hydroInfo.GetAllParters());
                        //    }
                        //};
                        dlg.ReloadDataEvent += (output) =>
                        {
                            var bol = AssetsMatchingParasHelper.Apply(hydroInfo, output);
                            if (bol)
                            {
                                propViewModel.UpdateProperty(pumpInfo, hydroInfo.GetAllParters());
                            }
                            return bol;
                        };
                        dlg.ShowDialog();
                        return true;
                    }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/02-analy/SinglePumpAnalyDlg.Designer.cs
@@ -67,9 +67,9 @@
            // 
            sidePanel1.Controls.Add(singlePumpAnalyInfoCtrl1);
            sidePanel1.Dock = DockStyle.Right;
            sidePanel1.Location = new Point(900, 48);
            sidePanel1.Location = new Point(800, 48);
            sidePanel1.Name = "sidePanel1";
            sidePanel1.Size = new Size(500, 974);
            sidePanel1.Size = new Size(600, 974);
            sidePanel1.TabIndex = 3;
            sidePanel1.Text = "sidePanel1";
            // 
@@ -78,7 +78,7 @@
            singlePumpAnalyInfoCtrl1.Dock = DockStyle.Fill;
            singlePumpAnalyInfoCtrl1.Location = new Point(1, 0);
            singlePumpAnalyInfoCtrl1.Name = "singlePumpAnalyInfoCtrl1";
            singlePumpAnalyInfoCtrl1.Size = new Size(499, 974);
            singlePumpAnalyInfoCtrl1.Size = new Size(599, 974);
            singlePumpAnalyInfoCtrl1.TabIndex = 0;
            // 
            // pumpVariableSpeedChart1
@@ -89,7 +89,7 @@
            pumpVariableSpeedChart1.LineVisible = false;
            pumpVariableSpeedChart1.Location = new Point(0, 48);
            pumpVariableSpeedChart1.Name = "pumpVariableSpeedChart1";
            pumpVariableSpeedChart1.Size = new Size(900, 974);
            pumpVariableSpeedChart1.Size = new Size(800, 974);
            pumpVariableSpeedChart1.TabIndex = 5;
            // 
            // SinglePumpAnalyDlg
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/00-core/HydroParterInfoUpdateExtensions.cs
@@ -284,7 +284,7 @@
                    hydroValveInfo.UpdatePropStatus(nameof(hydroValveInfo.Diameter), hydroValvePropertyViewModel, nameof(hydroValvePropertyViewModel.Diameter));
                    hydroValveInfo.MinorLoss = hydroValvePropertyViewModel.MinorLoss;
                    hydroValveInfo.UpdatePropStatus(nameof(hydroValveInfo.MinorLoss), hydroValvePropertyViewModel, nameof(hydroValvePropertyViewModel.MinorLoss));
                    hydroValveInfo.ValveType = hydroValvePropertyViewModel.ValveType;
                    hydroValveInfo.ValveType = HydroValveTypeHelper.GetTypeCode(hydroValvePropertyViewModel.ValveType);
                    hydroValveInfo.UpdatePropStatus(nameof(hydroValveInfo.ValveType), hydroValvePropertyViewModel, nameof(hydroValvePropertyViewModel.ValveType));
                    hydroValveInfo.ValveSetting = hydroValvePropertyViewModel.ValveSetting;
                    hydroValveInfo.UpdatePropStatus(nameof(hydroValveInfo.ValveSetting), hydroValvePropertyViewModel, nameof(hydroValvePropertyViewModel.ValveSetting));
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/02-pump/HydroPumpPropertyViewModel.cs
@@ -310,6 +310,7 @@
                this.UpdatePropStatus(nameof(this.SpeedRatio), hydroPumpInfo, nameof(hydroPumpInfo.SpeedRatio));
                this.SpeedRatioPattern = hydroPumpInfo.SpeedRatioPattern;
                this.UpdatePropStatus(nameof(this.SpeedRatioPattern), hydroPumpInfo, nameof(hydroPumpInfo.SpeedRatioPattern));
                this.Curve = string.IsNullOrEmpty(hydroPumpInfo.CurveQH) ? "未配置" : "已配置";
                this.CurveQH = hydroPumpInfo.CurveQH;
                this.UpdatePropStatus(nameof(this.CurveQH), hydroPumpInfo, nameof(hydroPumpInfo.CurveQH));
                this.CurveQP = hydroPumpInfo.CurveQP;
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/03-valve/HydroValvePropertyViewModel.cs
@@ -23,7 +23,7 @@
            this.UpdatePropStatus(nameof(this.Diameter), rhs, nameof(rhs.Diameter));
            this.MinorLoss = rhs.MinorLoss;
            this.UpdatePropStatus(nameof(this.MinorLoss), rhs, nameof(rhs.MinorLoss));
            this.ValveType = rhs.ValveType;
            this.ValveType = HydroValveTypeHelper.GetTypeName(rhs.ValveType);
            this.UpdatePropStatus(nameof(this.ValveType), rhs, nameof(rhs.ValveType));
            this.OpeningDegree = rhs.OpeningDegree;
            this.UpdatePropStatus(nameof(this.OpeningDegree), rhs, nameof(rhs.OpeningDegree));
@@ -114,7 +114,7 @@
                this.UpdatePropStatus(nameof(this.Diameter), hydroValveInfo, nameof(hydroValveInfo.Diameter));
                this.MinorLoss = hydroValveInfo.MinorLoss;
                this.UpdatePropStatus(nameof(this.MinorLoss), hydroValveInfo, nameof(hydroValveInfo.MinorLoss));
                this.ValveType = hydroValveInfo.ValveType;
                this.ValveType = HydroValveTypeHelper.GetTypeName(hydroValveInfo.ValveType);
                this.UpdatePropStatus(nameof(this.ValveType), hydroValveInfo, nameof(hydroValveInfo.ValveType));
                this.OpeningDegree = hydroValveInfo.OpeningDegree;
                this.UpdatePropStatus(nameof(this.OpeningDegree), hydroValveInfo, nameof(hydroValveInfo.OpeningDegree));
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveTypeConverter.cs
@@ -22,12 +22,12 @@
        {
            var list = new List<string>
            {
                ValveType.PRV,
                ValveType.PSV,
                ValveType.PBV,
                ValveType.FCV,
                ValveType.TCV,
                ValveType.GPV
                HydroValveTypeHelper.GetTypeName(Yw.Hydro.ValveType.PRV),
                HydroValveTypeHelper.GetTypeName(Yw.Hydro.ValveType.PSV),
                HydroValveTypeHelper.GetTypeName(Yw.Hydro.ValveType.PBV),
                HydroValveTypeHelper.GetTypeName(Yw.Hydro.ValveType.FCV),
                HydroValveTypeHelper.GetTypeName(Yw.Hydro.ValveType.TCV),
                HydroValveTypeHelper.GetTypeName(Yw.Hydro.ValveType.GPV),
            };
            return new StandardValuesCollection(list);
        }
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
@@ -10,7 +10,7 @@
  <ItemGroup>
    <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
    <PackageReference Include="Yw.BLL.Basic.Core" Version="3.2.8" />
    <PackageReference Include="Yw.BLL.Hydro.Core" Version="3.3.7" />
    <PackageReference Include="Yw.BLL.Hydro.Core" Version="3.3.9" />
  </ItemGroup>
  <ItemGroup>
WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/02-chart/Perform2dChartExtend.cs
@@ -1,4 +1,4 @@
using DevExpress.XtraCharts;
 using DevExpress.XtraCharts;
namespace Yw.WinFrmUI.Phart
@@ -468,6 +468,7 @@
            series.LegendTextPattern = Perform2dChartDisplay.AnnoTextQH;
            if (series.View is SplineSeriesView view)
            {
                view.LineTensionPercent = 50;
                view.MarkerVisibility = showMarker ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
                view.LineStyle.DashStyle = DashStyle.Dash;
                view.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.Miter;
@@ -488,6 +489,7 @@
            series.LegendTextPattern = Perform2dChartDisplay.AnnoTextQL;
            if (series.View is SplineSeriesView view)
            {
                view.LineTensionPercent = 50;
                view.MarkerVisibility = showMarker ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
            }
        }
@@ -501,9 +503,10 @@
            series.View.Color = Perform2dChartDisplay.CurveColorQE;
            series.ArgumentScaleType = ScaleType.Numerical;
            series.CrosshairEnabled = DevExpress.Utils.DefaultBoolean.False;
            series.LegendTextPattern = Perform2dChartDisplay.AnnoTextQE;
            series.LegendTextPattern = Perform2dChartDisplay.AnnoTextQE;
            if (series.View is SplineSeriesView view)
            {
                view.LineTensionPercent = 50;
                view.MarkerVisibility = showMarker ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False; 
            }
@@ -521,6 +524,7 @@
            series.LegendTextPattern = Perform2dChartDisplay.AnnoTextQP;
            if (series.View is SplineSeriesView view)
            {
                view.LineTensionPercent = 50;
                view.MarkerVisibility = showMarker ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False; 
            }
        }
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/01-perform/PumpPerformChart.Designer.cs
@@ -195,7 +195,7 @@
            series2.Name = "SeriesCurveQE";
            series2.SeriesID = 1;
            splineSeriesView2.AxisYName = "AxisYQE";
            splineSeriesView2.Color = Color.Green;
            splineSeriesView2.Color = Color.Green;
            series2.View = splineSeriesView2;
            series3.Name = "SeriesCurveQP";
            series3.SeriesID = 2;
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/01-perform/PumpPerformChart.cs
@@ -1,8 +1,14 @@
using DevExpress.Utils;
using DevExpress.Charts.Model;
using DevExpress.Utils;
using DevExpress.XtraCharts;
using DevExpress.XtraEditors;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Yw.Geometry;
using static DevExpress.Utils.Drawing.Helpers.NativeMethods;
namespace Yw.WinFrmUI.Phart
{
@@ -134,6 +140,7 @@
            _series_qe = this.chartControl1.GetSeriesByName("SeriesCurveQE");
            _series_qe.SetCurveQEDisplay();
            _series_qp = this.chartControl1.GetSeriesByName("SeriesCurveQP");
            _series_qp.SetCurveQPDisplay();
@@ -144,6 +151,7 @@
            _series_qe_pt = this.chartControl1.GetSeriesByName("SeriesPointQE");
            _series_qe_pt.SetPointQEDisplay();
            _series_qp_pt = this.chartControl1.GetSeriesByName("SeriesPointQP");
            _series_qp_pt.SetPointQPDisplay();
@@ -176,7 +184,46 @@
            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;
        }
        private void ChartControl1_CustomPaint(object sender, CustomPaintEventArgs e)
        {
            if (!(e is DXCustomPaintEventArgs dxArgs))
                return;
            if (_qe == null)
            {
                return;
            }
            // ä½¿ç”¨Graphics绘制样条线
            using (var pen = new Pen(Color.Red, 2))
            {
                // dxArgs.Cache.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                // åˆ›å»ºGraphicsPath对象,并添加样条线
                using (var path = new System.Drawing.Drawing2D.GraphicsPath())
                {
                    var pts = _qe.GetPointList().Select(x => new PointF((float)x.X, (float)x.Y)).ToArray();
                    var g_pts = new List<PointF>();
                    foreach (var pt in pts)
                    {
                        var x = pt.X;
                        var y = pt.Y;
                        var c_pt = _main_chart_diagram.DiagramToPoint(x, y, _axisXQ, _axis_y_qe);
                        g_pts.Add(new PointF(c_pt.Point.X, c_pt.Point.Y));
                    }
                    path.AddCurve(g_pts.ToArray());
                    dxArgs.Cache.DrawPath(pen, path);
                }
            }
        }
        /// <summary>
        /// åˆå§‹åŒ–图表数据
@@ -233,7 +280,7 @@
            if (qp != null)
                qp_pt_list = qp.GetPointList(12);
            SetBindingData(qh, qe, qp, qh_pt_list, qe_pt_list, qp_pt_list, null, null, null, coordinate_paras, calc_coordinate);
            SetBindingData(qh, qe, qp, qh_pt_list, qe_pt_list, qp_pt_list, null, qe_pt_list, null, coordinate_paras, calc_coordinate);
        }
@@ -352,7 +399,11 @@
                return;
            }
            _coordinate_paras = PumpCoordinate.CalcCoordinate(_qh_pt_list, _qe_pt_list, _qp_pt_list);
        }
        /// <summary>
@@ -550,7 +601,7 @@
            }
            if (_qe_pt_list != null && _qe_pt_list.Count > 3)
            {
            {
                _series_qe.Visible = true;
                _series_qe.Points.Clear();
                foreach (var pt in _qe_pt_list)
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/05-import/03-one-point/ImportPumpPerform2dByOnePointCtrl.cs
@@ -158,7 +158,9 @@
                {
                    if (qre > 1.01 && qre < 1.8)
                    {
                        var ratio = _work_point.Q * qre / _qh_pt_list.Last().X;
                        var ex_q = _work_point.Q * qre;
                        var max_q = _qh_pt_list.Last().X;
                        var ratio = ex_q / max_q;
                        if (qre > 1.35)
                        {
                            var pointInfoQH2 = GetFitPointListByExtend(_qh_pt_list, ratio);
@@ -189,8 +191,7 @@
            this.xtrPerform2dChart1.SetBindingData(qhCurve, qeCurve, qPCurve);
            return true;
        }
        public List<Yw.Geometry.Point2d> GetFitPointListByExtend(List<Yw.Geometry.Point2d> points, double ratioExtend, int pointNumber = 20)
        {
@@ -198,7 +199,7 @@
                return default;
            var express = new Yw.Geometry.CubicSpline2d(points); 
            return express.GetPointListByXRatioRange(express.MinX, express.MaxX * ratioExtend, pointNumber);
            return express.GetPointListByXRatioRange(1,  ratioExtend);
        }
        public double GetLineInsert(double X1, double X2, double Y1, double Y2, double X)
@@ -217,7 +218,17 @@
        }
        public void Set(double flow, double head, double speed,double? eff, double level, bool is_sxp)
        {
            this.txtQ.EditValue = flow;
            this.txtH.EditValue = head;
            this.txtN.EditValue=speed;
            this.txtE.EditValue = eff;
            this.spinEditYLJS.EditValue= level;
            this.checkEditSXB.Checked = is_sxp;
        }
        /// <summary>
        /// èŽ·å–æ•°æ®
        /// </summary>
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/05-import/03-one-point/ImportPumpPerform2dByOnePointDlg.cs
@@ -15,6 +15,12 @@
        /// å›žè°ƒäº‹ä»¶
        /// </summary>
        public event Func<string, Yw.Pump.CurveQH, Yw.Pump.CurveQE, Yw.Pump.CurveQP, Task<bool>> ReloadDataEvent;
        public void Set(double flow, double head, double speed, double? eff, double level=1, bool is_sxp=true)
        {
            this.importCurveByOnePointCtrl1.Set(flow,head,speed, eff, level,is_sxp);
        }
        //确定
        private async void btnOk_Click(object sender, EventArgs e)
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/99-models/01-coordinate/PumpCoordinate_Disp.cs
@@ -83,7 +83,7 @@
        #endregion
        #region è®¡ç®—坐标
        /// <summary>
        /// è®¡ç®—坐标
        /// </summary>
@@ -124,7 +124,21 @@
                CalcMinMaxValue(QH, QE, QP, ref maxQ, ref minQ, ref maxH, ref minH, ref maxE, ref minE, ref maxP, ref minP);
            }
            return CalcCoordinate(minQ, maxQ, minH, maxH, minE, maxE, minP, maxP);
            var calc_corrd = CalcCoordinate(minQ, maxQ, minH, maxH, minE, maxE, minP, maxP);
            #region ä¿®æ­£Yè½´
            var head_num_y = calc_corrd.EndLineNoH - calc_corrd.StartLineNoH;
            var eff_num_y = calc_corrd.EndLineNoE - calc_corrd.StartLineNoE;
            var power_num_y = calc_corrd.EndLineNoP - calc_corrd.StartLineNoP;
            var sun_num_y = Math.Abs(head_num_y + eff_num_y + power_num_y);
            if (sun_num_y < calc_corrd.GridNumberY)
            {
                calc_corrd.StartLineNoP = 1;
            }
            #endregion
            return calc_corrd;
        }
        /// <summary>
@@ -395,13 +409,13 @@
            coordinate_paras.CoordMinP = GetByPlacesLength(disMaxP - (double)coordinate_paras.EndLineNoP * coordinate_paras.CoordSpaceP, 3);
            if (minP > 0 && minP < 3)
            {
                coordinate_paras.StartLineNoP = 0;
                //coordinate_paras.EndLineNoP = endLineNoP;
                //coordinate_paras.CoordSpaceP = coordSpaceP;
                coordinate_paras.CoordMinP = Math.Floor(minP);
            }
            //if (minP > 0 && minP < 3)
            //{
            //    coordinate_paras.StartLineNoP = 0;
            //    //coordinate_paras.EndLineNoP = endLineNoP;
            //    //coordinate_paras.CoordSpaceP = coordSpaceP;
            //    coordinate_paras.CoordMinP = Math.Floor(minP);
            //}
        }
        /// <summary>