From 34d47fbe6f79897f79b381eb1f1b4cae89b6fe05 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期一, 14 十月 2024 00:07:42 +0800 Subject: [PATCH] 优化bimface 鼠标左键点击,尝试解决不能选中的问题,不一定解决,待测试 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs | 320 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 220 insertions(+), 100 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs index 5f28e74..7e28757 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs @@ -1,6 +1,4 @@ -锘縰sing DevExpress.Office.Utils; -using DevExpress.Xpo.Helpers; -using Yw.WinFrmUI.Bimface; +锘縰sing Yw.WinFrmUI.Bimface; namespace HStation.WinFrmUI { @@ -9,31 +7,130 @@ public XhsProjectSimulationBimfaceCtrl() { InitializeComponent(); - this.bimfaceInterop3dContainer1.LoadCompletedEvent += BimfaceInterop3dContainer1_LoadCompletedEvent; - this.bimfaceInterop3dContainer1.LoadViewCompletedEvent += BimfaceInterop3dContainer1_LoadViewCompletedEvent; - this.bimfaceInterop3dContainer1.ClickInEvent += BimfaceInterop3dContainer1_ClickInEvent; - this.bimfaceInterop3dContainer1.ClickOutEvent += BimfaceInterop3dContainer1_ClickOutEvent; } /// <summary> - /// 姘村姏鐐瑰嚮浜嬩欢 + /// 姘村姏鐐瑰嚮浜嬩欢锛堝寘鍚乏閿拰鍙抽敭锛� /// </summary> public event Action<Yw.Model.HydroParterInfo> HydroClickEvent; + /// <summary> + /// 姘村姏鐐瑰嚮浜嬩欢锛堜粎宸﹂敭锛� + /// </summary> + public event Action<Yw.Model.HydroParterInfo> HydroMouseLeftClickEvent; /// <summary> /// 鍔犺浇瀹屾垚浜嬩欢 /// </summary> public event Action LoadCompletedEvent; - + //椤圭洰 private HStation.Vmo.XhsProjectVmo _project = null; + //椤圭洰绔� private HStation.Vmo.XhsProjectSiteVmo _projectSite = null; + //鑾峰彇姘村姏淇℃伅鏂规硶 private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null; + //鑾峰彇Bimface 浜や簰瀹瑰櫒 + private BimfaceInterop3dContainer GetBimfaceInteropContainer() + { + if (_bimfaceInteropContainer == null) + { + _bimfaceInteropContainer = new BimfaceInterop3dContainer(); + _bimfaceInteropContainer.Dock = DockStyle.Fill; + _bimfaceInteropContainer.LoadCompletedEvent += async () => + { + if (_projectSite == null) + { + return; + } + + var relation = await BLLFactory<Yw.BLL.BimfaceFileRelation>.Instance + .GetDefaultByObjectTypeAndObjectIDOfPurpose + (HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); + if (relation == null) + { + return; + } + + var bimfaceFile = await BLLFactory<Yw.BLL.BimfaceFile>.Instance.GetByID(relation.BimfaceFileID); + if (bimfaceFile == null) + { + return; + } + + var viewToken = await BimfaceHelper.GetViewToken(bimfaceFile.BimfaceId); + if (string.IsNullOrEmpty(viewToken)) + { + return; + } + await _bimfaceInteropContainer.LoadView(viewToken); + }; + _bimfaceInteropContainer.LoadFailedEvent += () => + { + TipFormHelper.ShowError("涓夌淮妯″瀷瀹瑰櫒鍔犺浇澶辫触"); + }; + _bimfaceInteropContainer.LoadViewCompletedEvent += () => + { + this.LoadCompletedEvent?.Invoke(); + }; + _bimfaceInteropContainer.LoadViewFailedEvent += (obj) => + { + TipFormHelper.ShowError($"涓夌淮妯″瀷鍔犺浇澶辫触"); + }; + _bimfaceInteropContainer.ClickInEvent += (obj) => + { + if (obj == null) + { + return; + } + if (this.HydroClickEvent != null) + { + var hydroInfo = _hydroInfoFunc?.Invoke(); + if (hydroInfo == null) + { + return; + } + var allParterList = hydroInfo.GetAllParters(); + var parter = allParterList?.Find(x => x.Code == obj.ObjectId); + this.HydroClickEvent.Invoke(parter); + } + }; + _bimfaceInteropContainer.ClickOutEvent += (obj) => + { + this.HydroClickEvent?.Invoke(null); + }; + _bimfaceInteropContainer.MouseLeftClickInEvent += (obj) => + { + if (obj == null) + { + return; + } + if (this.HydroMouseLeftClickEvent != null) + { + var hydroInfo = _hydroInfoFunc?.Invoke(); + if (hydroInfo == null) + { + return; + } + var allParterList = hydroInfo.GetAllParters(); + var parter = allParterList?.Find(x => x.Code == obj.ObjectId); + this.HydroMouseLeftClickEvent.Invoke(parter); + } + }; + _bimfaceInteropContainer.MouseLeftClickOutEvent += (obj) => + { + this.HydroMouseLeftClickEvent?.Invoke(null); + }; + } + return _bimfaceInteropContainer; + } + //bimface 浜や簰瀹瑰櫒 + private BimfaceInterop3dContainer _bimfaceInteropContainer = null; /// <summary> - /// 缁戝畾鏁版嵁 + /// 鍒濆鍖栨暟鎹� + /// 浠呮敮鎸佽皟鐢ㄤ竴娆� /// </summary> - public async Task SetBindingData + public async Task InitialData ( HStation.Vmo.XhsProjectVmo project, HStation.Vmo.XhsProjectSiteVmo projectSite, @@ -51,69 +148,10 @@ { _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID); } - await this.bimfaceInterop3dContainer1.InitialContainer(); - } - - //椤甸潰鍔犺浇瀹屾垚鍚庤Е鍙� - private async void BimfaceInterop3dContainer1_LoadCompletedEvent() - { - if (_projectSite == null) - { - return; - } - - var relation = await BLLFactory<Yw.BLL.BimfaceFileRelation>.Instance - .GetDefaultByObjectTypeAndObjectIDOfPurpose - (HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); - if (relation == null) - { - return; - } - - var bimfaceFile = await BLLFactory<Yw.BLL.BimfaceFile>.Instance.GetByID(relation.BimfaceFileID); - if (bimfaceFile == null) - { - return; - } - - var viewToken = await BimfaceHelper.GetViewToken(bimfaceFile.BimfaceId); - if (string.IsNullOrEmpty(viewToken)) - { - return; - } - await this.bimfaceInterop3dContainer1.LoadView(viewToken); - } - - //椤甸潰瑙嗗浘鍔犺浇瀹屾垚鍚庤Е鍙� - private void BimfaceInterop3dContainer1_LoadViewCompletedEvent() - { - this.LoadCompletedEvent?.Invoke(); - } - - //鍐呴儴鐐瑰嚮 - private void BimfaceInterop3dContainer1_ClickInEvent(Yw.WinFrmUI.Bimface.ClickIn3dInfo obj) - { - if (obj == null) - { - return; - } - if (HydroClickEvent != null) - { - var hydroInfo = _hydroInfoFunc?.Invoke(); - if (hydroInfo == null) - { - return; - } - var allParterList = hydroInfo.GetAllParters(); - var parter = allParterList?.Find(x => x.Code == obj.ObjectId); - this.HydroClickEvent.Invoke(parter); - } - } - - //澶栭儴鐐瑰嚮 - private void BimfaceInterop3dContainer1_ClickOutEvent(ClickOut3dInfo obj) - { - this.HydroClickEvent?.Invoke(null); + var bimfaceInteropContainer = GetBimfaceInteropContainer(); + this.Controls.Clear(); + this.Controls.Add(bimfaceInteropContainer); + await bimfaceInteropContainer.InitialContainer(); } @@ -126,7 +164,11 @@ /// <returns></returns> public async Task ShowComponents(List<string> elementIds) { - await this.bimfaceInterop3dContainer1.ShowComponents(elementIds); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.ShowComponents(elementIds); } /// <summary> @@ -136,7 +178,11 @@ /// <returns></returns> public async Task HideComponents(List<string> elementIds) { - await this.bimfaceInterop3dContainer1.HideComponents(elementIds); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.HideComponents(elementIds); } /// <summary> @@ -145,7 +191,11 @@ /// <returns></returns> public async Task ShowAllComponents() { - await this.bimfaceInterop3dContainer1.ShowAllComponents(); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.ShowAllComponents(); } #endregion @@ -159,7 +209,11 @@ /// <returns></returns> public async Task TranslucentComponents(List<string> elementIds) { - await this.bimfaceInterop3dContainer1.TranslucentComponents(elementIds); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.TranslucentComponents(elementIds); } /// <summary> @@ -169,7 +223,11 @@ /// <returns></returns> public async Task OpaqueComponents(List<string> elementIds) { - await this.bimfaceInterop3dContainer1.OpaqueComponents(elementIds); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.OpaqueComponents(elementIds); } #endregion @@ -182,7 +240,11 @@ /// <returns></returns> public async Task SetSelectedComponents(List<string> elements) { - await this.bimfaceInterop3dContainer1.SetSelectedComponents(elements); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.SetSelectedComponents(elements); } /// <summary> @@ -192,7 +254,11 @@ /// <returns></returns> public async Task AddSelectedComponents(List<string> elements) { - await this.bimfaceInterop3dContainer1.AddSelectedComponents(elements); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.AddSelectedComponents(elements); } /// <summary> @@ -202,7 +268,11 @@ /// <returns></returns> public async Task RemoveSelectedComponents(List<string> elements) { - await this.bimfaceInterop3dContainer1.RemoveSelectedComponents(elements); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.RemoveSelectedComponents(elements); } /// <summary> @@ -212,7 +282,11 @@ /// <returns></returns> public async Task ClearSelectedComponents() { - await this.bimfaceInterop3dContainer1.ClearSelectedComponents(); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.ClearSelectedComponents(); } #endregion @@ -224,7 +298,11 @@ /// </summary> public async Task ZoomToComponent(string elementId) { - await this.bimfaceInterop3dContainer1.ZoomToComponent(elementId); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.ZoomToComponent(elementId); } /// <summary> @@ -232,7 +310,11 @@ /// </summary> public async Task ZoomToSelectedComponents() { - await this.bimfaceInterop3dContainer1.ZoomToSelectedComponents(); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.ZoomToSelectedComponents(); } /// <summary> @@ -240,7 +322,11 @@ /// </summary> public async Task ZoomAndSelectComponents(List<string> elementIds) { - await this.bimfaceInterop3dContainer1.ZoomAndSelectComponents(elementIds); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.ZoomAndSelectComponents(elementIds); } #endregion @@ -252,7 +338,11 @@ /// </summary> public async Task SetBlinkComponents(List<string> elementIds, string color, double transparency) { - await this.bimfaceInterop3dContainer1.SetBlinkComponents(elementIds, color, transparency); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.SetBlinkComponents(elementIds, color, transparency); } /// <summary> @@ -260,7 +350,11 @@ /// </summary> public async Task SetBlinkComponents() { - await this.bimfaceInterop3dContainer1.ClearBlinkComponents(); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.ClearBlinkComponents(); } #endregion @@ -272,7 +366,11 @@ /// </summary> public async Task OverrideComponentsColor(List<string> elementIds, string color, double transparency) { - await this.bimfaceInterop3dContainer1.OverrideComponentsColor(elementIds, color, transparency); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.OverrideComponentsColor(elementIds, color, transparency); } /// <summary> @@ -280,7 +378,11 @@ /// </summary> public async Task SetBlinkComponents(List<string> elementIds) { - await this.bimfaceInterop3dContainer1.RestoreComponentsColor(elementIds); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.RestoreComponentsColor(elementIds); } #endregion @@ -292,7 +394,11 @@ /// </summary> public async Task SetCustomLabels(List<CustomLabel> obj) { - await this.bimfaceInterop3dContainer1.SetCustomLabels(obj); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.SetCustomLabels(obj); } /// <summary> @@ -300,9 +406,12 @@ /// </summary> public async Task ClearCustomLabels() { - await this.bimfaceInterop3dContainer1.ClearCustomLabels(); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.ClearCustomLabels(); } - #endregion @@ -321,14 +430,18 @@ { if (_linkComponentIds != null && _linkComponentIds.Count > 0) { - await this.bimfaceInterop3dContainer1.RestoreComponentsColor(_linkComponentIds); + await _bimfaceInteropContainer.RestoreComponentsColor(_linkComponentIds); } _linkComponentIds = elementIds; if (elementIds == null || elementIds.Count < 1) { return; } - await this.bimfaceInterop3dContainer1.OverrideComponentsColor(elementIds, _linkComponentColor, _linkComponentTransparency); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.OverrideComponentsColor(elementIds, _linkComponentColor, _linkComponentTransparency); } #endregion @@ -346,14 +459,18 @@ { if (_openComponentIds != null && _openComponentIds.Count > 0) { - await this.bimfaceInterop3dContainer1.RestoreComponentsColor(_openComponentIds); + await _bimfaceInteropContainer.RestoreComponentsColor(_openComponentIds); } _openComponentIds = elementIds; if (elementIds == null || elementIds.Count < 1) { return; } - await this.bimfaceInterop3dContainer1.OverrideComponentsColor(elementIds, _openComponentColor, _openComponentTransparency); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.OverrideComponentsColor(elementIds, _openComponentColor, _openComponentTransparency); } #endregion @@ -376,7 +493,7 @@ } if (!calcuResult.Succeed) { - await this.bimfaceInterop3dContainer1.ClearCustomLabels(); + await _bimfaceInteropContainer.ClearCustomLabels(); return; } var obj = new List<CustomLabel>(); @@ -421,8 +538,11 @@ obj.Add(emitterCustomLabel); } }); - - await this.bimfaceInterop3dContainer1.SetCustomLabels(obj); + if (_bimfaceInteropContainer == null) + { + return; + } + await _bimfaceInteropContainer.SetCustomLabels(obj); } #endregion -- Gitblit v1.9.3