lixiaojun
2024-12-03 4da9b8277d8ef7567dfc9ca47f1251849b7234de
增加过渡件上下游直径修复
已修改5个文件
214 ■■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/02-feat/SimulationPumpFeatDlg.Designer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/02-transfer/HydroW3dTransferHelper.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-extensions/HydroModelInfoExtensions.cs 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.W3d.Core/01-network/04-link/01-pipe/TranslationViewModel.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs
@@ -253,9 +253,20 @@
            }
            feedBackMsg?.Invoke("正在进行管网修复...", Color.Black);
            if (hydroInfo.Repair(out msg))
            if (hydroInfo.RepairLinksDirection(out msg))
            {
                feedBackMsg?.Invoke(msg, Color.Green);
            }
            else
            {
                feedBackMsg?.Invoke(msg, Color.Red);
            }
            feedBackMsg?.Invoke("正在进行管网参数修复...", Color.Black);
            hydroInfo.RepairParas(out msg);
            if (string.IsNullOrEmpty(msg))
            {
                feedBackMsg?.Invoke("管网参数修复完成。。。", Color.Green);
            }
            else
            {
@@ -453,5 +464,7 @@
            #endregion
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/02-feat/SimulationPumpFeatDlg.Designer.cs
@@ -78,7 +78,7 @@
            Ribbon = ribbon;
            RibbonVisibility = DevExpress.XtraBars.Ribbon.RibbonVisibility.Hidden;
            StartPosition = FormStartPosition.CenterParent;
            Text = "并联模拟";
            Text = "性能曲线";
            FormClosing += SimulationPumpFeatDlg_FormClosing;
            ((ISupportInitialize)ribbon).EndInit();
            ResumeLayout(false);
WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/02-transfer/HydroW3dTransferHelper.cs
@@ -238,6 +238,8 @@
                    translationModel.StartId = translation.StartCode;
                    translationModel.EndId = translation.EndCode;
                    translationModel.Diameter = translation.Diameter;
                    translationModel.StartDiameter = translation.StartDiameter;
                    translationModel.EndDiameter = translation.EndDiameter;
                    netWork.Translations.Add(translationModel);
                }
            }
WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-extensions/HydroModelInfoExtensions.cs
@@ -5,10 +5,12 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    ///
    /// 水力信息拓展
    /// </summary>
    public static class HydroModelInfoExtensions
    {
        #region 可见字典
        /// <summary>
        /// 获取可见字典
        /// </summary>
@@ -22,10 +24,14 @@
            return allVisualList?.ToDictionary(x => x.Code);
        }
        #endregion
        #region 修复管网方向
        /// <summary>
        /// 修复
        /// 修复管网方向
        /// </summary>
        public static bool Repair(this Yw.Model.HydroModelInfo hydroInfo, out string msg)
        public static bool RepairLinksDirection(this Yw.Model.HydroModelInfo hydroInfo, out string msg)
        {
            msg = string.Empty;
            if (hydroInfo == null)
@@ -79,6 +85,174 @@
            return true;
        }
        #endregion
        #region 修复参数
        private const double _pipe_diameter_default = 500;//管道默认直径
        private const double _pipe_roughness_default = 110;//管道默认粗糙系数
        private const double _pipe_minorloss_default = 0.1;//管道默认粗糙系数
        //阀门默认局阻系数
        private const double _valve_minorloss_default = 0.3d;
        /// <summary>
        /// 修复参数
        /// </summary>
        public static void RepairParas(this Yw.Model.HydroModelInfo hydroInfo, out string msg)
        {
            msg = string.Empty;
            if (hydroInfo == null)
            {
                return;
            }
            var allNodes = hydroInfo.GetAllNodes();
            var allLinks = hydroInfo.GetAllLinks();
            //管道
            if (hydroInfo.Pipes != null && hydroInfo.Pumps.Count > 0)
            {
                foreach (var pipe in hydroInfo.Pipes)
                {
                    if (pipe.Diameter <= 0)
                    {
                        pipe.Diameter = _pipe_diameter_default;
                        pipe.UpdatePropStatus(nameof(pipe.Diameter), ePropStatus.Lack, $"直径缺省,使用默认值【{_pipe_diameter_default}mm】修复");
                    }
                    if (pipe.Roughness <= 0)
                    {
                        pipe.Roughness = _pipe_roughness_default;
                        pipe.UpdatePropStatus(nameof(pipe.Roughness), ePropStatus.Lack, $"粗糙系数缺省,使用默认值【{_pipe_roughness_default}】修复");
                    }
                    if (pipe.MinorLoss <= 0)
                    {
                        pipe.MinorLoss = _pipe_minorloss_default;
                        pipe.UpdatePropStatus(nameof(pipe.MinorLoss), ePropStatus.Lack, $"粗糙系数缺省,使用默认值【{_pipe_minorloss_default}】修复");
                    }
                }
            }
            //过渡件
            if (hydroInfo.Translations != null && hydroInfo.Translations.Count > 0)
            {
                foreach (var translation in hydroInfo.Translations)
                {
                    if (translation.Diameter <= 0)
                    {
                        translation.Diameter = _pipe_diameter_default;
                        translation.UpdatePropStatus(nameof(translation.Diameter), ePropStatus.Lack, $"直径缺省,使用默认值【{_pipe_diameter_default}mm】修复");
                    }
                    if (translation.Roughness <= 0)
                    {
                        translation.Roughness = _pipe_roughness_default;
                        translation.UpdatePropStatus(nameof(translation.Roughness), ePropStatus.Lack, $"粗糙系数缺省,使用默认值【{_pipe_roughness_default}】修复");
                    }
                    if (translation.MinorLoss <= 0)
                    {
                        translation.MinorLoss = _pipe_minorloss_default;
                        translation.UpdatePropStatus(nameof(translation.MinorLoss), ePropStatus.Lack, $"粗糙系数缺省,使用默认值【{_pipe_minorloss_default}】修复");
                    }
                }
                foreach (var translation in hydroInfo.Translations)
                {
                    double? tempDiameter = null;
                    var startNode = allNodes.Find(x => x.Code == translation.StartCode);
                    if (startNode != null)
                    {
                        var startLink = allLinks.Find(x => x.EndCode == startNode.Code);
                        if (startLink != null)
                        {
                            var startPipe = startLink as Yw.Model.HydroPipeInfo;
                            if (startPipe != null)
                            {
                                tempDiameter = startPipe.Diameter;
                                if (translation.StartDiameter != startPipe.Diameter)
                                {
                                    translation.StartDiameter = startPipe.Diameter;
                                    translation.UpdatePropStatus(nameof(translation.StartDiameter), ePropStatus.Lack, $"上游直径缺省,使用上游管道【{startPipe.Code}】修复");
                                }
                            }
                        }
                    }
                    var endNode = allNodes.Find(x => x.Code == translation.EndCode);
                    if (endNode != null)
                    {
                        var endLink = allLinks.Find(x => x.StartCode == endNode.Code);
                        if (endLink != null)
                        {
                            var endPipe = endLink as Yw.Model.HydroPipeInfo;
                            if (endPipe != null)
                            {
                                if (translation.EndDiameter != endPipe.Diameter)
                                {
                                    tempDiameter = endPipe.Diameter;
                                    translation.EndDiameter = endPipe.Diameter;
                                    translation.UpdatePropStatus(nameof(translation.EndDiameter), ePropStatus.Lack, $"下游直径缺省,使用下游管道【{endPipe.Code}】修复");
                                }
                            }
                        }
                    }
                    if (translation.StartDiameter <= 0)
                    {
                        if (tempDiameter.HasValue)
                        {
                            translation.StartDiameter = tempDiameter.Value;
                        }
                    }
                    if (translation.EndDiameter <= 0)
                    {
                        if (tempDiameter.HasValue)
                        {
                            translation.EndDiameter = tempDiameter.Value;
                        }
                    }
                }
            }
            //阀门
            if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
            {
                foreach (var valve in hydroInfo.Valves)
                {
                    if (valve.MinorLoss <= 0)
                    {
                        valve.MinorLoss = _valve_minorloss_default;
                        valve.UpdatePropStatus(nameof(valve.MinorLoss), ePropStatus.Lack, $"局阻系数缺省,使用默认值【{_valve_minorloss_default}】修复");
                    }
                    if (valve.Diameter <= 0)
                    {
                        var startNode = allNodes.Find(x => x.Code == valve.StartCode);
                        if (startNode != null)
                        {
                            var startPipe = allLinks.Find(x => x.EndCode == startNode.Code) as Yw.Model.HydroPipeInfo;
                            if (startPipe != null)
                            {
                                valve.Diameter = startPipe.Diameter;
                                valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Lack, $"直径缺省,使用上游管道【{startPipe.Code}】修复");
                            }
                            else
                            {
                                var endNode = allNodes.Find(x => x.Code == valve.EndCode);
                                if (endNode != null)
                                {
                                    var endPipe = allLinks.Find(x => x.StartCode == endNode.Code) as Yw.Model.HydroPipeInfo;
                                    if (endPipe != null)
                                    {
                                        valve.Diameter = endPipe.Diameter;
                                        valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Lack, $"直径缺省,使用下游管道【{endPipe.Code}】修复");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        #endregion
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.W3d.Core/01-network/04-link/01-pipe/TranslationViewModel.cs
@@ -15,7 +15,20 @@
        /// </summary>
        public TranslationViewModel(TranslationViewModel rhs) : base(rhs)
        {
            this.StartDiameter = rhs.StartDiameter;
            this.EndDiameter = rhs.EndDiameter;
        }
        /// <summary>
        /// 开始直径
        /// </summary>
        [JsonProperty("StartDiameter", NullValueHandling = NullValueHandling.Ignore)]
        public double StartDiameter { get; set; }
        /// <summary>
        /// 结束直径
        /// </summary>
        [JsonProperty("EndDiameter", NullValueHandling = NullValueHandling.Ignore)]
        public double EndDiameter { get; set; }
    }
}