lixiaojun
2024-12-09 4607e20cecf567ee2e86f9a07158deaa1b74d622
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/03-q3d/XhsProjectSimulationQ3dCtrl.cs
@@ -5,28 +5,62 @@
        public XhsProjectSimulationQ3dCtrl()
        {
            InitializeComponent();
            this.drawer1.SelectedObjectsChanged += Drawer1_SelectedObjectsChanged;
        }
        public event Action<string> ClickParterEvent;
        /// <summary>
        /// 选择组件改变事件
        /// </summary>
        public event Action<List<string>> SelectedPartersChangedEvent;
        //获取水力信息方法
        private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null;
        //获取绘制器
        private Yw.WinFrmUI.Q3d.Drawer GetDrawer()
        {
            if (_drawer == null)
            {
                _drawer = new Yw.WinFrmUI.Q3d.Drawer();
                _drawer.Dock = DockStyle.Fill;
                _drawer.SelectedObjectsChanged += (sender, obj) =>
                {
                    var codes = obj?.Select(x => x.ID).Distinct().ToList();
                    this.SelectedPartersChangedEvent?.Invoke(codes);
                };
            }
            return _drawer;
        }
        //Q3d绘制器
        private Yw.WinFrmUI.Q3d.Drawer _drawer = null;
        /// <summary>
        /// 绑定数据
        /// 初始化数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo rhs)
        public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc)
        {
            var netWork = Yw.WinFrmUI.HydroQ3dTransferHelper.ToNetworkViewModel(rhs);
            this.drawer1.SetData(netWork);
            _hydroInfoFunc = hydroInfoFunc;
            var drawer = GetDrawer();
            this.Controls.Clear();
            this.Controls.Add(drawer);
            LoadData();
        }
        private void Drawer1_SelectedObjectsChanged(object sender, List<Yw.WinFrmUI.Q3d.IBaseViewModel> e)
        //加载数据
        private void LoadData()
        {
            this.ClickParterEvent?.Invoke(e.FirstOrDefault()?.ID);
            var hydroInfo = _hydroInfoFunc?.Invoke();
            if (hydroInfo == null)
            {
                return;
            }
            var network = Yw.WinFrmUI.HydroQ3dTransferHelper.ToNetworkViewModel(hydroInfo);
            var drawer = GetDrawer();
            drawer.SetData(network);
        }
    }
}