| | |
| | | public XhsProjectSimulationPropertyCtrl() |
| | | { |
| | | InitializeComponent(); |
| | | this.hydroVisualPropertyCtrl1.MatchingDbEvent += HydroParterPropertyCtrl1_MatchingDbEvent; |
| | | this.hydroVisualPropertyCtrl1.SetCurveEvent += HydroParterPropertyCtrl1_SetCurveEvent; |
| | | this.hydroVisualPropertyCtrl1.SetPatternEvent += HydroParterPropertyCtrl1_SetPatternEvent; |
| | | this.hydroVisualPropertyCtrl1.BlinkLinkParterEvent += HydroParterPropertyCtrl1_BlinkLinkParterEvent; |
| | | this.hydroVisualPropertyCtrl1.HydroViewEvent += HydroParterPropertyCtrl1_ViewParterEvent; |
| | | this.hydroVisualPropertyCtrl1.MatchingDbEvent += HydroVisualPropertyCtrl1_MatchingDbEvent; |
| | | this.hydroVisualPropertyCtrl1.SetCurveEvent += HydroVisualPropertyCtrl1_SetCurveEvent; |
| | | this.hydroVisualPropertyCtrl1.SetPatternEvent += HydroVisualPropertyCtrl1_SetPatternEvent; |
| | | |
| | | this.hydroVisualPropertyCtrl1.PropertyValueChangedEvent += HydroParterPropertyCtrl1_PropertyValueChangedEvent; |
| | | this.hydroVisualPropertyCtrl1.MarkPropertyValueChangedEvent += HydroParterPropertyCtrl1_MarkPropertyValueChangedEvent; |
| | | this.hydroVisualPropertyCtrl1.GradingPropertyValueChangedEvent += HydroParterPropertyCtrl1_GradingPropertyValueChangedEvent; |
| | | this.hydroVisualPropertyCtrl1.FlowDirectionPropertyValueChangedEvent += HydroParterPropertyCtrl1_FlowDirectionPropertyValueChangedEvent; |
| | | this.hydroVisualPropertyCtrl1.HydroViewEvent += HydroVisualPropertyCtrl1_HydroViewEvent; |
| | | this.hydroVisualPropertyCtrl1.BlinkLinkNodeEvent += HydroVisualPropertyCtrl1_BlinkLinkNodeEvent; |
| | | this.hydroVisualPropertyCtrl1.PropertyValueChangedEvent += HydroVisualPropertyCtrl1_PropertyValueChangedEvent; |
| | | this.hydroVisualPropertyCtrl1.MarkPropertyValueChangedEvent += HydroVisualPropertyCtrl1_MarkPropertyValueChangedEvent; |
| | | this.hydroVisualPropertyCtrl1.GradingPropertyValueChangedEvent += HydroPVisualPropertyCtrl1_GradingPropertyValueChangedEvent; |
| | | this.hydroVisualPropertyCtrl1.FlowEffectPropertyValueChangedEvent += HydroVisualPropertyCtrl1_FlowEffectPropertyValueChangedEvent; |
| | | } |
| | | |
| | | #region 事件集 |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 构件查看事件 |
| | | /// </summary> |
| | | public event Action<HydroVisualViewModel> HydroViewEvent; |
| | | |
| | | /// <summary> |
| | | /// 强调连接组件事件 |
| | | /// 第一个参数为组件Code |
| | | /// 第二个参数为连接组件Code |
| | | /// 第一个参数为组件 |
| | | /// 第二个参数为连接节点Code |
| | | /// </summary> |
| | | public event Action<string, string> BlinkLinkParterEvent; |
| | | public event Action<HydroLinkViewModel, string> BlinkLinkNodeEvent; |
| | | |
| | | /// <summary> |
| | | /// 属性值改变事件 |
| | | /// </summary> |
| | | public event Action<Yw.Model.HydroVisualInfo> PropertyValueChangedEvent; |
| | | public event Action<HydroVisualViewModel> PropertyValueChangedEvent; |
| | | |
| | | /// <summary> |
| | | /// 标注属性值改变事件 |
| | | /// </summary> |
| | | public event Action<Yw.Model.HydroVisualInfo> MarkPropertyValueChangedEvent; |
| | | public event Action<HydroVisualViewModel> MarkPropertyValueChangedEvent; |
| | | |
| | | /// <summary> |
| | | /// 分级属性值改变事件 |
| | | /// </summary> |
| | | public event Action<Yw.Model.HydroVisualInfo> GradingPropertyValueChangedEvent; |
| | | public event Action<HydroVisualViewModel> GradingPropertyValueChangedEvent; |
| | | |
| | | /// <summary> |
| | | /// 流向属性值改变事件 |
| | | /// 水流动画属性值改变事件 |
| | | /// </summary> |
| | | public event Action<Yw.Model.HydroVisualInfo> FlowDirectionPropertyValueChangedEvent; |
| | | public event Action<HydroVisualViewModel> FlowEffectPropertyValueChangedEvent; |
| | | |
| | | #endregion |
| | | |
| | | #region 属性赋值 |
| | | |
| | | /// <summary> |
| | | /// 查看构件事件 |
| | | /// 选择对象 |
| | | /// </summary> |
| | | public event Action<Yw.Model.HydroVisualInfo> ViewParterEvent; |
| | | |
| | | //水力信息方法 |
| | | private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null; |
| | | private Func<List<HydroCalcuVisualResult>> _allHydroCalcuResultListFunc = null; |
| | | |
| | | /// <summary> |
| | | /// 初始化数据 |
| | | /// </summary> |
| | | public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc, Func<List<HydroCalcuVisualResult>> allHydroCalcuResultListFunc) |
| | | { |
| | | _hydroInfoFunc = hydroInfoFunc; |
| | | _allHydroCalcuResultListFunc = allHydroCalcuResultListFunc; |
| | | } |
| | | |
| | | //获取水力信息 |
| | | private Yw.Model.HydroModelInfo GetHydroInfo() |
| | | { |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | this.hydroVisualPropertyCtrl1.SelectedObject = null; |
| | | return default; |
| | | } |
| | | return hydroInfo; |
| | | } |
| | | |
| | | |
| | | public HydroVisualViewModel SelectedObject |
| | | { |
| | | get { return this.hydroVisualPropertyCtrl1.SelectedObject; } |
| | | set { this.hydroVisualPropertyCtrl1.SelectedObject = value; } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 属性更新 |
| | | |
| | | /// <summary> |
| | | /// 重新载入数据 |
| | | /// </summary> |
| | | public void UpdateData() |
| | | { |
| | | this.hydroVisualPropertyCtrl1?.UpdateData(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | public void UpdateRows() |
| | | { |
| | | this.hydroVisualPropertyCtrl1?.UpdateRows(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重新载入数据 |
| | | /// </summary> |
| | | public void UpdateData() |
| | | { |
| | | this.hydroVisualPropertyCtrl1?.UpdateData(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | this.hydroVisualPropertyCtrl1.UpdateRows(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新计算属性 |
| | | /// </summary> |
| | | public void UpdateCalcuProperty(Yw.WinFrmUI.HydroCalcuVisualResult calcuResult) |
| | | { |
| | | if (calcuResult == null) |
| | | { |
| | | return; |
| | | } |
| | | var vm = this.hydroVisualPropertyCtrl1.SelectedObject; |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | vm.UpdateCalcuProperty(calcuResult); |
| | | this.hydroVisualPropertyCtrl1.UpdateRows(); |
| | | } |
| | | #endregion |
| | | |
| | | //选择曲线 |
| | | private bool HydroParterPropertyCtrl1_SetCurveEvent(HydroParterViewModel propViewModel, string curveType) |
| | | #region 事件实现 |
| | | |
| | | //匹配Db |
| | | private bool HydroVisualPropertyCtrl1_MatchingDbEvent(HydroVisualViewModel vm) |
| | | { |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | if (vm == null) |
| | | { |
| | | return false; |
| | | } |
| | | switch (curveType) |
| | | { |
| | | case Yw.WinFrmUI.HydroCurve.Pump: |
| | | { |
| | | var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == propViewModel.Code); |
| | | if (pumpInfo == null) |
| | | { |
| | | break; |
| | | } |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke()); |
| | | var dlg = new SinglePumpAnalyDlg(); |
| | | dlg.SetBindindData(input); |
| | | dlg.ReloadDataEvent += (output) => |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(hydroInfo, output); |
| | | if (bol) |
| | | { |
| | | propViewModel.UpdateProperty(); |
| | | this.hydroVisualPropertyCtrl1.UpdateRows(); |
| | | } |
| | | return bol; |
| | | }; |
| | | dlg.ShowDialog(); |
| | | return true; |
| | | } |
| | | case Yw.WinFrmUI.HydroCurve.PumpQH: |
| | | { |
| | | return false; |
| | | } |
| | | case Yw.WinFrmUI.HydroCurve.PumpQP: |
| | | { |
| | | return false; |
| | | } |
| | | case Yw.WinFrmUI.HydroCurve.PumpQE: |
| | | { |
| | | return false; |
| | | } |
| | | case Yw.WinFrmUI.HydroCurve.Valve: |
| | | { |
| | | return false; |
| | | } |
| | | case Yw.WinFrmUI.HydroCurve.ValveQL: |
| | | { |
| | | return false; |
| | | } |
| | | default: break; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | //选择模式 |
| | | private bool HydroParterPropertyCtrl1_SetPatternEvent(HydroParterViewModel propViewModel, string patternType) |
| | | { |
| | | switch (patternType) |
| | | { |
| | | case Yw.WinFrmUI.HydroPattern.Demand: |
| | | { |
| | | } |
| | | break; |
| | | |
| | | case Yw.WinFrmUI.HydroPattern.Head: |
| | | { |
| | | } |
| | | break; |
| | | |
| | | default: break; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | //属性发生改变 |
| | | private void HydroParterPropertyCtrl1_PropertyValueChangedEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.PropertyValueChangedEvent?.Invoke(vm.Vmo); |
| | | } |
| | | |
| | | //标注属性发生改变 |
| | | private void HydroParterPropertyCtrl1_MarkPropertyValueChangedEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); |
| | | } |
| | | |
| | | //分级属性发生改变 |
| | | private void HydroParterPropertyCtrl1_GradingPropertyValueChangedEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); |
| | | } |
| | | |
| | | //流向属性发生改变 |
| | | private void HydroParterPropertyCtrl1_FlowDirectionPropertyValueChangedEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.FlowDirectionPropertyValueChangedEvent?.Invoke(vm.Vmo); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //属性正在发生改变 |
| | | private bool HydroParterPropertyCtrl1_PropertyValueChangingEvent(HydroParterViewModel arg) |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | //匹配Db |
| | | private bool HydroParterPropertyCtrl1_MatchingDbEvent(HydroParterViewModel propertyViewModel) |
| | | { |
| | | var bol = false; |
| | | if (propertyViewModel == null) |
| | | { |
| | | return bol; |
| | | } |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | return bol; |
| | | } |
| | | var catalog = Yw.WinFrmUI.HydroParterCatalogHelper.GetCode(propertyViewModel.Catalog); |
| | | var catalog = HydroParterCatalogHelper.GetCode(vm.Catalog); |
| | | switch (catalog) |
| | | { |
| | | case Yw.Hydro.ParterCatalog.Pump://水泵 |
| | | { |
| | | var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == propertyViewModel.Code); |
| | | var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code); |
| | | if (pumpInfo == null) |
| | | { |
| | | break; |
| | | } |
| | | |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke()); |
| | | var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, pumpInfo, null); |
| | | var dlg = new PumpSingleMatchingDlg(); |
| | | dlg.SetBindingData(input); |
| | | dlg.ReloadDataEvent += (output) => |
| | | { |
| | | bol = AssetsMatchingParasHelper.Apply(hydroInfo, output); |
| | | bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, output); |
| | | if (bol) |
| | | { |
| | | propertyViewModel.UpdateProperty(); |
| | | vm.UpdateProperty(); |
| | | } |
| | | }; |
| | | dlg.ShowDialog(); |
| | |
| | | break; |
| | | case Yw.Hydro.ParterCatalog.Valve://阀门 |
| | | { |
| | | var valveInfo = hydroInfo.Valves?.Find(x => x.Code == propertyViewModel.Code); |
| | | var valveInfo = vm.HydroInfo.Valves?.Find(x => x.Code == vm.Code); |
| | | if (valveInfo == null) |
| | | { |
| | | break; |
| | | } |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, valveInfo, _allHydroCalcuResultListFunc?.Invoke()); |
| | | var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, valveInfo, null); |
| | | var dlg = new ValveSingleMatchingDlg(); |
| | | dlg.SetBindingData(input); |
| | | dlg.ReloadDataEvent += (rhs) => |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(hydroInfo, rhs); |
| | | bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, rhs); |
| | | if (bol) |
| | | { |
| | | propertyViewModel.UpdateProperty(); |
| | | vm.UpdateProperty(); |
| | | this.hydroVisualPropertyCtrl1.UpdateRows(); |
| | | } |
| | | }; |
| | |
| | | break; |
| | | case Yw.Hydro.ParterCatalog.Elbow://弯头 |
| | | { |
| | | var elbowInfo = hydroInfo.Elbows?.Find(x => x.Code == propertyViewModel.Code); |
| | | var elbowInfo = vm.HydroInfo.Elbows?.Find(x => x.Code == vm.Code); |
| | | if (elbowInfo == null) |
| | | { |
| | | break; |
| | | } |
| | | var input = AssetsMatchingParasHelper.Create(hydroInfo, elbowInfo, _allHydroCalcuResultListFunc?.Invoke()); |
| | | var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, elbowInfo, null); |
| | | var dlg = new ElbowSingMatchingDlg(); |
| | | dlg.SetBindingData(input); |
| | | dlg.ReloadDataEvent += (output) => |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(hydroInfo, output); |
| | | bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, output); |
| | | if (bol) |
| | | { |
| | | propertyViewModel.UpdateProperty(); |
| | | vm.UpdateProperty(); |
| | | this.hydroVisualPropertyCtrl1.UpdateRows(); |
| | | } |
| | | }; |
| | |
| | | return bol; |
| | | } |
| | | |
| | | //强调连接组件 |
| | | private void HydroParterPropertyCtrl1_BlinkLinkParterEvent(string code, string linkCode) |
| | | //选择曲线 |
| | | private bool HydroVisualPropertyCtrl1_SetCurveEvent(HydroVisualViewModel vm, string curveType) |
| | | { |
| | | if (string.IsNullOrEmpty(code)) |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | return false; |
| | | } |
| | | if (string.IsNullOrEmpty(linkCode)) |
| | | switch (curveType) |
| | | { |
| | | return; |
| | | case HydroCurve.Pump: |
| | | { |
| | | var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code); |
| | | if (pumpInfo == null) |
| | | { |
| | | break; |
| | | } |
| | | var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, pumpInfo, null); |
| | | var dlg = new SinglePumpAnalyDlg(); |
| | | dlg.SetBindindData(input); |
| | | dlg.ReloadDataEvent += (output) => |
| | | { |
| | | var bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, output); |
| | | if (bol) |
| | | { |
| | | vm.UpdateProperty(); |
| | | this.hydroVisualPropertyCtrl1.UpdateRows(); |
| | | } |
| | | return bol; |
| | | }; |
| | | dlg.ShowDialog(); |
| | | return true; |
| | | } |
| | | case HydroCurve.PumpQH: |
| | | { |
| | | return false; |
| | | } |
| | | case HydroCurve.PumpQP: |
| | | { |
| | | return false; |
| | | } |
| | | case HydroCurve.PumpQE: |
| | | { |
| | | return false; |
| | | } |
| | | case HydroCurve.Valve: |
| | | { |
| | | return false; |
| | | } |
| | | case HydroCurve.ValveQL: |
| | | { |
| | | return false; |
| | | } |
| | | default: break; |
| | | } |
| | | this.BlinkLinkParterEvent?.Invoke(code, linkCode); |
| | | return false; |
| | | } |
| | | |
| | | //查看构件 |
| | | private void HydroParterPropertyCtrl1_ViewParterEvent(HydroVisualViewModel vm) |
| | | //选择模式 |
| | | private bool HydroVisualPropertyCtrl1_SetPatternEvent(HydroVisualViewModel vm, string patternType) |
| | | { |
| | | switch (patternType) |
| | | { |
| | | case HydroPattern.Head: |
| | | { |
| | | return false; |
| | | } |
| | | case HydroPattern.Demand: |
| | | { |
| | | return false; |
| | | } |
| | | default: break; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 事件穿透 |
| | | |
| | | //构件查看事件 |
| | | private void HydroVisualPropertyCtrl1_HydroViewEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.ViewParterEvent?.Invoke(vm.Vmo); |
| | | this.HydroViewEvent?.Invoke(vm); |
| | | } |
| | | |
| | | //强调连接节点 |
| | | private void HydroVisualPropertyCtrl1_BlinkLinkNodeEvent(HydroLinkViewModel vm, string linkNodeCode) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | if (string.IsNullOrEmpty(linkNodeCode)) |
| | | { |
| | | return; |
| | | } |
| | | this.BlinkLinkNodeEvent?.Invoke(vm, linkNodeCode); |
| | | } |
| | | |
| | | //属性发生改变 |
| | | private void HydroVisualPropertyCtrl1_PropertyValueChangedEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.PropertyValueChangedEvent?.Invoke(vm); |
| | | } |
| | | |
| | | //标注属性发生改变 |
| | | private void HydroVisualPropertyCtrl1_MarkPropertyValueChangedEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.MarkPropertyValueChangedEvent?.Invoke(vm); |
| | | } |
| | | |
| | | //分级属性发生改变 |
| | | private void HydroPVisualPropertyCtrl1_GradingPropertyValueChangedEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.GradingPropertyValueChangedEvent?.Invoke(vm); |
| | | } |
| | | |
| | | //水流动画属性发生改变 |
| | | private void HydroVisualPropertyCtrl1_FlowEffectPropertyValueChangedEvent(HydroVisualViewModel vm) |
| | | { |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | this.FlowEffectPropertyValueChangedEvent?.Invoke(vm); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | } |