优化bimface 鼠标左键点击,尝试解决不能选中的问题,不一定解决,待测试
已修改8个文件
已添加1个文件
605 ■■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.Designer.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs 268 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Bimface.Core/00-core/MouseClick.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dCallBackObj.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs 167 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dEvents.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.Designer.cs
@@ -28,30 +28,17 @@
        /// </summary>
        private void InitializeComponent()
        {
            bimfaceInterop3dContainer1 = new BimfaceInterop3dContainer();
            SuspendLayout();
            // 
            // bimfaceInterop3dContainer1
            //
            bimfaceInterop3dContainer1.Dock = DockStyle.Fill;
            bimfaceInterop3dContainer1.Location = new Point(0, 0);
            bimfaceInterop3dContainer1.Margin = new Padding(4, 3, 4, 3);
            bimfaceInterop3dContainer1.Name = "bimfaceInterop3dContainer1";
            bimfaceInterop3dContainer1.Size = new Size(971, 610);
            bimfaceInterop3dContainer1.TabIndex = 0;
            //
            // XhsProjectAssetsBimfaceCtrl
            // XhsProjectSimulationBimfaceCtrl
            // 
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(bimfaceInterop3dContainer1);
            Name = "XhsProjectAssetsBimfaceCtrl";
            Size = new Size(971, 610);
            Name = "XhsProjectSimulationBimfaceCtrl";
            Size = new Size(230, 126);
            ResumeLayout(false);
        }
        #endregion
        private BimfaceInterop3dContainer bimfaceInterop3dContainer1;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
@@ -1,6 +1,4 @@
using DevExpress.Office.Utils;
using DevExpress.Xpo.Helpers;
using Yw.WinFrmUI.Bimface;
using Yw.WinFrmUI.Bimface;
namespace HStation.WinFrmUI
{
@@ -9,53 +7,36 @@
        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;
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public async Task SetBindingData
            (
                HStation.Vmo.XhsProjectVmo project,
                HStation.Vmo.XhsProjectSiteVmo projectSite,
                Func<Yw.Model.HydroModelInfo> hydroInfoFunc
            )
        //获取Bimface äº¤äº’容器
        private BimfaceInterop3dContainer GetBimfaceInteropContainer()
        {
            if (project == null)
            if (_bimfaceInteropContainer == null)
            {
                return;
            }
            _project = project;
            _projectSite = projectSite;
            _hydroInfoFunc = hydroInfoFunc;
            if (_projectSite == null)
            {
                _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID);
            }
            await this.bimfaceInterop3dContainer1.InitialContainer();
        }
        //页面加载完成后触发
        private async void BimfaceInterop3dContainer1_LoadCompletedEvent()
                _bimfaceInteropContainer = new BimfaceInterop3dContainer();
                _bimfaceInteropContainer.Dock = DockStyle.Fill;
                _bimfaceInteropContainer.LoadCompletedEvent += async () =>
        {
            if (_projectSite == null)
            {
@@ -81,23 +62,27 @@
            {
                return;
            }
            await this.bimfaceInterop3dContainer1.LoadView(viewToken);
        }
        //页面视图加载完成后触发
        private void BimfaceInterop3dContainer1_LoadViewCompletedEvent()
                    await _bimfaceInteropContainer.LoadView(viewToken);
                };
                _bimfaceInteropContainer.LoadFailedEvent += () =>
                {
                    TipFormHelper.ShowError("三维模型容器加载失败");
                };
                _bimfaceInteropContainer.LoadViewCompletedEvent += () =>
        {
            this.LoadCompletedEvent?.Invoke();
        }
        //内部点击
        private void BimfaceInterop3dContainer1_ClickInEvent(Yw.WinFrmUI.Bimface.ClickIn3dInfo obj)
                };
                _bimfaceInteropContainer.LoadViewFailedEvent += (obj) =>
                {
                    TipFormHelper.ShowError($"三维模型加载失败");
                };
                _bimfaceInteropContainer.ClickInEvent += (obj) =>
        {
            if (obj == null)
            {
                return;
            }
            if (HydroClickEvent != null)
                    if (this.HydroClickEvent != null)
            {
                var hydroInfo = _hydroInfoFunc?.Invoke();
                if (hydroInfo == null)
@@ -108,12 +93,65 @@
                var parter = allParterList?.Find(x => x.Code == obj.ObjectId);
                this.HydroClickEvent.Invoke(parter);
            }
        }
        //外部点击
        private void BimfaceInterop3dContainer1_ClickOutEvent(ClickOut3dInfo obj)
                };
                _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 InitialData
            (
                HStation.Vmo.XhsProjectVmo project,
                HStation.Vmo.XhsProjectSiteVmo projectSite,
                Func<Yw.Model.HydroModelInfo> hydroInfoFunc
            )
        {
            if (project == null)
            {
                return;
            }
            _project = project;
            _projectSite = projectSite;
            _hydroInfoFunc = hydroInfoFunc;
            if (_projectSite == null)
            {
                _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID);
            }
            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
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs
@@ -60,8 +60,7 @@
            ribbonPageGroup3 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            ribbonPageGroup4 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            tabPane1 = new DevExpress.XtraBars.Navigation.TabPane();
            pageBimface = new DevExpress.XtraBars.Navigation.TabNavigationPage();
            xhsProjectSimulationBimfaceCtrl1 = new XhsProjectSimulationBimfaceCtrl();
            tabPageBimface = new DevExpress.XtraBars.Navigation.TabNavigationPage();
            pageQ3d = new DevExpress.XtraBars.Navigation.TabNavigationPage();
            xhsProjectSimulationQ3dCtrl1 = new XhsProjectSimulationQ3dCtrl();
            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
@@ -75,7 +74,6 @@
            ((ISupportInitialize)ribbonControl1).BeginInit();
            ((ISupportInitialize)tabPane1).BeginInit();
            tabPane1.SuspendLayout();
            pageBimface.SuspendLayout();
            pageQ3d.SuspendLayout();
            ((ISupportInitialize)dockManager1).BeginInit();
            docPnlProperty.SuspendLayout();
@@ -297,34 +295,23 @@
            // 
            // tabPane1
            // 
            tabPane1.Controls.Add(pageBimface);
            tabPane1.Controls.Add(tabPageBimface);
            tabPane1.Controls.Add(pageQ3d);
            tabPane1.Dock = DockStyle.Fill;
            tabPane1.Location = new Point(0, 128);
            tabPane1.Name = "tabPane1";
            tabPane1.Pages.AddRange(new DevExpress.XtraBars.Navigation.NavigationPageBase[] { pageBimface, pageQ3d });
            tabPane1.Pages.AddRange(new DevExpress.XtraBars.Navigation.NavigationPageBase[] { tabPageBimface, pageQ3d });
            tabPane1.RegularSize = new Size(692, 340);
            tabPane1.SelectedPage = pageBimface;
            tabPane1.SelectedPage = tabPageBimface;
            tabPane1.Size = new Size(692, 340);
            tabPane1.TabIndex = 1;
            tabPane1.Text = "tabPane1";
            // 
            // pageBimface
            // tabPageBimface
            // 
            pageBimface.Caption = "三维模型";
            pageBimface.Controls.Add(xhsProjectSimulationBimfaceCtrl1);
            pageBimface.Name = "pageBimface";
            pageBimface.Size = new Size(692, 307);
            //
            // xhsProjectSimulationBimfaceCtrl1
            //
            xhsProjectSimulationBimfaceCtrl1.Dock = DockStyle.Fill;
            xhsProjectSimulationBimfaceCtrl1.Location = new Point(0, 0);
            xhsProjectSimulationBimfaceCtrl1.Name = "xhsProjectSimulationBimfaceCtrl1";
            xhsProjectSimulationBimfaceCtrl1.Size = new Size(692, 307);
            xhsProjectSimulationBimfaceCtrl1.TabIndex = 0;
            xhsProjectSimulationBimfaceCtrl1.HydroClickEvent += xhsProjectSimulationBimfaceCtrl1_HydroClickEvent;
            xhsProjectSimulationBimfaceCtrl1.LoadCompletedEvent += xhsProjectSimulationBimfaceCtrl1_LoadCompletedEvent;
            tabPageBimface.Caption = "三维模型";
            tabPageBimface.Name = "tabPageBimface";
            tabPageBimface.Size = new Size(692, 307);
            // 
            // pageQ3d
            // 
@@ -430,7 +417,6 @@
            ((ISupportInitialize)ribbonControl1).EndInit();
            ((ISupportInitialize)tabPane1).EndInit();
            tabPane1.ResumeLayout(false);
            pageBimface.ResumeLayout(false);
            pageQ3d.ResumeLayout(false);
            ((ISupportInitialize)dockManager1).EndInit();
            docPnlProperty.ResumeLayout(false);
@@ -458,12 +444,11 @@
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup3;
        private DevExpress.XtraBars.BarButtonItem barBtnMatchingList;
        private DevExpress.XtraBars.Navigation.TabPane tabPane1;
        private DevExpress.XtraBars.Navigation.TabNavigationPage pageBimface;
        private DevExpress.XtraBars.Navigation.TabNavigationPage tabPageBimface;
        private DevExpress.XtraBars.Navigation.TabNavigationPage pageQ3d;
        private DevExpress.XtraBars.Docking.DockManager dockManager1;
        private DevExpress.XtraBars.Docking.DockPanel docPnlProperty;
        private DevExpress.XtraBars.Docking.ControlContainer dockPanel1_Container;
        private XhsProjectSimulationBimfaceCtrl xhsProjectSimulationBimfaceCtrl1;
        private XhsProjectSimulationQ3dCtrl xhsProjectSimulationQ3dCtrl1;
        private XhsProjectSimulationPropertyCtrl xhsProjectSimulationPropertyCtrl1;
        private DevExpress.Utils.SvgImageCollection svgImg32;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -62,16 +62,25 @@
                return;
            }
            this.PageTitle.Caption = $"{_project.Name}\r\n水力模拟";
            await this.xhsProjectSimulationBimfaceCtrl1.SetBindingData(_project, _projectSite, () => _hydroInfo);
            var bimfaceCtrl = GetBimfaceCtrl();
            this.tabPageBimface.Controls.Clear();
            this.tabPageBimface.Controls.Add(bimfaceCtrl);
            await bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo);
            this.xhsProjectSimulationQ3dCtrl1.SetBindingData(_hydroInfo);
            this.xhsProjectSimulationPropertyCtrl1.InitialData(() => _hydroInfo);
        }
        #region Bimface
        //bimface åŠ è½½å®Œæˆäº‹ä»¶
        private async void xhsProjectSimulationBimfaceCtrl1_LoadCompletedEvent()
        //获取 bimface æŽ§ä»¶
        private XhsProjectSimulationBimfaceCtrl GetBimfaceCtrl()
        {
            if (_bimfaceCtrl == null)
            {
                _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
                _bimfaceCtrl.Dock = DockStyle.Fill;
                _bimfaceCtrl.LoadCompletedEvent += async () =>
                {//view加载完成事件
            if (_hydroInfo == null)
            {
                return;
@@ -81,12 +90,10 @@
            pumps?.ForEach(x => elementIds.Add(x.Code));
            var valves = _hydroInfo.Valves?.Where(x => x.LinkStatus == Yw.Hydro.ValveStatus.Open).ToList();
            valves?.ForEach(x => elementIds.Add(x.Code));
            await this.xhsProjectSimulationBimfaceCtrl1.SetOpenComponentsColor(elementIds);
        }
        //bimface æ°´åŠ›ç‚¹å‡»äº‹ä»¶
        private void xhsProjectSimulationBimfaceCtrl1_HydroClickEvent(Yw.Model.HydroParterInfo obj)
        {
                    await _bimfaceCtrl?.SetOpenComponentsColor(elementIds);
                };
                _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) =>
                {//鼠标左键点击事件
            if (_hydroInfo == null)
            {
                return;
@@ -94,7 +101,14 @@
            _parter = obj;
            ShowProperty();
            SetBimfaceLinkColor();
                };
        }
            return _bimfaceCtrl;
        }
        //bimface控件
        private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null;
        //设置Bimface连接颜色
        private async void SetBimfaceLinkColor()
@@ -144,7 +158,7 @@
                    }
                }
            }
            await this.xhsProjectSimulationBimfaceCtrl1.SetLinkComponentsColor(elementIds);
            await _bimfaceCtrl?.SetLinkComponentsColor(elementIds);
        }
        #endregion
@@ -193,7 +207,7 @@
                    {
                        elementIds.Add(_parter.Code);
                    }
                    await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds);
                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                    ShowProperty();
                    SetBimfaceLinkColor();
                };
@@ -253,14 +267,14 @@
                    var allParterList = _hydroInfo.GetAllParters();
                    _parter = allParterList?.Find(x => x.Code == parter.Code);
                    var elementIds = new List<string>() { parter.Code };
                    await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds);
                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                    ShowProperty();
                    SetBimfaceLinkColor();
                };
                _unMatchingListCtrl.ViewModelEvent += async (parters) =>//查看模型
                {
                    var codes = parters?.Select(x => x.Code).Distinct().ToList();
                    await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(codes);
                    await _bimfaceCtrl?.ZoomAndSelectComponents(codes);
                    _parter = null;
                    ShowProperty();
                };
@@ -308,11 +322,11 @@
            if (_fastShowHideCodeList == null)
            {
                _fastShowHideCodeList = _hydroInfo.Decorators.Select(x => x.Code).ToList();
                await this.xhsProjectSimulationBimfaceCtrl1.HideComponents(_fastShowHideCodeList);
                await _bimfaceCtrl?.HideComponents(_fastShowHideCodeList);
            }
            else
            {
                await this.xhsProjectSimulationBimfaceCtrl1.ShowComponents(_fastShowHideCodeList);
                await _bimfaceCtrl?.ShowComponents(_fastShowHideCodeList);
                _fastShowHideCodeList = null;
            }
        }
@@ -348,7 +362,7 @@
                            elementIds.Add(_parter.Code);
                        }
                    }
                    await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds);
                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                    ShowProperty();
                    SetBimfaceLinkColor();
                };
@@ -415,7 +429,7 @@
                    }
                    var allParterList = _hydroInfo.GetAllParters();
                    _parter = allParterList?.Find(x => x.Code == parter.Code);
                    await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(new List<string>() { _parter.Code });
                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _parter.Code });
                    ShowProperty();
                    SetBimfaceLinkColor();
                };
@@ -637,7 +651,7 @@
                            this.controlContainerBottom.Controls.Add(parterListCtrl);
                            this.docPnlBottom.Text = "计算结果";
                            ShowProperty();
                            await this.xhsProjectSimulationBimfaceCtrl1.ShowCalcuCustomLabels(_calcuResult);
                            await _bimfaceCtrl?.ShowCalcuCustomLabels(_calcuResult);
                            TipFormHelper.ShowSucceed("计算成功!");
                        }
                        else
@@ -704,7 +718,7 @@
                    {
                        _parter = null;
                    }
                    await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds);
                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                    ShowProperty();
                    SetBimfaceLinkColor();
                };
WinFrmUI/Yw.WinFrmUI.Bimface.Core/00-core/MouseClick.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
namespace Yw.WinFrmUI.Bimface
{
    /// <summary>
    /// é¼ æ ‡ç‚¹å‡»
    /// </summary>
    public class MouseClick
    {
        /// <summary>
        /// é¼ æ ‡å·¦é”®ç‚¹å‡»
        /// </summary>
        public const string Click = "Click";
        /// <summary>
        /// é¼ æ ‡å³é”®ç‚¹å‡»
        /// </summary>
        public const string RightClick = "RightClick";
    }
}
WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dCallBackObj.cs
@@ -11,9 +11,19 @@
        public event Action<ClickIn3dInfo> ClickInEvent;
        /// <summary>
        /// é¼ æ ‡å·¦é”®ç‚¹å‡»æž„件事件
        /// </summary>
        public event Action<ClickIn3dInfo> MouseLeftClickInEvent;
        /// <summary>
        /// ç‚¹å‡»å¤–部事件
        /// </summary>
        public event Action<ClickOut3dInfo> ClickOutEvent;
        /// <summary>
        /// é¼ æ ‡å·¦é”®ç‚¹å‡»å¤–部事件
        /// </summary>
        public event Action<ClickOut3dInfo> MouseLeftClickOutEvent;
        /// <summary>
        /// ç‚¹å‡»æž„ä»¶
@@ -22,6 +32,13 @@
        {
            var json = JsonHelper.Json2Object<ClickIn3dInfo>(info);
            this.ClickInEvent?.Invoke(json);
            if (json != null)
            {
                if (json.EventType == MouseClick.Click)
                {
                    this.MouseLeftClickInEvent?.Invoke(json);
                }
            }
        }
        /// <summary>
@@ -31,6 +48,13 @@
        {
            var json = JsonHelper.Json2Object<ClickOut3dInfo>(info);
            this.ClickOutEvent?.Invoke(json);
            if (json != null)
            {
                if (json.EventType == MouseClick.Click)
                {
                    this.MouseLeftClickOutEvent?.Invoke(json);
                }
            }
        }
    }
WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs
@@ -1,8 +1,4 @@
using DevExpress.Xpo.DB.Helpers;
using DevExpress.XtraDiagram.Base;
using NetTaste;
namespace Yw.WinFrmUI
namespace Yw.WinFrmUI
{
    public partial class BimfaceInterop3dContainer : UserControl, IBimfaceInterop3dContainer
    {
@@ -11,29 +7,43 @@
            InitializeComponent();
        }
        public event Action LoadCompletedEvent;
        public event Action LoadFailedEvent;
        public event Action<HandingError> HandingErrorEvent;
        public event Action LoadViewCompletedEvent;
        public event Action<string> LoadViewFailedEvent;
        public event Action<ClickIn3dInfo> ClickInEvent;
        public event Action<ClickOut3dInfo> ClickOutEvent;
        /// <summary>
        /// äº¤äº’对象
        /// Html加载完成事件
        /// </summary>
        public BimfaceInterop3dCallBackObj CallBackObj
        {
            get
            {
                if (_callBackObj == null)
                {
                    _callBackObj = new BimfaceInterop3dCallBackObj();
                }
                return _callBackObj;
            }
        }
        private BimfaceInterop3dCallBackObj _callBackObj;
        public event Action LoadCompletedEvent;
        /// <summary>
        /// Html加载失败事件
        /// </summary>
        public event Action LoadFailedEvent;
        /// <summary>
        /// å¤„理错误事件
        /// </summary>
        public event Action<HandingError> HandingErrorEvent;
        /// <summary>
        /// View加载完成事件
        /// </summary>
        public event Action LoadViewCompletedEvent;
        /// <summary>
        /// View加载失败事件
        /// </summary>
        public event Action<string> LoadViewFailedEvent;
        /// <summary>
        /// ç‚¹å‡»æž„件事件
        /// </summary>
        public event Action<ClickIn3dInfo> ClickInEvent;
        /// <summary>
        /// é¼ æ ‡å·¦é”®ç‚¹å‡»æž„件事件
        /// </summary>
        public event Action<ClickIn3dInfo> MouseLeftClickInEvent;
        /// <summary>
        /// ç‚¹å‡»å¤–部事件
        /// </summary>
        public event Action<ClickOut3dInfo> ClickOutEvent;
        /// <summary>
        /// é¼ æ ‡å·¦é”®ç‚¹å‡»å¤–部事件
        /// </summary>
        public event Action<ClickOut3dInfo> MouseLeftClickOutEvent;
        /// <summary>
        /// æ˜¯å¦åˆå§‹åŒ–
@@ -59,67 +69,63 @@
        }
        private bool _isViewInitialized;
        //获取交互对象
        private BimfaceInterop3dCallBackObj GetCallBackObj()
        {
            if (_callBackObj == null)
            {
                _callBackObj = new BimfaceInterop3dCallBackObj();
                _callBackObj.LoadCompletedEvent += () =>
                    {
                        _isInitialized = true;
                        this.LoadCompletedEvent?.Invoke();
                    };
                _callBackObj.LoadFailedEvent += () =>
                    {
                        this.LoadFailedEvent?.Invoke();
                    };
                _callBackObj.HandingErrorEvent += (obj) =>
                    {
                        this.HandingErrorEvent?.Invoke(obj);
                    };
                _callBackObj.LoadViewCompletedEvent += () =>
                    {
                        _isViewInitialized = true;
                        this.LoadViewCompletedEvent?.Invoke();
                    };
                _callBackObj.LoadViewFailedEvent += (obj) =>
                    {
                        this.LoadViewFailedEvent?.Invoke(obj);
                    };
                _callBackObj.ClickInEvent += (obj) =>
                    {
                        this.ClickInEvent?.Invoke(obj);
                    };
                _callBackObj.MouseLeftClickInEvent += (obj) =>
                    {
                        this.MouseLeftClickInEvent?.Invoke(obj);
                    };
                _callBackObj.ClickOutEvent += (obj) =>
                    {
                        this.ClickOutEvent?.Invoke(obj);
                    };
                _callBackObj.MouseLeftClickOutEvent += (obj) =>
                    {
                        this.MouseLeftClickOutEvent?.Invoke(obj);
                    };
            }
            return _callBackObj;
        }
        private BimfaceInterop3dCallBackObj _callBackObj;
        /// <summary>
        /// åˆå§‹è¯å®¹å™¨
        /// </summary>
        public async Task InitialContainer()
        {
            var callBackObj = this.CallBackObj;
            callBackObj.LoadCompletedEvent += CallBackObj_LoadCompletedEvent;
            callBackObj.LoadFailedEvent += CallBackObj_LoadFailedEvent;
            callBackObj.HandingErrorEvent += CallBackObj_HandingErrorEvent;
            callBackObj.LoadViewCompletedEvent += CallBackObj_LoadViewCompletedEvent;
            callBackObj.LoadViewFailedEvent += CallBackObj_LoadViewFailedEvent;
            callBackObj.ClickInEvent += CallBackObj_ClickInEvent;
            callBackObj.ClickOutEvent += CallBackObj_ClickOutEvent;
            var callBackObj = GetCallBackObj();
            await this.webViewControl1.InitialWebBrower(BimfaceUrlHelper.Interop3dUrl, callBackObj, true);
        }
        //加载完成
        private void CallBackObj_LoadCompletedEvent()
        {
            _isInitialized = true;
            this.LoadCompletedEvent?.Invoke();
        }
        //加载失败
        private void CallBackObj_LoadFailedEvent()
        {
            this.LoadFailedEvent?.Invoke();
        }
        //处理错误
        private void CallBackObj_HandingErrorEvent(HandingError obj)
        {
            this.HandingErrorEvent?.Invoke(obj);
        }
        //加载视图完成
        private void CallBackObj_LoadViewCompletedEvent()
        {
            _isViewInitialized = true;
            this.LoadViewCompletedEvent?.Invoke();
        }
        //加载视图失败
        private void CallBackObj_LoadViewFailedEvent(string obj)
        {
            this.LoadViewFailedEvent?.Invoke(obj);
        }
        //点击构件
        private void CallBackObj_ClickInEvent(ClickIn3dInfo obj)
        {
            this.ClickInEvent?.Invoke(obj);
        }
        //点击外部
        private void CallBackObj_ClickOutEvent(ClickOut3dInfo obj)
        {
            this.ClickOutEvent?.Invoke(obj);
        }
        /// <summary>
        /// åŠ è½½è§†å›¾
@@ -132,7 +138,6 @@
            }
            return await this.webViewControl1.EvaluateScriptAsync<bool>("loadView", viewToken);
        }
        #region æž„件显隐
WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs
@@ -1,20 +1,10 @@
using DevExpress.CodeParser;
using DevExpress.Xpo.Helpers;
using DevExpress.XtraDiagram.Base;
using Yw.WinFrmUI.Bimface;
namespace Yw.WinFrmUI
namespace Yw.WinFrmUI
{
    /// <summary>
    /// 
    /// </summary>
    public interface IBimfaceInterop3dContainer : IBimfaceContainer, IBimfaceInterop3dEvents
    {
        /// <summary>
        /// äº¤äº’对象
        /// </summary>
        BimfaceInterop3dCallBackObj CallBackObj { get; }
        #region æž„件的显示与隐藏
WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dEvents.cs
@@ -11,8 +11,20 @@
        event Action<ClickIn3dInfo> ClickInEvent;
        /// <summary>
        /// é¼ æ ‡å·¦é”®ç‚¹å‡»æž„件事件
        /// </summary>
        public event Action<ClickIn3dInfo> MouseLeftClickInEvent;
        /// <summary>
        /// ç‚¹å‡»
        /// </summary>
        event Action<ClickOut3dInfo> ClickOutEvent;
        /// <summary>
        /// é¼ æ ‡å·¦é”®ç‚¹å‡»å¤–部事件
        /// </summary>
        public event Action<ClickOut3dInfo> MouseLeftClickOutEvent;
    }
}