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>