| | |
| | | namespace HStation.WinFrmUI |
| | | using DevExpress.Office.Utils; |
| | | using DevExpress.Xpo.Helpers; |
| | | using Yw.WinFrmUI.Bimface; |
| | | |
| | | namespace HStation.WinFrmUI |
| | | { |
| | | public partial class XhsProjectSimulationBimfaceCtrl : DevExpress.XtraEditors.XtraUserControl |
| | | { |
| | |
| | | /// </summary> |
| | | public event Action<string> ClickParterEvent; |
| | | |
| | | private long _projectId;//项目id |
| | | /// <summary> |
| | | /// 获取水力信息事件 |
| | | /// </summary> |
| | | public event Func<Yw.Model.HydroModelInfo> GetHydroInfoEvent; |
| | | |
| | | private HStation.Vmo.XhsProjectVmo _project = null; |
| | | private HStation.Vmo.XhsProjectSiteVmo _projectSite = null; |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 绑定数据 |
| | | /// </summary> |
| | | public async void SetBindingData(long projectId) |
| | | public async Task SetBindingData(HStation.Vmo.XhsProjectVmo project, HStation.Vmo.XhsProjectSiteVmo projectSite) |
| | | { |
| | | _projectId = projectId; |
| | | if (project == null) |
| | | { |
| | | return; |
| | | } |
| | | _project = project; |
| | | _projectSite = projectSite; |
| | | if (_projectSite == null) |
| | | { |
| | | _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID); |
| | | } |
| | | await this.bimfaceInterop3dContainer1.InitialContainer(); |
| | | } |
| | | |
| | | //页面加载完成后触发 |
| | | private async void BimfaceInterop3dContainer1_LoadCompletedEvent() |
| | | { |
| | | var projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_projectId); |
| | | if (projectSite == null) |
| | | if (_projectSite == null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | var relation = await BLLFactory<Yw.BLL.BimfaceFileRelation>.Instance |
| | | .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation); |
| | | .GetDefaultByObjectTypeAndObjectIDOfPurpose |
| | | (HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); |
| | | if (relation == null) |
| | | { |
| | | return; |
| | |
| | | this.ClickParterEvent?.Invoke(obj.ObjectId); |
| | | } |
| | | |
| | | public async Task HideComponents(List<string> elementIds) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.HideComponents(elementIds); |
| | | } |
| | | #region 构件的显示与隐藏 |
| | | |
| | | /// <summary> |
| | | /// 显示构件 |
| | | /// </summary> |
| | | /// <param name="elementIds">构件id列表</param> |
| | | /// <returns></returns> |
| | | public async Task ShowComponents(List<string> elementIds) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ShowComponents(elementIds); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 隐藏构件 |
| | | /// </summary> |
| | | /// <param name="elementIds">构件id列表</param> |
| | | /// <returns></returns> |
| | | public async Task HideComponents(List<string> elementIds) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.HideComponents(elementIds); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 显示所有构件 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async Task ShowAllComponents() |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ShowAllComponents(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 构件的半透明与取消 |
| | | |
| | | /// <summary> |
| | | /// 半透明构件 |
| | |
| | | await this.bimfaceInterop3dContainer1.OpaqueComponents(elementIds); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 构件的选中与取消 |
| | | |
| | | /// <summary> |
| | | /// 设置选择的构件 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async Task SetSelectedComponents(List<string> elements) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.SetSelectedComponents(elements); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 增加选择的构件 |
| | | /// </summary> |
| | | /// <param name="elements"></param> |
| | | /// <returns></returns> |
| | | public async Task AddSelectedComponents(List<string> elements) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.AddSelectedComponents(elements); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 移除选择的构件 |
| | | /// </summary> |
| | | /// <param name="elements"></param> |
| | | /// <returns></returns> |
| | | public async Task RemoveSelectedComponents(List<string> elements) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.RemoveSelectedComponents(elements); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 清除选择的构件 |
| | | /// </summary> |
| | | /// <param name="elements"></param> |
| | | /// <returns></returns> |
| | | public async Task ClearSelectedComponents() |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ClearSelectedComponents(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 缩放 |
| | | |
| | | /// <summary> |
| | | /// 缩放至构件 |
| | | /// </summary> |
| | | public async Task ZoomToComponent(string elementId) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ZoomToComponent(elementId); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 缩放至选择构件 |
| | | /// </summary> |
| | | public async Task ZoomToSelectedComponents() |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ZoomToSelectedComponents(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 缩放至选择构件 |
| | | /// </summary> |
| | | public async Task ZoomAndSelectComponents(List<string> elementIds) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ZoomAndSelectComponents(elementIds); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 强调构件 |
| | | |
| | | /// <summary> |
| | | /// 设置强调构件 |
| | | /// </summary> |
| | | public async Task SetBlinkComponents(List<string> elementIds, string color, double transparency) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.SetBlinkComponents(elementIds, color, transparency); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 清除强调构件 |
| | | /// </summary> |
| | | public async Task SetBlinkComponents() |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ClearBlinkComponents(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 构件着色 |
| | | |
| | | /// <summary> |
| | | /// 设置强调构件 |
| | | /// </summary> |
| | | public async Task OverrideComponentsColor(List<string> elementIds, string color, double transparency) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.OverrideComponentsColor(elementIds, color, transparency); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 恢复构件颜色 |
| | | /// </summary> |
| | | public async Task SetBlinkComponents(List<string> elementIds) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.RestoreComponentsColor(elementIds); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 自定义标签 |
| | | |
| | | /// <summary> |
| | | /// 设置自定义标签 |
| | | /// </summary> |
| | | public async Task SetCustomLabels(List<CustomLabel> obj) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.SetCustomLabels(obj); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 清除自定义标签 |
| | | /// </summary> |
| | | public async Task ClearCustomLabels() |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ClearCustomLabels(); |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 业务 |
| | | |
| | | |
| | | #region 连接构件颜色 |
| | | |
| | | private const string _linkComponentColor = "#008B00"; |
| | | private const double _linkComponentTransparency = 0.8; |
| | | private List<string> _linkComponentIds = null;//连接构件id列表 |
| | | |
| | | /// <summary> |
| | | /// 设置连接构件颜色 |
| | | /// </summary> |
| | | public async Task SetLinkComponentsColor(List<string> elementIds) |
| | | { |
| | | if (_linkComponentIds != null && _linkComponentIds.Count > 0) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.RestoreComponentsColor(_linkComponentIds); |
| | | } |
| | | _linkComponentIds = elementIds; |
| | | if (elementIds == null || elementIds.Count < 1) |
| | | { |
| | | return; |
| | | } |
| | | await this.bimfaceInterop3dContainer1.OverrideComponentsColor(elementIds, _linkComponentColor, _linkComponentTransparency); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 设置Open构件颜色 |
| | | |
| | | private const string _openComponentColor = "#2E8B57"; |
| | | private const double _openComponentTransparency = 0.8; |
| | | private List<string> _openComponentIds = null;//Open构件id列表 |
| | | |
| | | /// <summary> |
| | | /// 设置Open构件颜色 |
| | | /// </summary> |
| | | public async Task SetOpenComponentsColor(List<string> elementIds) |
| | | { |
| | | if (_openComponentIds != null && _openComponentIds.Count > 0) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.RestoreComponentsColor(_openComponentIds); |
| | | } |
| | | _openComponentIds = elementIds; |
| | | if (elementIds == null || elementIds.Count < 1) |
| | | { |
| | | return; |
| | | } |
| | | await this.bimfaceInterop3dContainer1.OverrideComponentsColor(elementIds, _openComponentColor, _openComponentTransparency); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 自定义标签 |
| | | |
| | | /// <summary> |
| | | /// 显示计算自定义标签 |
| | | /// </summary> |
| | | public async Task ShowCalcuCustomLabels(CalcuResult calcuResult) |
| | | { |
| | | var hydroInfo = GetHydroInfoEvent?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | return; |
| | | } |
| | | if (calcuResult == null) |
| | | { |
| | | return; |
| | | } |
| | | if (!calcuResult.Succeed) |
| | | { |
| | | await this.bimfaceInterop3dContainer1.ClearCustomLabels(); |
| | | return; |
| | | } |
| | | var obj = new List<CustomLabel>(); |
| | | var allParterList = hydroInfo.GetAllParters(); |
| | | allParterList?.ForEach(x => |
| | | { |
| | | if (x is Yw.Model.HydroPumpInfo pump) |
| | | { |
| | | var calcuPump = calcuResult.LinkList.Find(x => x.Id == pump.Code); |
| | | var calcuPumpStart = calcuResult.NodeList.Find(x => x.Id == pump.StartCode); |
| | | var calcuPumpEnd = calcuResult.NodeList.Find(x => x.Id == pump.EndCode); |
| | | var pumpCustomLabel = new CustomLabel(); |
| | | pumpCustomLabel.Id = pump.Code; |
| | | pumpCustomLabel.Data = new List<CustomLabelItem>() |
| | | { |
| | | new CustomLabelItem(){ Name="流量",Value=Math.Round(calcuPump.Flow,1).ToString(),Unit="m³/h"}, |
| | | new CustomLabelItem(){ Name="进口压力",Value=Math.Round(calcuPumpStart.Head,4).ToString(),Unit="m"}, |
| | | new CustomLabelItem(){ Name="出口压力",Value=Math.Round(calcuPumpEnd.Head,4).ToString(),Unit="m"}, |
| | | }; |
| | | obj.Add(pumpCustomLabel); |
| | | } |
| | | else if (x is Yw.Model.HydroEmitterInfo emitter) |
| | | { |
| | | |
| | | } |
| | | }); |
| | | |
| | | await this.bimfaceInterop3dContainer1.SetCustomLabels(obj); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | } |
| | | } |