lixiaojun
2024-10-14 145dcc3a9ed1c3bcbc01c8da2b341aaa6ee5dbd2
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -1,5 +1,7 @@
global using Yw.EPAnet;
using DevExpress.XtraMap.Drawing;
using NetTaste;
using Org.BouncyCastle.Crypto.Engines;
namespace HStation.WinFrmUI
{
@@ -108,8 +110,6 @@
        //bimface控件
        private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null;
        //设置Bimface连接颜色
        private async void SetBimfaceLinkColor()
        {
@@ -117,48 +117,58 @@
            {
                return;
            }
            var elementIds = new List<string>();
            if (_parter != null)
            {
                if (_parter is Yw.Model.HydroLinkInfo linker)
                if (_parter is Yw.Model.HydroLinkInfo link)
                {
                    var allParterList = _hydroInfo.GetAllParters();
                    var allLinkerList = _hydroInfo.GetAllLinks();
                    var startParter = allParterList?.Find(x => x.Code == linker.StartCode);
                    await _bimfaceCtrl?.RestoreLinkComponentsColor();
                    var allVisualList = _hydroInfo.GetAllVisuals();
                    var allLinkList = _hydroInfo.GetAllLinks();
                    var startParter = allVisualList?.Find(x => x.Code == link.StartCode);
                    if (startParter != null)
                    {
                        var startElementIds = new List<string>();
                        if (startParter.GetType() == typeof(Yw.Model.HydroJunctionInfo))
                        {
                            var startLinkList = allLinkerList?.Where(x => x.StartCode == startParter.Code || x.EndCode == startParter.Code).ToList();
                            if (startLinkList != null)
                            var startLinkList = allLinkList?.Where(x => x.StartCode == startParter.Code || x.EndCode == startParter.Code && x.Code != _parter.Code).ToList();
                            if (startLinkList != null && startLinkList.Count > 0)
                            {
                                elementIds.AddRange(startLinkList.Select(x => x.Code).Where(x => x != _parter.Code));
                                startElementIds.AddRange(startLinkList.Select(x => x.Code));
                            }
                        }
                        else
                        {
                            elementIds.Add(linker.StartCode);
                            startElementIds.Add(startParter.Code);
                        }
                        if (startElementIds.Count > 0)
                        {
                            await _bimfaceCtrl?.SetLinkStartComponentsColor(startElementIds);
                        }
                    }
                    var endParter = allParterList?.Find(x => x.Code == linker.EndCode);
                    var endParter = allVisualList?.Find(x => x.Code == link.EndCode);
                    if (endParter != null)
                    {
                        var endElementIds = new List<string>();
                        if (endParter.GetType() == typeof(Yw.Model.HydroJunctionInfo))
                        {
                            var endLinkList = allLinkerList?.Where(x => x.StartCode == endParter.Code || x.EndCode == endParter.Code).ToList();
                            if (endLinkList != null)
                            var endLinkList = allLinkList?.Where(x => x.StartCode == endParter.Code || x.EndCode == endParter.Code && x.Code != _parter.Code).ToList();
                            if (endLinkList != null && endLinkList.Count > 0)
                            {
                                elementIds.AddRange(endLinkList.Select(x => x.Code).Where(x => x != _parter.Code));
                                endElementIds.AddRange(endLinkList.Select(x => x.Code));
                            }
                        }
                        else
                        {
                            elementIds.Add(linker.EndCode);
                            endElementIds.Add(endParter.Code);
                        }
                        if (endElementIds.Count > 0)
                        {
                            await _bimfaceCtrl?.SetLinkEndComponentsColor(endElementIds);
                        }
                    }
                }
            }
            await _bimfaceCtrl?.SetLinkComponentsColor(elementIds);
        }
        #endregion