lixiaojun
5 天以前 1c4e474ff6a0ae6cf1b1f7a9de71b3246aba29b6
新增可见元素移除功能
已添加1个文件
已修改10个文件
528 ■■■■■ 文件已修改
Yw.WinFrmUI.Hydro.L3d2.Core/EditerL3d2.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WinFrmUI.Hydro.L3d2.Core/Properties/PublishProfiles/FolderProfile.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WinFrmUI.Hydro.L3d2.Core/Yw.WinFrmUI.Hydro.L3d2.Core.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/01-initial/DrawInitialHelper.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/04-camera/DrawCameraHelper.cs 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/16-remove/DrawRemoveHelper.cs 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/02-manager/DrawEditManager.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/02-manager/DrawManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/03-control/EditerL3d.xaml.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/Properties/PublishProfiles/FolderProfile.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/Yw.WpfUI.Hydro.L3d.Core.csproj 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WinFrmUI.Hydro.L3d2.Core/EditerL3d2.cs
@@ -17,16 +17,18 @@
        /// é€‰æ‹©æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<List<VisualL3d>> SelectionChangedEvent;
        /// <summary>
        /// æ·»åŠ æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<VisualL3d> AddChangedEvent;
        /// <summary>
        /// ç¼–辑改变事件
        /// </summary>
        public event Action<List<VisualL3d>> EditChangedEvent;
        /// <summary>
        /// ç§»é™¤æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<List<VisualL3d>> RemoveChangedEvent;
        #endregion
@@ -54,6 +56,7 @@
            _wpfViewer.SelectionChangedEvent += OnSelectionChanged;
            _wpfViewer.AddChangedEvent += OnAddChanged;
            _wpfViewer.EditChangedEvent += OnEditChanged;
            _wpfViewer.RemoveChangedEvent += OnRemoveChanged;
            var elementHost = new ElementHost();
            elementHost.Dock = DockStyle.Fill;
            elementHost.Child = _wpfViewer;
@@ -666,6 +669,36 @@
        #endregion
        #region ç§»é™¤æ¨¡å¼
        /// <summary>
        /// ç§»é™¤å¯è§å…ƒç´ 
        /// </summary>
        public void RemoveVisual(string Id)
        {
            _wpfViewer?.RemoveVisual(Id);
        }
        /// <summary>
        /// ç§»é™¤å¯è§å…ƒç´ 
        /// </summary>
        public void RemoveVisual(List<string> Ids)
        {
            _wpfViewer?.RemoveVisual(Ids);
        }
        //处理移除改变
        protected virtual void OnRemoveChanged(List<VisualL3d> visuals)
        {
            if (visuals == null || visuals.Count < 1)
            {
                return;
            }
            this.RemoveChangedEvent?.Invoke(visuals);
        }
        #endregion
        //关闭
        protected virtual void Close()
        {
@@ -673,6 +706,7 @@
            {
                _wpfViewer.AddChangedEvent -= OnAddChanged;
                _wpfViewer.EditChangedEvent -= OnEditChanged;
                _wpfViewer.RemoveChangedEvent -= OnRemoveChanged;
                _wpfViewer.SelectionChangedEvent -= OnSelectionChanged;
            }
        }
Yw.WinFrmUI.Hydro.L3d2.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -2,7 +2,7 @@
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
<Project>
  <PropertyGroup>
    <History>True|2025-05-06T17:30:17.9222609Z||;True|2025-05-06T16:07:50.2792890+08:00||;True|2025-05-06T16:07:36.7788692+08:00||;True|2025-05-06T14:03:10.9343885+08:00||;True|2025-05-06T12:25:07.7448966+08:00||;True|2025-05-06T12:20:11.7083540+08:00||;True|2025-05-06T12:20:05.9513514+08:00||;True|2025-05-06T10:51:28.7337521+08:00||;True|2025-05-06T10:51:06.6456811+08:00||;True|2025-05-06T10:50:58.8911173+08:00||;True|2025-05-06T10:34:44.8136252+08:00||;True|2025-05-06T10:34:27.7212544+08:00||;True|2025-05-06T10:16:30.5074881+08:00||;True|2025-05-06T09:07:27.2170966+08:00||;True|2025-04-22T15:50:06.4794535+08:00||;True|2025-04-03T15:07:50.7868897+08:00||;True|2025-04-03T14:53:27.6125391+08:00||;True|2025-04-03T14:09:06.0738035+08:00||;</History>
    <History>True|2025-05-07T08:51:34.5706993Z||;True|2025-05-07T16:51:29.8358152+08:00||;True|2025-05-07T16:51:22.9880137+08:00||;True|2025-05-07T01:30:17.9222609+08:00||;True|2025-05-06T16:07:50.2792890+08:00||;True|2025-05-06T16:07:36.7788692+08:00||;True|2025-05-06T14:03:10.9343885+08:00||;True|2025-05-06T12:25:07.7448966+08:00||;True|2025-05-06T12:20:11.7083540+08:00||;True|2025-05-06T12:20:05.9513514+08:00||;True|2025-05-06T10:51:28.7337521+08:00||;True|2025-05-06T10:51:06.6456811+08:00||;True|2025-05-06T10:50:58.8911173+08:00||;True|2025-05-06T10:34:44.8136252+08:00||;True|2025-05-06T10:34:27.7212544+08:00||;True|2025-05-06T10:16:30.5074881+08:00||;True|2025-05-06T09:07:27.2170966+08:00||;True|2025-04-22T15:50:06.4794535+08:00||;True|2025-04-03T15:07:50.7868897+08:00||;True|2025-04-03T14:53:27.6125391+08:00||;True|2025-04-03T14:09:06.0738035+08:00||;</History>
    <LastFailureDetails />
  </PropertyGroup>
</Project>
Yw.WinFrmUI.Hydro.L3d2.Core/Yw.WinFrmUI.Hydro.L3d2.Core.csproj
@@ -8,11 +8,11 @@
    <OutputType>Library</OutputType>
    <UseWPF>True</UseWPF>
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
    <Version>1.1.3</Version>
    <Version>1.1.5</Version>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Yw.WpfUI.Hydro.L3d.Core" Version="1.1.3" />
    <PackageReference Include="Yw.WpfUI.Hydro.L3d.Core" Version="1.1.5" />
  </ItemGroup>
  <ItemGroup>
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/01-initial/DrawInitialHelper.cs
@@ -295,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 åˆ›å»ºè¾…助
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/04-camera/DrawCameraHelper.cs
@@ -8,18 +8,67 @@
        /// <summary>
        /// 
        /// </summary>
        public DrawCameraHelper(HelixViewport3D viewport)
        public DrawCameraHelper
            (
                HelixViewport3D viewport,
                DrawInitialHelper initialHelper
            )
        {
            _viewport = viewport;
            _initialHelper = initialHelper;
            Attach();
        }
        private readonly HelixViewport3D _viewport = null;//三维组件
        private readonly DrawInitialHelper _initialHelper = null;//初始化辅助类
        /// <summary>
        /// æ˜¯å¦å¯ç”¨
        /// </summary>
        public bool Enabled
        {
            get { return _enabled; }
            set { _enabled = value; }
        }
        private bool _enabled = true;
        /// <summary>
        /// æ˜¯å¦åˆå§‹åŒ–
        /// </summary>
        public bool Initialized
        {
            get { return _initialized; }
            private set { _initialized = value; }
        }
        private bool _initialized = false;
        //初始化
        private void Initialize()
        {
            if (!_initialHelper.Initialized)
            {
                return;
            }
            _initialized = true;
        }
        //处理初始化完成
        private void OnInitialCompleted()
        {
            Initialize();
        }
        #region è§†å›¾æ“ä½œ
        /// <summary>
        /// èŽ·å–è§†å›¾
        /// </summary>
        public CameraSettingL3d GetView()
        {
            if (!Initialized)
            {
                return default;
            }
            var cameraSetting = new CameraSetting(_viewport.Camera);
            return cameraSetting.ToCameraSettingL3d();
        }
@@ -29,6 +78,10 @@
        /// </summary>
        public void SetView(CameraSettingL3d cameraSetting)
        {
            if (!Initialized)
            {
                return;
            }
            if (cameraSetting == null)
            {
                return;
@@ -49,6 +102,8 @@
            }
        }
        #endregion
        #region å…­è§†å›¾
        /// <summary>
@@ -56,6 +111,10 @@
        /// </summary>
        public void SetTopView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(0, 0, -1); // å‘下看
            var upDirection = new Vector3D(0, 1, 0);// Y轴朝上
            _viewport.FitView(lookDirection, upDirection);
@@ -66,6 +125,10 @@
        /// </summary>
        public void SetBottomView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(0, 0, 1);   // å‘上看
            var upDirection = new Vector3D(0, 1, 0);// Y轴朝上
            _viewport.FitView(lookDirection, upDirection);
@@ -76,6 +139,10 @@
        /// </summary>
        public void SetLeftView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(1, 0, 0);   // å‘右看
            var upDirection = new Vector3D(0, 0, 1);// Z轴朝上
            _viewport.FitView(lookDirection, upDirection);
@@ -86,6 +153,10 @@
        /// </summary>
        public void SetRightView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(-1, 0, 0);   // å‘左看
            var upDirection = new Vector3D(0, 0, 1);// Z轴朝上
            _viewport.FitView(lookDirection, upDirection);
@@ -96,6 +167,10 @@
        /// </summary>
        public void SetFrontView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(0, 1, 0);   // å‘后看
            var upDirection = new Vector3D(0, 0, 1);// Z轴朝上
            _viewport.FitView(lookDirection, upDirection);
@@ -106,6 +181,10 @@
        /// </summary>
        public void SetBackView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(0, -1, 0);   // å‘前看
            var upDirection = new Vector3D(0, 0, 1);// Z轴朝上
            _viewport.FitView(lookDirection, upDirection);
@@ -121,6 +200,10 @@
        /// </summary>
        public void SetSouthWestView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(1, 1, -1);
            var upDirection = new Vector3D(0, 0, 1);
            _viewport.FitView(lookDirection, upDirection);
@@ -132,6 +215,10 @@
        /// </summary>
        public void SetSouthEastView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(-1, 1, -1);
            var upDirection = new Vector3D(0, 0, 1);
            _viewport.FitView(lookDirection, upDirection);
@@ -143,6 +230,10 @@
        /// </summary>
        public void SetNorthEastView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(-1, -1, -1);
            var upDirection = new Vector3D(0, 0, 1);
            _viewport.FitView(lookDirection, upDirection);
@@ -154,6 +245,10 @@
        /// </summary>
        public void SetNorthWestView()
        {
            if (!Initialized)
            {
                return;
            }
            var lookDirection = new Vector3D(1, -1, -1);
            var upDirection = new Vector3D(0, 0, 1);
            _viewport.FitView(lookDirection, upDirection);
@@ -161,12 +256,67 @@
        #endregion
        #region é»˜è®¤è§†å›¾
        /// <summary>
        /// æ˜¾ç¤ºé»˜è®¤è§†å›¾
        /// </summary>
        public bool ShowDefaultView()
        {
            if (!Initialized)
            {
                return false;
            }
            var cameraSetting = _initialHelper.GetDefaultCameraSetting();
            if (cameraSetting == null)
            {
                return false;
            }
            SetView(cameraSetting);
            return true;
        }
        #endregion
        //处理鼠标双击事件
        private void OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (e.ChangedButton != MouseButton.Left)
            {
                return;
            }
            if (!Enabled)
            {
                return;
            }
            var bol = ShowDefaultView();
            if (bol)
            {
                return;
            }
            SetSouthWestView();
        }
        //附加
        private void Attach()
        {
            _viewport.MouseDoubleClick += OnMouseDoubleClick;
            _initialHelper.InitialCompletedEvent += OnInitialCompleted;
        }
        //分离
        private void Detach()
        {
            _viewport.MouseDoubleClick -= OnMouseDoubleClick;
            _initialHelper.InitialCompletedEvent -= OnInitialCompleted;
        }
        /// <summary>
        /// é‡Šæ”¾
        /// </summary>
        public void Dispose()
        {
            Detach();
        }
    }
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/16-remove/DrawRemoveHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,181 @@
namespace Yw.WpfUI.Hydro
{
    /// <summary>
    /// ç»˜åˆ¶ç§»é™¤è¾…助类
    /// </summary>
    internal class DrawRemoveHelper : IDisposable
    {
        /// <summary>
        ///
        /// </summary>
        public DrawRemoveHelper
            (
                HelixViewport3D viewport,
                DrawInitialHelper initialHelper
            )
        {
            _viewport = viewport;
            _initialHelper = initialHelper;
            Attach();
        }
        #region äº‹ä»¶é›†åˆ
        /// <summary>
        /// ç§»é™¤æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<List<VisualDraw3D>> RemoveChangedEvent;
        #endregion
        private readonly HelixViewport3D _viewport = null;//三维组件
        private readonly DrawInitialHelper _initialHelper = null;//初始化辅助类
        /// <summary>
        /// æ˜¯å¦åˆå§‹åŒ–
        /// </summary>
        public bool Initialized
        {
            get { return _initialized; }
            private set { _initialized = value; }
        }
        private bool _initialized = false;
        //初始化
        private void Initialize()
        {
            if (!_initialHelper.Initialized)
            {
                return;
            }
            _initialized = true;
        }
        //处理初始化完成
        private void OnInitialCompleted()
        {
            Initialize();
        }
        /// <summary>
        /// ç§»é™¤
        /// </summary>
        public bool Remove(string Id)
        {
            if (!Initialized)
            {
                return false;
            }
            if (string.IsNullOrEmpty(Id))
            {
                return false;
            }
            var visual3d = _initialHelper.GetVisual3D(Id);
            if (visual3d == null)
            {
                return false;
            }
            var list = new List<VisualDraw3D>();
            list.Add(visual3d);
            if (visual3d is NodeDraw3D node3d)
            {
                var link3ds = _initialHelper.GetConnectLink3D(node3d);
                if (link3ds != null && link3ds.Count > 0)
                {
                    foreach (var link3d in link3ds)
                    {
                        if (!list.Contains(link3d))
                        {
                            list.Add(link3d);
                        }
                    }
                }
            }
            var bol = _initialHelper.RemoveVisual3D(list);
            if (bol)
            {
                OnRemoveChanged(list);
            }
            return bol;
        }
        /// <summary>
        /// ç§»é™¤
        /// </summary>
        public bool Remove(List<string> Ids)
        {
            if (!Initialized)
            {
                return false;
            }
            if (Ids == null || Ids.Count < 1)
            {
                return false;
            }
            var list = new List<VisualDraw3D>();
            foreach (var Id in Ids)
            {
                var visual3d = _initialHelper.GetVisual3D(Id);
                if (visual3d != null)
                {
                    if (!list.Contains(visual3d))
                    {
                        list.Add(visual3d);
                    }
                    if (visual3d is NodeDraw3D node3d)
                    {
                        var link3ds = _initialHelper.GetConnectLink3D(node3d);
                        if (link3ds != null && link3ds.Count > 0)
                        {
                            foreach (var link3d in link3ds)
                            {
                                if (!list.Contains(link3d))
                                {
                                    list.Add(link3d);
                                }
                            }
                        }
                    }
                }
            }
            var bol = _initialHelper.RemoveVisual3D(list);
            if (bol)
            {
                OnRemoveChanged(list);
            }
            return bol;
        }
        //处理移除改变
        private void OnRemoveChanged(List<VisualDraw3D> visual3ds)
        {
            if (visual3ds == null || visual3ds.Count < 1)
            {
                return;
            }
            this.RemoveChangedEvent?.Invoke(visual3ds);
        }
        //附加
        private void Attach()
        {
            _initialHelper.InitialCompletedEvent += OnInitialCompleted;
        }
        //分离
        private void Detach()
        {
            _initialHelper.InitialCompletedEvent -= OnInitialCompleted;
        }
        /// <summary>
        /// é‡Šæ”¾
        /// </summary>
        public void Dispose()
        {
            Detach();
        }
    }
}
Yw.WpfUI.Hydro.L3d.Core/03-draw/02-manager/DrawEditManager.cs
@@ -15,6 +15,8 @@
            _addHelper.AddChangedEvent += OnAddChanged;
            _editHelper = new DrawEditHelper(viewport, _initialHelper, _selectionHelper);
            _editHelper.EditChangedEvent += OnEditChanged;
            _removeHelper = new DrawRemoveHelper(viewport, _initialHelper);
            _removeHelper.RemoveChangedEvent += OnRemoveChanged;
        }
@@ -30,11 +32,17 @@
        /// </summary>
        public event Action<List<VisualL3d>> EditChangedEvent;
        /// <summary>
        /// ç§»é™¤æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<List<VisualL3d>> RemoveChangedEvent;
        #endregion
        protected readonly DrawMoudingHelper _moudingHelper = null;//牟定辅助类
        protected readonly DrawAddHelper _addHelper = null;//添加辅助类
        protected readonly DrawEditHelper _editHelper = null;//编辑辅助类
        protected readonly DrawRemoveHelper _removeHelper = null;//移除辅助类
        #region æ·»åŠ æ–¹æ³•
@@ -94,6 +102,10 @@
        /// </summary>
        public virtual void StartEdit()
        {
            if (!Initialized)
            {
                return;
            }
            _editHelper.Start();
        }
@@ -102,6 +114,10 @@
        /// </summary>
        public virtual void EndEdit()
        {
            if (!Initialized)
            {
                return;
            }
            _editHelper.End();
        }
@@ -118,6 +134,49 @@
        #endregion
        #region ç§»é™¤æ–¹æ³•
        /// <summary>
        /// ç§»é™¤
        /// </summary>
        public virtual bool RemoveVisual(string Id)
        {
            if (!Initialized)
            {
                return false;
            }
            return _removeHelper.Remove(Id);
        }
        /// <summary>
        /// ç§»é™¤
        /// </summary>
        public virtual bool RemoveVisual(List<string> Ids)
        {
            if (!Initialized)
            {
                return false;
            }
            if (Ids == null || Ids.Count < 1)
            {
                return false;
            }
            return _removeHelper.Remove(Ids);
        }
        //处理移除改变
        protected virtual void OnRemoveChanged(List<VisualDraw3D> visual3ds)
        {
            if (visual3ds == null || visual3ds.Count < 1)
            {
                return;
            }
            var visuals = visual3ds.Select(x => x.Visual).ToList();
            this.RemoveChangedEvent?.Invoke(visuals);
        }
        #endregion
        /// <summary>
        /// å…³é—­
        /// </summary>
@@ -127,6 +186,8 @@
            _addHelper.Dispose();
            _editHelper.EditChangedEvent -= OnEditChanged;
            _editHelper.Dispose();
            _removeHelper.RemoveChangedEvent -= OnRemoveChanged;
            _removeHelper.Dispose();
            base.Close();
        }
Yw.WpfUI.Hydro.L3d.Core/03-draw/02-manager/DrawManager.cs
@@ -14,7 +14,7 @@
            _initialHelper = new DrawInitialHelper(viewport);
            _backgroundHelper = new DrawBackgroundHelper(viewport, _initialHelper);
            _workPanelHelper = new DrawWorkPanelHelper(viewport, _initialHelper);
            _cameraHelper = new DrawCameraHelper(viewport);
            _cameraHelper = new DrawCameraHelper(viewport, _initialHelper);
            _zoomHelper = new DrawZoomHelper(viewport);
            _highlightHelper = new DrawHighlightHelper(viewport, _initialHelper);
            _selectionHelper = new DrawSelectionHelper(viewport, _initialHelper);
Yw.WpfUI.Hydro.L3d.Core/03-draw/03-control/EditerL3d.xaml.cs
@@ -27,6 +27,10 @@
        /// ç¼–辑改变事件
        /// </summary>
        public event Action<List<VisualL3d>> EditChangedEvent;
        /// <summary>
        /// ç§»é™¤æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<List<VisualL3d>> RemoveChangedEvent;
        #endregion
@@ -48,6 +52,7 @@
            _manager.SelectionChangedEvent += OnSelectionChanged;
            _manager.AddChangedEvent += OnAddChanged;
            _manager.EditChangedEvent += OnEditChanged;
            _manager.RemoveChangedEvent += OnRemoveChanged;
        }
        #endregion
@@ -666,7 +671,57 @@
        //处理编辑改变
        private void OnEditChanged(List<VisualL3d> visuals)
        {
            if (visuals == null || visuals.Count < 1)
            {
                return;
            }
            this.EditChangedEvent?.Invoke(visuals);
        }
        #endregion
        #region ç§»é™¤æ¨¡å¼
        /// <summary>
        /// ç§»é™¤å¯è§å…ƒç´ 
        /// </summary>
        public bool RemoveVisual(string Id)
        {
            if (_manager == null)
            {
                return false;
            }
            if (string.IsNullOrEmpty(Id))
            {
                return false;
            }
            return _manager.RemoveVisual(Id);
        }
        /// <summary>
        /// ç§»é™¤å¯è§å…ƒç´ 
        /// </summary>
        public bool RemoveVisual(List<string> Ids)
        {
            if (_manager == null)
            {
                return false;
            }
            if (Ids == null || Ids.Count < 1)
            {
                return false;
            }
            return _manager.RemoveVisual(Ids);
        }
        //处理移除改变
        private void OnRemoveChanged(List<VisualL3d> visuals)
        {
            if (visuals == null || visuals.Count < 1)
            {
                return;
            }
            this.RemoveChangedEvent?.Invoke(visuals);
        }
        #endregion
@@ -681,6 +736,7 @@
                _manager.SelectionChangedEvent -= OnSelectionChanged;
                _manager.AddChangedEvent -= OnAddChanged;
                _manager.EditChangedEvent -= OnEditChanged;
                _manager.RemoveChangedEvent -= OnRemoveChanged;
                _manager?.Close();
                _manager = null;
            }
Yw.WpfUI.Hydro.L3d.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -2,7 +2,7 @@
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
<Project>
  <PropertyGroup>
    <History>True|2025-05-06T17:24:12.9168050Z||;True|2025-05-06T15:58:43.9672087+08:00||;True|2025-05-06T13:56:55.7963451+08:00||;False|2025-05-06T13:56:30.4192182+08:00||;True|2025-05-06T12:24:06.1275328+08:00||;True|2025-05-06T12:17:30.5477075+08:00||;True|2025-05-06T12:09:02.1715202+08:00||;True|2025-05-06T10:48:14.2754277+08:00||;True|2025-05-06T10:31:56.4341238+08:00||;True|2025-05-06T10:11:06.0348707+08:00||;True|2025-05-06T10:11:00.3082825+08:00||;False|2025-05-06T10:10:39.1136970+08:00||;True|2025-05-06T09:05:16.4695917+08:00||;True|2025-04-22T15:43:19.8599243+08:00||;True|2025-04-03T14:51:22.5389895+08:00||;True|2025-04-03T13:39:16.2049845+08:00||;</History>
    <History>True|2025-05-07T08:43:01.9094990Z||;True|2025-05-07T01:24:12.9168050+08:00||;True|2025-05-06T15:58:43.9672087+08:00||;True|2025-05-06T13:56:55.7963451+08:00||;False|2025-05-06T13:56:30.4192182+08:00||;True|2025-05-06T12:24:06.1275328+08:00||;True|2025-05-06T12:17:30.5477075+08:00||;True|2025-05-06T12:09:02.1715202+08:00||;True|2025-05-06T10:48:14.2754277+08:00||;True|2025-05-06T10:31:56.4341238+08:00||;True|2025-05-06T10:11:06.0348707+08:00||;True|2025-05-06T10:11:00.3082825+08:00||;False|2025-05-06T10:10:39.1136970+08:00||;True|2025-05-06T09:05:16.4695917+08:00||;True|2025-04-22T15:43:19.8599243+08:00||;True|2025-04-03T14:51:22.5389895+08:00||;True|2025-04-03T13:39:16.2049845+08:00||;</History>
    <LastFailureDetails />
  </PropertyGroup>
</Project>
Yw.WpfUI.Hydro.L3d.Core/Yw.WpfUI.Hydro.L3d.Core.csproj
@@ -7,7 +7,7 @@
        <UseWPF>true</UseWPF>
        <ImplicitUsings>enable</ImplicitUsings>
        <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
        <Version>1.1.3</Version>
        <Version>1.1.5</Version>
    </PropertyGroup>
    <ItemGroup>
@@ -38,6 +38,7 @@
        <Folder Include="02-settings\01-paras\05-logical\02-link\01-pipe\" />
        <Folder Include="02-settings\01-paras\05-logical\02-link\02-pump\" />
        <Folder Include="02-settings\01-paras\05-logical\02-link\03-valve\" />
        <Folder Include="03-draw\00-core\17-group\" />
    </ItemGroup>
</Project>