using Yw.WinFrmUI.Q3d; namespace Yw.WinFrmUI { /// /// Q3d转换辅助类 /// public static class HydroQ3dTransferHelper { /// /// /// public static NetworkViewModel ToNetworkViewModel(this Yw.Model.HydroModelInfo rhs) { if (rhs == null) { return default; } var vm = new NetworkViewModel(); if (rhs.Junctions != null && rhs.Junctions.Count > 0) { foreach (var junction in rhs.Junctions) { var junctionViewModel = new JunctionViewModel(); junctionViewModel.ID = junction.Code; junctionViewModel.Name = junction.Name; junctionViewModel.Position3D = new PointF3D((float)junction.Position3d.X, (float)junction.Position3d.Y, (float)junction.Position3d.Z); vm.Nodes.Add(junctionViewModel); } } if (rhs.Nozzles != null && rhs.Nozzles.Count > 0) { foreach (var nozzle in rhs.Nozzles) { var nozzleViewModel = new NozzleViewModel(); nozzleViewModel.ID = nozzle.Code; nozzleViewModel.Name = nozzle.Name; nozzleViewModel.Position3D = new PointF3D((float)nozzle.Position3d.X, (float)nozzle.Position3d.Y, (float)nozzle.Position3d.Z); vm.Nodes.Add(nozzleViewModel); } } if (rhs.Hydrants != null && rhs.Hydrants.Count > 0) { foreach (var hydrant in rhs.Hydrants) { var hydrantViewModel = new JunctionViewModel(); hydrantViewModel.ID = hydrant.Code; hydrantViewModel.Name = hydrant.Name; hydrantViewModel.Position3D = new PointF3D((float)hydrant.Position3d.X, (float)hydrant.Position3d.Y, (float)hydrant.Position3d.Z); vm.Nodes.Add(hydrantViewModel); } } if (rhs.Elbows != null && rhs.Elbows.Count > 0) { foreach (var elbow in rhs.Elbows) { var elbowViewModel = new JunctionViewModel(); elbowViewModel.ID = elbow.Code; elbowViewModel.Name = elbow.Name; elbowViewModel.Position3D = new PointF3D((float)elbow.Position3d.X, (float)elbow.Position3d.Y, (float)elbow.Position3d.Z); vm.Nodes.Add(elbowViewModel); } } if (rhs.Threelinks != null && rhs.Threelinks.Count > 0) { foreach (var threelink in rhs.Threelinks) { var threelinkViewModel = new JunctionViewModel(); threelinkViewModel.ID = threelink.Code; threelinkViewModel.Name = threelink.Name; threelinkViewModel.Position3D = new PointF3D((float)threelink.Position3d.X, (float)threelink.Position3d.Y, (float)threelink.Position3d.Z); vm.Nodes.Add(threelinkViewModel); } } if (rhs.Fourlinks != null && rhs.Fourlinks.Count > 0) { foreach (var fourlink in rhs.Fourlinks) { var fourlinkViewModel = new JunctionViewModel(); fourlinkViewModel.ID = fourlink.Code; fourlinkViewModel.Name = fourlink.Name; fourlinkViewModel.Position3D = new PointF3D((float)fourlink.Position3d.X, (float)fourlink.Position3d.Y, (float)fourlink.Position3d.Z); vm.Nodes.Add(fourlinkViewModel); } } if (rhs.Meters != null && rhs.Meters.Count > 0) { foreach (var meter in rhs.Meters) { var meterViewModel = new MeterViewModel(); meterViewModel.ID = meter.Code; meterViewModel.Name = meter.Name; meterViewModel.Position3D = new PointF3D((float)meter.Position3d.X, (float)meter.Position3d.Y, (float)meter.Position3d.Z); vm.Nodes.Add(meterViewModel); } } if (rhs.Flowmeters != null && rhs.Flowmeters.Count > 0) { foreach (var flowmeter in rhs.Flowmeters) { var flowmeterViewModel = new JunctionViewModel(); flowmeterViewModel.ID = flowmeter.Code; flowmeterViewModel.Name = flowmeter.Name; flowmeterViewModel.Position3D = new PointF3D((float)flowmeter.Position3d.X, (float)flowmeter.Position3d.Y, (float)flowmeter.Position3d.Z); vm.Nodes.Add(flowmeterViewModel); } } if (rhs.Pressmeters != null && rhs.Pressmeters.Count > 0) { foreach (var pressmeter in rhs.Pressmeters) { var pressmeterViewModel = new JunctionViewModel(); pressmeterViewModel.ID = pressmeter.Code; pressmeterViewModel.Name = pressmeter.Name; pressmeterViewModel.Position3D = new PointF3D((float)pressmeter.Position3d.X, (float)pressmeter.Position3d.Y, (float)pressmeter.Position3d.Z); vm.Nodes.Add(pressmeterViewModel); } } if (rhs.Bluntheads != null && rhs.Bluntheads.Count > 0) { foreach (var blunthead in rhs.Bluntheads) { var bluntheadViewModel = new JunctionViewModel(); bluntheadViewModel.ID = blunthead.Code; bluntheadViewModel.Name = blunthead.Name; bluntheadViewModel.Position3D = new PointF3D((float)blunthead.Position3d.X, (float)blunthead.Position3d.Y, (float)blunthead.Position3d.Z); vm.Nodes.Add(bluntheadViewModel); } } if (rhs.Reservoirs != null && rhs.Reservoirs.Count > 0) { foreach (var reservoir in rhs.Reservoirs) { var reservoirViewModel = new ReservoirViewModel(); reservoirViewModel.ID = reservoir.Code; reservoirViewModel.Name = reservoir.Name; reservoirViewModel.Position3D = new PointF3D((float)reservoir.Position3d.X, (float)reservoir.Position3d.Y, (float)reservoir.Position3d.Z); vm.Nodes.Add(reservoirViewModel); } } if (rhs.Tanks != null && rhs.Tanks.Count > 0) { foreach (var tank in rhs.Tanks) { var tankViewModel = new TankViewModel(); tankViewModel.ID = tank.Code; tankViewModel.Name = tank.Name; tankViewModel.Position3D = new PointF3D((float)tank.Position3d.X, (float)tank.Position3d.Y, (float)tank.Position3d.Z); vm.Nodes.Add(tankViewModel); } } if (rhs.Waterboxs != null && rhs.Waterboxs.Count > 0) { foreach (var waterbox in rhs.Waterboxs) { var waterboxViewModel = new TankViewModel(); waterboxViewModel.ID = waterbox.Code; waterboxViewModel.Name = waterbox.Name; waterboxViewModel.Position3D = new PointF3D((float)waterbox.Position3d.X, (float)waterbox.Position3d.Y, (float)waterbox.Position3d.Z); vm.Nodes.Add(waterboxViewModel); } } if (rhs.Pipes != null && rhs.Pipes.Count > 0) { foreach (var pipe in rhs.Pipes) { var pipeViewModel = new PipeViewModel(); pipeViewModel.ID = pipe.Code; pipeViewModel.Name = pipe.Name; pipeViewModel.StartNode = vm.Nodes.Find(x => x.ID == pipe.StartCode); pipeViewModel.EndNode = vm.Nodes.Find(x => x.ID == pipe.EndCode); vm.Links.Add(pipeViewModel); } } if (rhs.Translations != null && rhs.Translations.Count > 0) { foreach (var translation in rhs.Translations) { var translationViewModel = new PipeViewModel(); translationViewModel.ID = translation.Code; translationViewModel.Name = translation.Name; translationViewModel.StartNode = vm.Nodes.Find(x => x.ID == translation.StartCode); translationViewModel.EndNode = vm.Nodes.Find(x => x.ID == translation.EndCode); vm.Links.Add(translationViewModel); } } if (rhs.Exchangers != null && rhs.Exchangers.Count > 0) { foreach (var exchanger in rhs.Exchangers) { var exchangerViewModel = new PipeViewModel(); exchangerViewModel.ID = exchanger.Code; exchangerViewModel.Name = exchanger.Name; exchangerViewModel.StartNode = vm.Nodes.Find(x => x.ID == exchanger.StartCode); exchangerViewModel.EndNode = vm.Nodes.Find(x => x.ID == exchanger.EndCode); vm.Links.Add(exchangerViewModel); } } if (rhs.Pumps != null && rhs.Pumps.Count > 0) { foreach (var pump in rhs.Pumps) { var pumpViewModel = new PumpViewModel(); pumpViewModel.ID = pump.Code; pumpViewModel.Name = pump.Name; pumpViewModel.StartNode = vm.Nodes.Find(x => x.ID == pump.StartCode); pumpViewModel.EndNode = vm.Nodes.Find(x => x.ID == pump.EndCode); vm.Links.Add(pumpViewModel); } } if (rhs.Valves != null && rhs.Valves.Count > 0) { foreach (var valve in rhs.Valves) { var valveViewModel = new ValveViewModel(); valveViewModel.ID = valve.Code; valveViewModel.Name = valve.Name; valveViewModel.StartNode = vm.Nodes.Find(x => x.ID == valve.StartCode); valveViewModel.EndNode = vm.Nodes.Find(x => x.ID == valve.EndCode); vm.Links.Add(valveViewModel); } } return vm; } /// /// 转换 /// /// 模型信息 /// public static object Transfer(Yw.Model.HydroModelInfo info) { if (info == null) { return default; } //var netWork = new HyView.MapViewNetWork(); //netWork.Nodes = new HyView.NodeViewModelList(); //netWork.Links = new HyView.LinkViewModelList(); //连接节点 if (info.Junctions != null && info.Junctions.Count > 0) { foreach (var junction in info.Junctions) { //var junctionModel = new HyView.JunctionViewModel(); //junctionModel.ID = junction.Code; //junctionModel.Name = junction.Name; //junctionModel.X = (float)junction.Position3d.X; //junctionModel.Y = (float)junction.Position3d.Y; ////junctionModel.Z = (float)junction.Position3d.Z; //junctionModel.Position3D = new HyView.PointF3D((float)junction.Position3d.X, (float)junction.Position3d.Y, (float)junction.Position3d.Z); //junctionModel.Elev = (float)junction.Elev; //junctionModel.Demand = junction.Demand.HasValue ? (float)junction.Demand.Value : 0; //junctionModel.PatternID = junction.DemandPattern; ////junctionModel.Status = StatusType.DEFAULT; //netWork.Nodes.Add(junctionModel); //netWork.Nodes.Add(junctionModel); } } //水库 if (info.Reservoirs != null && info.Reservoirs.Count > 0) { foreach (var reservoir in info.Reservoirs) { //var reservoirModel = new HyView.ReservoirViewModel(); //reservoirModel.ID = reservoir.Code; //reservoirModel.Name = reservoir.Name; //reservoirModel.X = (float)reservoir.Position3d.X; //reservoirModel.Y = (float)reservoir.Position3d.Y; ////reservoirModel.Z = (float)reservoir.Position3d.Z; //reservoirModel.Demand = 0; //reservoirModel.Head = (float)reservoir.Head; //reservoirModel.PatternID = reservoir.HeadPattern; //reservoirModel.Position3D = new HyView.PointF3D((float)reservoir.Position3d.X, (float)reservoir.Position3d.Y, (float)reservoir.Position3d.Z); //netWork.Nodes.Add(reservoirModel); } } //水池 if (info.Tanks != null && info.Tanks.Count > 0) { foreach (var tank in info.Tanks) { //var tankModel = new HyView.TankViewModel(); //tankModel.ID = tank.Code; //tankModel.Name = tank.Name; //tankModel.X = (float)tank.Position3d.X; //tankModel.Y = (float)tank.Position3d.Y; ////tankModel.Z = (float)tank.Position3d.Z; //tankModel.Demand = 0; //tankModel.Diameter = (float)tank.Diameter; //tankModel.Elev = (float)tank.PoolElev; //tankModel.InitLevel = (float)tank.InitLevel; //tankModel.MinLevel = (float)tank.MinLevel; //tankModel.MaxLevel = (float)tank.MaxLevel; //tankModel.MinVol = (float)tank.MinVol; //tankModel.VolCurve = tank.VolCurve; //tankModel.Position3D = new HyView.PointF3D((float)tank.Position3d.X, (float)tank.Position3d.Y, (float)tank.Position3d.Z); //netWork.Nodes.Add(tankModel); } } //管道 if (info.Pipes != null && info.Pipes.Count > 0) { foreach (var pipe in info.Pipes) { //var pipeModel = new HyView.PipeViewModel(); //pipeModel.ID = pipe.Code; //pipeModel.Name = pipe.Name; //// pipeModel.Status = StatusType.OPEN; //pipeModel.StartNode = netWork.Nodes.Find(x => x.ID == pipe.StartCode); //pipeModel.EndNode = netWork.Nodes.Find(x => x.ID == pipe.EndCode); //pipeModel.Diameter = (float)pipe.Diameter; //pipeModel.Length = (float)pipe.Length; //pipeModel.Roughness = (float)pipe.Roughness; //pipeModel.MinorLoss = (float)pipe.MinorLoss; //netWork.Links.Add(pipeModel); } } //水泵 if (info.Pumps != null && info.Pumps.Count > 0) { foreach (var pump in info.Pumps) { //var pumpModel = new HyView.PumpViewModel(); //pumpModel.ID = pump.Code; //pumpModel.Name = pump.Name; ////pumpModel.Status = StatusType.OPEN; //pumpModel.StartNode = netWork.Nodes.Find(x => x.ID == pump.StartCode); //pumpModel.EndNode = netWork.Nodes.Find(x => x.ID == pump.EndCode); //pumpModel.HeadCurve = pump.CurveQH; //netWork.Links.Add(pumpModel); } } //阀门 if (info.Valves != null && info.Valves.Count > 0) { foreach (var valve in info.Valves) { //var valveModel = new HyView.ValveViewModel(); //valveModel.ID = valve.Code; //valveModel.Name = valve.Name; ////valveModel.Status = StatusType.OPEN; //valveModel.StartNode = netWork.Nodes.Find(x => x.ID == valve.StartCode); //valveModel.EndNode = netWork.Nodes.Find(x => x.ID == valve.EndCode); //valveModel.Diameter = (float)valve.Diameter; //valveModel.Type = valve.ValveType; //valveModel.Setting = valve.ValveSetting; //netWork.Links.Add(valveModel); } } return default; } } }