From 03da721341232b6054d5d25f94a3bd1014771805 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期一, 23 九月 2024 13:19:01 +0800
Subject: [PATCH] 增加bimface 定位

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs |   33 ++++++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/XhsProjectSimulationCorePage.cs |   42 ++++++++-----
 WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs         |   30 +++++++++
 WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs          |   60 ++++++++++++++++++--
 4 files changed, 140 insertions(+), 25 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
index e913b65..c200425 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
@@ -1,4 +1,7 @@
-锘縩amespace HStation.WinFrmUI
+锘縰sing DevExpress.Office.Utils;
+using DevExpress.Xpo.Helpers;
+
+namespace HStation.WinFrmUI
 {
     public partial class XhsProjectSimulationBimfaceCtrl : DevExpress.XtraEditors.XtraUserControl
     {
@@ -175,5 +178,33 @@
 
         #endregion
 
+        #region 缂╂斁
+
+        /// <summary>
+        /// 缂╂斁鑷虫瀯浠�
+        /// </summary>
+        public async Task ZoomToComponent(string elementId)
+        {
+            await this.bimfaceInterop3dContainer1.ZoomToComponent(elementId);
+        }
+
+        /// <summary>
+        /// 缂╂斁鑷抽�夋嫨鏋勪欢
+        /// </summary>
+        public async Task ZoomToSelectedComponents()
+        {
+            await this.bimfaceInterop3dContainer1.ZoomToSelectedComponents();
+        }
+
+        /// <summary>
+        /// 缂╂斁鑷抽�夋嫨鏋勪欢
+        /// </summary>
+        public async Task ZoomAndSelectComponents(List<string> elementIds)
+        {
+            await this.bimfaceInterop3dContainer1.ZoomAndSelectComponents(elementIds);
+        }
+
+        #endregion
+
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/XhsProjectSimulationCorePage.cs
index 8767e14..e717e38 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/XhsProjectSimulationCorePage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -190,22 +190,7 @@
             TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛");
         }
 
-        //鏈尮閰嶅垪琛�
-        private void barBtnUnMatchingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
-            this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
-            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
-            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
 
-            this.xhsProjectSimulationUnMatchingListCtrl1.SetBindingData(_hydroInfo);
-            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-            this.docPnlUnMatchingList.Height = 350;
-        }
 
         //bimface 鏋勪欢鐐瑰嚮
         private void xhsProjectSimulationBimfaceCtrl1_ClickParterEvent(string objectId)
@@ -408,12 +393,33 @@
             ShowProperty();
         }
 
+        #region 鏈尮閰嶅垪琛�
+
+        //鏈尮閰嶅垪琛�
+        private void barBtnUnMatchingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+            this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+            this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+
+            this.xhsProjectSimulationUnMatchingListCtrl1.SetBindingData(_hydroInfo);
+            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlUnMatchingList.Height = 350;
+        }
+
         //鏈尮閰嶅垪琛ㄧ偣鍑讳簨浠�
         private async void xhsProjectSimulationUnMatchingListCtrl1_HydroClickEvent(Yw.Model.HydroParterInfo parter)
         {
             var allParterList = _hydroInfo.GetAllParters();
             _parter = allParterList.Find(x => x.ID == parter.ID);
-            await this.xhsProjectSimulationBimfaceCtrl1.SetSelectedComponents(new List<string>() { _parter.Code });
+            var elementIds = new List<string>() { _parter.Code };
+            await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds);
             ShowProperty();
         }
 
@@ -421,11 +427,13 @@
         private async void XhsProjectSimulationUnMatchingListCtrl1_ViewModelEvent(List<Yw.Model.HydroParterInfo> parters)
         {
             var codes = parters?.Select(x => x.Code).Distinct().ToList();
-            await this.xhsProjectSimulationBimfaceCtrl1.AddSelectedComponents(codes);
+            await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(codes);
             _parter = null;
             ShowProperty();
         }
 
 
+        #endregion
+
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs
index cac57ce..796376b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs
@@ -1,9 +1,4 @@
-锘�
-
-using DevExpress.CodeParser;
-using DevExpress.XtraDiagram.Base;
-
-namespace Yw.WinFrmUI
+锘縩amespace Yw.WinFrmUI
 {
     public partial class BimfaceInterop3dContainer : UserControl, IBimfaceInterop3dContainer
     {
@@ -291,6 +286,59 @@
             await this.webViewControl1.EvaluateScriptAsync("clearSelectedComponents()");
         }
 
+
+        #endregion
+
+        #region 缂╂斁
+
+        /// <summary>
+        /// 缂╂斁鑷冲寘鍥寸洅
+        /// </summary>
+        public async Task ZoomToBoundingBox(BoundingBox boundingbox)
+        {
+            if (!_isViewInitialized)
+            {
+                return;
+            }
+            await this.webViewControl1.EvaluateScriptAsync("zoomToBoundingBox", boundingbox);
+        }
+
+        /// <summary>
+        /// 缂╂斁鑷虫瀯浠�
+        /// </summary>
+        public async Task ZoomToComponent(string id)
+        {
+            if (!_isViewInitialized)
+            {
+                return;
+            }
+            await this.webViewControl1.EvaluateScriptAsync("zoomToComponent", id);
+        }
+
+        /// <summary>
+        /// 缂╂斁鑷抽�夋嫨鐨勬瀯浠�
+        /// </summary>
+        public async Task ZoomToSelectedComponents()
+        {
+            if (!_isViewInitialized)
+            {
+                return;
+            }
+            await this.webViewControl1.EvaluateScriptAsync("zoomToSelectedComponents()");
+        }
+
+        /// <summary>
+        /// 缂╂斁骞堕�夋嫨鏋勪欢
+        /// </summary>
+        public async Task ZoomAndSelectComponents(List<string> ids)
+        {
+            if (!_isViewInitialized)
+            {
+                return;
+            }
+            await this.webViewControl1.EvaluateScriptAsync("zoomAndSelectComponents", ids);
+        }
+
         #endregion
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs
index 59f7fbf..ea83489 100644
--- a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs
@@ -1,4 +1,8 @@
-锘縩amespace Yw.WinFrmUI
+锘縰sing DevExpress.Xpo.Helpers;
+using DevExpress.XtraDiagram.Base;
+using Yw.WinFrmUI.Bimface;
+
+namespace Yw.WinFrmUI
 {
     /// <summary>
     /// 
@@ -89,5 +93,29 @@
 
         #endregion
 
+        #region 缂╂斁
+
+        /// <summary>
+        /// 缂╂斁鍒板寘鍥寸洅
+        /// </summary>
+        Task ZoomToBoundingBox(BoundingBox boundingbox);
+
+        /// <summary>
+        /// 缂╂斁鍒板崟涓瀯浠�
+        /// </summary>
+        Task ZoomToComponent(string id);
+
+        /// <summary>
+        /// 缂╂斁鍒伴�変腑鏋勪欢
+        /// </summary>
+        Task ZoomToSelectedComponents();
+
+        /// <summary>
+        /// 缂╂斁骞堕�変腑澶氫釜鏋勪欢
+        /// </summary>
+        Task ZoomAndSelectComponents(List<string> ids);
+
+        #endregion
+
     }
 }

--
Gitblit v1.9.3