| | |
| | | { |
| | | InitializeComponent(); |
| | | this.bimfaceInterop3dContainer1.LoadCompletedEvent += BimfaceInterop3dContainer1_LoadCompletedEvent; |
| | | this.bimfaceInterop3dContainer1.LoadViewCompletedEvent += BimfaceInterop3dContainer1_LoadViewCompletedEvent; |
| | | this.bimfaceInterop3dContainer1.ClickInEvent += BimfaceInterop3dContainer1_ClickInEvent; |
| | | this.bimfaceInterop3dContainer1.ClickOutEvent += BimfaceInterop3dContainer1_ClickOutEvent; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 点击组件事件 |
| | | /// 水力点击事件 |
| | | /// </summary> |
| | | public event Action<string> ClickParterEvent; |
| | | |
| | | public event Action<Yw.Model.HydroParterInfo> HydroClickEvent; |
| | | /// <summary> |
| | | /// 获取水力信息事件 |
| | | /// 加载完成事件 |
| | | /// </summary> |
| | | public event Func<Yw.Model.HydroModelInfo> GetHydroInfoEvent; |
| | | public event Action LoadCompletedEvent; |
| | | |
| | | |
| | | private HStation.Vmo.XhsProjectVmo _project = null; |
| | | private HStation.Vmo.XhsProjectSiteVmo _projectSite = null; |
| | | |
| | | |
| | | private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 绑定数据 |
| | | /// </summary> |
| | | public async Task SetBindingData(HStation.Vmo.XhsProjectVmo project, HStation.Vmo.XhsProjectSiteVmo projectSite) |
| | | public async Task SetBindingData |
| | | ( |
| | | HStation.Vmo.XhsProjectVmo project, |
| | | HStation.Vmo.XhsProjectSiteVmo projectSite, |
| | | Func<Yw.Model.HydroModelInfo> hydroInfoFunc |
| | | ) |
| | | { |
| | | if (project == null) |
| | | { |
| | |
| | | } |
| | | _project = project; |
| | | _projectSite = projectSite; |
| | | _hydroInfoFunc = hydroInfoFunc; |
| | | if (_projectSite == null) |
| | | { |
| | | _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID); |
| | |
| | | await this.bimfaceInterop3dContainer1.LoadView(viewToken); |
| | | } |
| | | |
| | | //构件点击 |
| | | //页面视图加载完成后触发 |
| | | private void BimfaceInterop3dContainer1_LoadViewCompletedEvent() |
| | | { |
| | | this.LoadCompletedEvent?.Invoke(); |
| | | } |
| | | |
| | | //内部点击 |
| | | private void BimfaceInterop3dContainer1_ClickInEvent(Yw.WinFrmUI.Bimface.ClickIn3dInfo obj) |
| | | { |
| | | if (obj == null) |
| | | { |
| | | return; |
| | | } |
| | | this.ClickParterEvent?.Invoke(obj.ObjectId); |
| | | if (HydroClickEvent != null) |
| | | { |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | return; |
| | | } |
| | | var allParterList = hydroInfo.GetAllParters(); |
| | | var parter = allParterList?.Find(x => x.Code == obj.ObjectId); |
| | | this.HydroClickEvent.Invoke(parter); |
| | | } |
| | | } |
| | | |
| | | //外部点击 |
| | | private void BimfaceInterop3dContainer1_ClickOutEvent(ClickOut3dInfo obj) |
| | | { |
| | | this.HydroClickEvent?.Invoke(null); |
| | | } |
| | | |
| | | |
| | | #region 构件的显示与隐藏 |
| | | |
| | |
| | | |
| | | #region 业务 |
| | | |
| | | |
| | | #region 连接构件颜色 |
| | | |
| | | private const string _linkComponentColor = "#008B00"; |
| | |
| | | /// </summary> |
| | | public async Task ShowCalcuCustomLabels(CalcuResult calcuResult) |
| | | { |
| | | var hydroInfo = GetHydroInfoEvent?.Invoke(); |
| | | var hydroInfo = _hydroInfoFunc?.Invoke(); |
| | | if (hydroInfo == null) |
| | | { |
| | | return; |
| | |
| | | if (x is Yw.Model.HydroPumpInfo pump) |
| | | { |
| | | var calcuPump = calcuResult.LinkList.Find(x => x.Id == pump.Code); |
| | | var pumpStart = allParterList.Find(x => x.Code == pump.StartCode) as Yw.Model.HydroNodeInfo; |
| | | var calcuPumpStart = calcuResult.NodeList.Find(x => x.Id == pump.StartCode); |
| | | var pumpEnd = allParterList.Find(x => x.Code == pump.EndCode) as Yw.Model.HydroNodeInfo; |
| | | var calcuPumpEnd = calcuResult.NodeList.Find(x => x.Id == pump.EndCode); |
| | | var pumpCustomLabel = new CustomLabel(); |
| | | pumpCustomLabel.Position = new Point3d() |
| | | { |
| | | X = (pumpStart.Position3d.X + pumpEnd.Position3d.X) / 2f, |
| | | Y = (pumpStart.Position3d.Y + pumpEnd.Position3d.Y) / 2f, |
| | | Z = (pumpStart.Position3d.Z + pumpEnd.Position3d.Z) / 2f |
| | | }; |
| | | pumpCustomLabel.Id = pump.Code; |
| | | pumpCustomLabel.Data = new List<CustomLabelItem>() |
| | | { |
| | | new CustomLabelItem(){ Name="流量",Value=Math.Round(calcuPump.Flow,1).ToString(),Unit="m³/h"}, |