lixiaojun
6 天以前 1c4e474ff6a0ae6cf1b1f7a9de71b3246aba29b6
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/01-initial/DrawInitialHelper.cs
@@ -142,6 +142,89 @@
        }
        /// <summary>
        /// 获取Node3D
        /// </summary>
        public List<NodeDraw3D> GetNode3D()
        {
            if (!Initialized)
            {
                return default;
            }
            return _allVisual3dDict.Values.Where(x => x is NodeDraw3D).Select(x => x as NodeDraw3D).ToList();
        }
        /// <summary>
        /// 获取Link3D
        /// </summary>
        public List<LinkDraw3D> GetLink3D()
        {
            if (!Initialized)
            {
                return default;
            }
            return _allVisual3dDict.Values.Where(x => x is LinkDraw3D).Select(x => x as LinkDraw3D).ToList();
        }
        /// <summary>
        /// 获取连接的Link3D
        /// </summary>
        public List<LinkDraw3D> GetConnectLink3D(NodeDraw3D node3d)
        {
            if (!Initialized)
            {
                return default;
            }
            var node = node3d.Visual;
            var link3ds = GetLink3D();
            return link3ds.Where(x => x.Visual.StartNode == node || x.Visual.EndNode == node).ToList();
        }
        /// <summary>
        /// 获取连接的Node3D
        /// </summary>
        public List<NodeDraw3D> GetConnectNode3D(LinkDraw3D link3d)
        {
            if (!Initialized)
            {
                return default;
            }
            var node3ds = GetNode3D();
            return node3ds.Where(x => x.Visual == link3d.Visual.StartNode || x.Visual == link3d.Visual.EndNode).ToList();
        }
        /// <summary>
        /// 获取连接的Visual3D
        /// </summary>
        public List<VisualDraw3D> GetConnect3D(VisualDraw3D visual3d)
        {
            if (!Initialized)
            {
                return default;
            }
            var list = new List<VisualDraw3D>();
            if (visual3d is NodeDraw3D node3d)
            {
                var link3ds = GetConnectLink3D(node3d);
                link3ds?.ForEach(x => list.Add(x));
                return list;
            }
            if (visual3d is LinkDraw3D link3d)
            {
                var node3ds = GetConnectNode3D(link3d);
                if (node3ds != null && node3ds.Count > 0)
                {
                    foreach (var item in node3ds)
                    {
                        list.Add(item);
                        var link3ds = GetConnectLink3D(item);
                        link3ds?.ForEach(x => list.Add(x));
                    }
                }
            }
            return list;
        }
        /// <summary>
        /// 添加Visual3D
        /// </summary>
        public bool AddVisual3D(VisualDraw3D visual3d)
@@ -212,6 +295,31 @@
            return true;
        }
        /// <summary>
        /// 移除Visual3D
        /// </summary>
        public bool RemoveVisual3D(List<VisualDraw3D> visual3ds)
        {
            if (!Initialized)
            {
                return false;
            }
            if (visual3ds == null || visual3ds.Count < 1)
            {
                return false;
            }
            var result = true;
            foreach (var item in visual3ds)
            {
                var bol = RemoveVisual3D(item);
                if (!bol)
                {
                    result = false;
                }
            }
            return result;
        }
        #endregion
        #region 创建辅助