lixiaojun
8 天以前 d6f1a8535c0030e282f823f0e9b3d6e56e32e474
Yw.WinFrmUI.Hydro.L3d2.Core/ViewerL3d2.cs
@@ -1,4 +1,6 @@
using System.Windows.Forms.Integration;
using Yw.Settings;
using Yw.WpfUI.Hydro;
namespace Yw.WinFrmUI.Hydro
{
@@ -9,18 +11,22 @@
            InitializeComponent();
        }
        private Yw.WpfUI.Hydro.ViewerL3d _wpfViewer = null;//wpf控件
        #region 事件集合
        //初始化wpf控件
        private void InitialWpfControl()
        {
            this.Controls.Clear();
            var elementHost = new ElementHost();
            elementHost.Dock = DockStyle.Fill;
            this.Controls.Add(elementHost);
            _wpfViewer = new WpfUI.Hydro.ViewerL3d();
            elementHost.Child = _wpfViewer;
        }
        /// <summary>
        /// 选择改变事件
        /// </summary>
        public event Action<List<Yw.WpfUI.Hydro.VisualL3d>> SelectionChangedEvent;
        #endregion
        #region 私有字段
        private Yw.WpfUI.Hydro.ViewerL3d _wpfViewer = null;//wpf控件
        #endregion
        #region 初始化
        /// <summary>
        /// 初始化
@@ -31,7 +37,563 @@
            _wpfViewer.Initial(nw);
        }
        //初始化wpf控件
        private void InitialWpfControl()
        {
            _wpfViewer = new WpfUI.Hydro.ViewerL3d();
            _wpfViewer.SelectionChangedEvent += OnSelectionChanged;
            var elementHost = new ElementHost();
            elementHost.Dock = DockStyle.Fill;
            elementHost.Child = _wpfViewer;
            this.Controls.Clear();
            this.Controls.Add(elementHost);
        }
        #endregion
        #region 工作面板
        /// <summary>
        /// 显示工作面板
        /// </summary>
        public void ShowWorkPanel()
        {
            _wpfViewer?.ShowWorkPanel();
        }
        /// <summary>
        /// 隐藏工作面板
        /// </summary>
        public void HideWorkPanel()
        {
            _wpfViewer?.HideWorkPanel();
        }
        /// <summary>
        /// 工作面板可见性
        /// </summary>
        public bool WorkPanelVisible
        {
            get
            {
                return _wpfViewer == null ? false : _wpfViewer.WorkPanelVisible;
            }
            set
            {
                if (_wpfViewer != null)
                {
                    _wpfViewer.WorkPanelVisible = value;
                }
            }
        }
        /// <summary>
        /// 设置工作面板
        /// </summary>
        public void SetWorkPanel(WorkPanelL3d workPanel)
        {
            _wpfViewer?.SetWorkPanel(workPanel);
        }
        #endregion
        #region 图片背景
        /// <summary>
        /// 显示图片背景
        /// </summary>
        public void ShowBackground()
        {
            _wpfViewer?.ShowBackground();
        }
        /// <summary>
        /// 隐藏图片背景
        /// </summary>
        public void HideBackground()
        {
            _wpfViewer?.HideBackground();
        }
        /// <summary>
        /// 图片背景可见性
        /// </summary>
        public bool BackgroundVisible
        {
            get
            {
                return _wpfViewer == null ? false : _wpfViewer.BackgroundVisible;
            }
            set
            {
                if (_wpfViewer != null)
                {
                    _wpfViewer.BackgroundVisible = value;
                }
            }
        }
        /// <summary>
        /// 设置图片背景
        /// </summary>
        public void SetBackground(BackgroundL3d bc)
        {
            _wpfViewer?.SetBackground(bc);
        }
        /// <summary>
        /// 设置图片背景
        /// </summary>
        public void SetBackground(string url)
        {
            _wpfViewer?.SetBackground(url);
        }
        #endregion
        #region 相机视角
        /// <summary>
        /// 显示上视图
        /// </summary>
        public void ShowTopView()
        {
            _wpfViewer?.ShowTopView();
        }
        /// <summary>
        /// 显示下视图
        /// </summary>
        public void ShowBottomView()
        {
            _wpfViewer?.ShowBottomView();
        }
        /// <summary>
        /// 显示左视图
        /// </summary>
        public void ShowLeftView()
        {
            _wpfViewer?.ShowLeftView();
        }
        /// <summary>
        /// 显示右视图
        /// </summary>
        public void ShowRightView()
        {
            _wpfViewer?.ShowRightView();
        }
        /// <summary>
        /// 显示前视图
        /// </summary>
        public void ShowFrontView()
        {
            _wpfViewer?.ShowFrontView();
        }
        /// <summary>
        /// 显示后视图
        /// </summary>
        public void ShowBackView()
        {
            _wpfViewer?.ShowBackView();
        }
        /// <summary>
        /// 显示西南视角
        /// 从物体的左前下方观察
        /// </summary>
        public void ShowSouthWestView()
        {
            _wpfViewer?.ShowSouthWestView();
        }
        /// <summary>
        /// 显示东南视角
        /// 从物体的右前下方观察
        /// </summary>
        public void ShowSouthEastView()
        {
            _wpfViewer?.ShowSouthEastView();
        }
        /// <summary>
        /// 显示东北视角
        /// 从物体的右后上方观察
        /// </summary>
        public void ShowNorthEastView()
        {
            _wpfViewer?.ShowNorthEastView();
        }
        /// <summary>
        /// 显示西北视角
        /// 从物体的左后上方观察
        /// </summary>
        public void ShowNorthWestView()
        {
            _wpfViewer?.ShowNorthWestView();
        }
        #endregion
        #region 关联缩放
        /// <summary>
        /// 缩放至可见构件
        /// </summary>
        public void ZoomToVisual(string Id)
        {
            _wpfViewer?.ZoomToVisual(Id);
        }
        /// <summary>
        /// 缩放至可见构件
        /// </summary>
        public void ZoomToVisual(List<string> Ids)
        {
            _wpfViewer?.ZoomToVisual(Ids);
        }
        #endregion
        #region 选择构件
        /// <summary>
        /// 选择构件
        /// </summary>
        public void SelectVisual(string Id)
        {
            _wpfViewer?.SelectVisual(Id);
        }
        /// <summary>
        /// 选择构件
        /// </summary>
        public void SelectVisual(List<string> Ids)
        {
            _wpfViewer?.SelectVisual(Ids);
        }
        //处理选择改变
        protected virtual void OnSelectionChanged(List<VisualL3d> visuals)
        {
            this.SelectionChangedEvent?.Invoke(visuals);
        }
        #endregion
        #region 缩放并选择构件
        /// <summary>
        /// 缩放并选择构件
        /// </summary>
        public void ZoomAndSelectVisual(string Id)
        {
            _wpfViewer?.ZoomAndSelectVisual(Id);
        }
        /// <summary>
        /// 缩放并选择构件
        /// </summary>
        public void ZoomAndSelectVisual(List<string> Ids)
        {
            _wpfViewer?.ZoomAndSelectVisual(Ids);
        }
        #endregion
        #region 颜色覆盖
        /// <summary>
        /// 设置颜色
        /// </summary>
        public void SetColor(string Id, string htmlColor)
        {
            _wpfViewer?.SetColor(Id, htmlColor);
        }
        /// <summary>
        /// 设置颜色
        /// </summary>
        public void SetColor(List<string> Ids, string htmlColor)
        {
            _wpfViewer?.SetColor(Ids, htmlColor);
        }
        /// <summary>
        /// 设置颜色
        /// </summary>
        public void SetColor(List<ColorL3d> list)
        {
            _wpfViewer?.SetColor(list);
        }
        /// <summary>
        /// 清除颜色
        /// </summary>
        public void ClearColor(string Id)
        {
            _wpfViewer?.ClearColor(Id);
        }
        /// <summary>
        /// 清除颜色
        /// </summary>
        public void ClearColor(List<string> Ids)
        {
            _wpfViewer?.ClearColor(Ids);
        }
        /// <summary>
        /// 清除颜色
        /// </summary>
        public void ClearColor()
        {
            _wpfViewer?.ClearColor();
        }
        #endregion
        #region 透明度
        /// <summary>
        /// 设置透明度
        /// </summary>
        public void SetOpacity(string Id, double opacity)
        {
            _wpfViewer?.SetOpacity(Id, opacity);
        }
        /// <summary>
        /// 设置透明度
        /// </summary>
        public void SetOpacity(List<string> Ids, double opacity)
        {
            _wpfViewer?.SetOpacity(Ids, opacity);
        }
        /// <summary>
        /// 设置透明度
        /// </summary>
        public void SetOpacity(List<OpacityL3d> list)
        {
            _wpfViewer?.SetOpacity(list);
        }
        /// <summary>
        /// 清除透明度
        /// </summary>
        public void ClearOpacity(string Id)
        {
            _wpfViewer?.ClearOpacity(Id);
        }
        /// <summary>
        /// 清除透明度
        /// </summary>
        public void ClearOpacity(List<string> Ids)
        {
            _wpfViewer?.ClearOpacity(Ids);
        }
        /// <summary>
        /// 清除透明度
        /// </summary>
        public void ClearOpacity()
        {
            _wpfViewer?.ClearOpacity();
        }
        #endregion
        #region 可见性
        /// <summary>
        /// 设置可见性
        /// </summary>
        public void SetVisible(string Id, bool visible)
        {
            _wpfViewer?.SetVisible(Id, visible);
        }
        /// <summary>
        /// 设置可见性
        /// </summary>
        public void SetVisible(List<string> Ids, bool visible)
        {
            _wpfViewer?.SetVisible(Ids, visible);
        }
        /// <summary>
        /// 设置可见性
        /// </summary>
        public void SetVisible(List<VisibleL3d> list)
        {
            _wpfViewer?.SetVisible(list);
        }
        /// <summary>
        /// 清除可见性
        /// </summary>
        public void ClearVisible(string Id)
        {
            _wpfViewer?.ClearVisible(Id);
        }
        /// <summary>
        /// 清除可见性
        /// </summary>
        public void ClearVisible(List<string> Ids)
        {
            _wpfViewer?.ClearVisible(Ids);
        }
        /// <summary>
        /// 清除可见性
        /// </summary>
        public void ClearVisible()
        {
            _wpfViewer?.ClearVisible();
        }
        #endregion
        #region 公告文本
        /// <summary>
        /// 显示公告文本
        /// </summary>
        public void ShowBillboardText()
        {
            _wpfViewer?.ShowBillboardText();
        }
        /// <summary>
        /// 隐藏公告文本
        /// </summary>
        public void HideBillboardText()
        {
            _wpfViewer?.HideBillboardText();
        }
        /// <summary>
        /// 公告文本可见性
        /// </summary>
        public bool BillboardTextVisible
        {
            get
            {
                return _wpfViewer == null ? false : _wpfViewer.BillboardTextVisible;
            }
            set
            {
                if (_wpfViewer != null)
                {
                    _wpfViewer.BillboardTextVisible = value;
                }
            }
        }
        /// <summary>
        /// 设置公告文本
        /// </summary>
        public void SetBillboardText(TextL3d item)
        {
            _wpfViewer.SetBillboardText(item);
        }
        /// <summary>
        /// 设置公告文本
        /// </summary>
        public void SetBillboardText(List<TextL3d> items)
        {
            _wpfViewer.SetBillboardText(items);
        }
        /// <summary>
        /// 清理公告文本
        /// </summary>
        public void ClearBillboardText()
        {
            _wpfViewer.ClearBillboardText();
        }
        #endregion
        #region 水流方向
        /// <summary>
        /// 显示水流方向
        /// </summary>
        public void ShowFlowDirection()
        {
            _wpfViewer?.ShowFlowDirection();
        }
        /// <summary>
        /// 隐藏水流方向
        /// </summary>
        public void HideFlowDirection()
        {
            _wpfViewer?.HideFlowDirection();
        }
        /// <summary>
        /// 水流方向可见性
        /// </summary>
        public bool FlowDirectionVisible
        {
            get
            {
                return _wpfViewer == null ? false : _wpfViewer.FlowDirectionVisible;
            }
            set
            {
                if (_wpfViewer != null)
                {
                    _wpfViewer.FlowDirectionVisible = value;
                }
            }
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(FlowDirectionL3d item)
        {
            _wpfViewer.SetFlowDirection(item);
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(List<FlowDirectionL3d> items)
        {
            _wpfViewer.SetFlowDirection(items);
        }
        /// <summary>
        /// 清理水流方向
        /// </summary>
        public void ClearFlowDirection()
        {
            _wpfViewer.ClearFlowDirection();
        }
        #endregion
        //关闭
        protected virtual void Close()
        {
            if (_wpfViewer != null)
            {
                _wpfViewer.SelectionChangedEvent -= OnSelectionChanged;
            }
        }
    }
}