namespace Yw.WinFrmUI.Hydro { /// /// 包围盒缓存辅助类 /// internal class BoundingBox32dCacheHelper { /// /// /// public BoundingBox32dCacheHelper(NetworkL3d nw, Vector32dCacheHelper vc) { _nw = nw; _vc = vc; Initial(); } private NetworkL3d _nw = null; private Vector32dCacheHelper _vc = null; private Dictionary _dict = new(); //初始化 private void Initial() { if (_nw == null) { return; } if (_vc == null) { return; } _dict.Clear(); _nw.Nodes.ForEach(x => { var pts = _vc.GetPositions(x.Id); if (pts != null && pts.Count > 0) { var bx = BoundingBox3Helper.CalcuPointBoundingBox(pts[0], x.Style2d.Normal.Radiu); _dict.Add(x.Id, bx); } }); _nw.Links.ForEach((Action)(x => { var pts = _vc.GetPositions(x.Id); if (pts != null && pts.Count > 0) { var bx = BoundingBox3Helper.CalcuLineBoundingBox(pts[0], pts[1], x.Style2d.Normal.Width); _dict.Add(x.Id, bx); } })); } /// /// 获取包围盒 /// public BoundingBox3 GetBoundingBox(string id) { if (_dict.ContainsKey(id)) { return _dict[id]; } return default; } } }