lixiaojun
2024-11-08 adf7734a40dec76fc31590906eeadd02c782db90
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -254,10 +254,12 @@
                    //分级属性发生改变
                    //判断当前是否有分级展示,若有则更新分级,最好是更新单个分级
                };
                _propertyCtrl.FlowDirectionPropertyValueChangedEvent += (parter) =>
                _propertyCtrl.FlowDirectionPropertyValueChangedEvent += async (parter) =>
                {
                    //流向属性发生改变
                    //判断流向是否加载,如果加载则更新流向,最好是更新单个流向
                    UpdateFlowEffect(parter);
                    //await _bimfaceCtrl?.UnloadFlowEffectById(parter.Code);
                };
            }
@@ -303,8 +305,6 @@
                }
            }
        }
        #endregion
@@ -523,8 +523,11 @@
        #region 一键显隐
        //显隐编码列表
        private List<string> _fastShowHiddenCodeList = null;
        //一键显隐
        private async Task FastShowHidden()
        private async void FastShowHidden()
        {
            if (_hydroInfo == null)
            {
@@ -546,13 +549,10 @@
            }
        }
        //显隐编码列表
        private List<string> _fastShowHiddenCodeList = null;
        //触发一键显隐
        private async void barBtnFastShowHidden_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private void barBtnFastShowHidden_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            await FastShowHidden();
            FastShowHidden();
        }
        #endregion
@@ -3171,28 +3171,160 @@
        #region 水流动画
        //加载流向
        private async void barBtnLoadFlowDirection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //所有流向列表
        private List<Yw.WinFrmUI.Bimface.LogicFlowEffect> _allFlowEffectList = null;
        //获取流向列表
        private List<Yw.WinFrmUI.Bimface.LogicFlowEffect> GetFlowEffectList()
        {
            var pipes = _hydroInfo.Pipes;
            var list = pipes.Select(x =>
            if (_allFlowEffectList == null)
            {
                return new Yw.WinFrmUI.Bimface.LogicFlowEffect()
                if (_hydroInfo == null)
                {
                    Id = x.Code,
                    Rotation = 90,
                    Speed = 0.1d
                };
            }).ToList();
            await _bimfaceCtrl?.LoadFlowEffect(list);
                    return default;
                }
                _allFlowEffectList = new List<LogicFlowEffect>();
                var allCalcuResultList = GetCalcuResultList();
                if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0)
                {
                    foreach (var parter in _hydroInfo.Pipes)
                    {
                        var flowEffect = new LogicFlowEffect();
                        _allFlowEffectList.Add(flowEffect);
                        flowEffect.Id = parter.Code;
                        flowEffect.Rotation = 90;
                        flowEffect.SpeedX = 0.1;
                        if (parter.FlowDirectionX == Yw.Hydro.FlowDirection.None)
                        {
                            flowEffect.SpeedX = 0;
                        }
                        else if (parter.FlowDirectionX == Yw.Hydro.FlowDirection.Positive)
                        {
                            flowEffect.SpeedX = 0.1;
                        }
                        else
                        {
                            flowEffect.SpeedX = -0.1;
                        }
                        if (parter.FlowDirectionY == Yw.Hydro.FlowDirection.None)
                        {
                            flowEffect.SpeedY = 0;
                        }
                        else if (parter.FlowDirectionY == Yw.Hydro.FlowDirection.Positive)
                        {
                            flowEffect.SpeedY = 0.1;
                        }
                        else
                        {
                            flowEffect.SpeedY = -0.1;
                        }
                        var calcuResult = allCalcuResultList?.Find(x => x.Code == parter.Code) as HydroCalcuLinkResult;
                        if (calcuResult != null)
                        {
                            if (calcuResult.CalcuVelocity < 0)
                            {
                                flowEffect.SpeedX = -flowEffect.SpeedX;
                            }
                        }
                    }
                }
            }
            return _allFlowEffectList;
        }
        /// <summary>
        /// 加载水流动画
        /// </summary>
        private async void LoadFlowEffect()
        {
            if (_allFlowEffectList != null)
            {
                return;
            }
            var allFlowEffectList = GetFlowEffectList();
            await _bimfaceCtrl?.LoadFlowEffect(allFlowEffectList);
        }
        //卸载流向
        private async void barBtnUnloadFlowDirection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private async void UnloadFlowEffect()
        {
            if (_allFlowEffectList == null)
            {
                return;
            }
            _allFlowEffectList = null;
            await _bimfaceCtrl?.UnloadFlowEffect();
        }
        //更新水流动画
        private async void UpdateFlowEffect(Yw.Model.HydroParterInfo parter)
        {
            if (_allFlowEffectList == null)
            {
                return;
            }
            var visual = parter as Yw.Model.HydroVisualInfo;
            if (visual == null)
            {
                return;
            }
            var flowEffect = _allFlowEffectList.Find(x => x.Id == parter.Code);
            if (flowEffect == null)
            {
                return;
            }
            if (visual.FlowDirectionX == Yw.Hydro.FlowDirection.None)
            {
                flowEffect.SpeedX = 0;
            }
            else if (visual.FlowDirectionX == Yw.Hydro.FlowDirection.Positive)
            {
                flowEffect.SpeedX = 0.1;
            }
            else
            {
                flowEffect.SpeedX = -0.1;
            }
            if (visual.FlowDirectionY == Yw.Hydro.FlowDirection.None)
            {
                flowEffect.SpeedY = 0;
            }
            else if (visual.FlowDirectionY == Yw.Hydro.FlowDirection.Positive)
            {
                flowEffect.SpeedY = 0.1;
            }
            else
            {
                flowEffect.SpeedY = -0.1;
            }
            var allCalcuResultList = GetCalcuResultList();
            var calcuResult = allCalcuResultList?.Find(x => x.Code == visual.Code) as HydroCalcuLinkResult;
            if (calcuResult != null)
            {
                if (calcuResult.CalcuVelocity < 0)
                {
                    flowEffect.SpeedX = -flowEffect.SpeedX;
                }
            }
            await _bimfaceCtrl?.UpdateFlowEffect(flowEffect);
        }
        //加载流向
        private void barBtnLoadFlowDirection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            LoadFlowEffect();
        }
        //卸载流向
        private void barBtnUnloadFlowDirection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            UnloadFlowEffect();
        }
        #endregion