From 7b4b2eb7dd57c29a4b3a75de8234ff9afcbe18d4 Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期三, 08 一月 2025 15:13:33 +0800 Subject: [PATCH] 水力业务图表 根据运行点延长 --- Service/HStation.Service.Revit.Core/04-service/02-correct/RevitCorrectHelper.cs | 330 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 260 insertions(+), 70 deletions(-) diff --git a/Service/HStation.Service.Revit.Core/04-service/02-correct/RevitCorrectHelper.cs b/Service/HStation.Service.Revit.Core/04-service/02-correct/RevitCorrectHelper.cs index 6651f73..21ee6af 100644 --- a/Service/HStation.Service.Revit.Core/04-service/02-correct/RevitCorrectHelper.cs +++ b/Service/HStation.Service.Revit.Core/04-service/02-correct/RevitCorrectHelper.cs @@ -33,6 +33,10 @@ {//淇鎹㈢儹鍣� result = false; } + if (!CorrectCompressor(rhs, ref msgList)) + {//淇绌哄帇鏈� + result = false; + } if (!CorrectCode(rhs, ref msgList)) {//淇缂栫爜 result = false; @@ -88,6 +92,14 @@ {//鍥涢�� rhs.Fourlinks = new List<Model.RevitFourlink>(); } + if (rhs.Nozzles == null) + {//鍠峰ご + rhs.Nozzles = new List<Model.RevitNozzle>(); + } + if (rhs.Hydrants == null) + {//娑堢伀鏍� + rhs.Hydrants = new List<Model.RevitHydrant>(); + } if (rhs.Meters == null) {//姘磋〃 rhs.Meters = new List<RevitMeter>(); @@ -100,14 +112,6 @@ {//鍘嬪姏琛� rhs.Pressmeters = new List<Model.RevitPressmeter>(); } - if (rhs.Nozzles == null) - {//鍠峰ご - rhs.Nozzles = new List<Model.RevitNozzle>(); - } - if (rhs.Hydrants == null) - {//娑堢伀鏍� - rhs.Hydrants = new List<Model.RevitHydrant>(); - } if (rhs.Pipes == null) {//绠¢亾 @@ -117,10 +121,6 @@ {//杩囨浮浠� rhs.Translations = new List<Model.RevitTranslation>(); } - if (rhs.Exchangers == null) - {//鎹㈢儹鍣� - rhs.Exchangers = new List<RevitExchanger>(); - } if (rhs.Pumps == null) {//姘存车 rhs.Pumps = new List<Model.RevitPump>(); @@ -128,6 +128,14 @@ if (rhs.Valves == null) {//闃�闂� rhs.Valves = new List<Model.RevitValve>(); + } + if (rhs.Exchangers == null) + {//鎹㈢儹鍣� + rhs.Exchangers = new List<RevitExchanger>(); + } + if (rhs.Compressors == null) + {//绌哄帇鏈� + rhs.Compressors = new List<RevitCompressor>(); } return true; } @@ -273,6 +281,19 @@ } } } + if (rhs.Coolings != null && rhs.Coolings.Count > 0) + {//鍐峰嵈濉� + var coolingNameList = rhs.Coolings.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList(); + foreach (var cooling in rhs.Coolings) + { + if (string.IsNullOrEmpty(cooling.Name)) + { + var coolingName = Yw.Untity.UniqueHelper.CreateFromFirst("鍐峰嵈濉�", coolingNameList); + cooling.Name = coolingName; + coolingNameList.Add(coolingName); + } + } + } if (rhs.Meters != null && rhs.Meters.Count > 0) {//姘磋〃 var meterNameList = rhs.Meters.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList(); @@ -338,19 +359,6 @@ } } } - if (rhs.Exchangers != null && rhs.Exchangers.Count > 0) - {//鎹㈢儹鍣� - var exchangerNameList = rhs.Exchangers.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList(); - foreach (var exchanger in rhs.Exchangers) - { - if (string.IsNullOrEmpty(exchanger.Name)) - { - var exchangerName = Yw.Untity.UniqueHelper.CreateFromFirst("鎹㈢儹鍣�", exchangerNameList); - exchanger.Name = exchangerName; - exchangerNameList.Add(exchangerName); - } - } - } if (rhs.Pumps != null && rhs.Pumps.Count > 0) {//姘存车 var pumpNameList = rhs.Pumps.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList(); @@ -374,6 +382,32 @@ var valveName = Yw.Untity.UniqueHelper.CreateFromFirst("闃�闂�", valveNameList); valve.Name = valveName; valveNameList.Add(valveName); + } + } + } + if (rhs.Exchangers != null && rhs.Exchangers.Count > 0) + {//鎹㈢儹鍣� + var exchangerNameList = rhs.Exchangers.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList(); + foreach (var exchanger in rhs.Exchangers) + { + if (string.IsNullOrEmpty(exchanger.Name)) + { + var exchangerName = Yw.Untity.UniqueHelper.CreateFromFirst("鎹㈢儹鍣�", exchangerNameList); + exchanger.Name = exchangerName; + exchangerNameList.Add(exchangerName); + } + } + } + if (rhs.Compressors != null && rhs.Compressors.Count > 0) + {//绌哄帇鏈� + var compressorNameList = rhs.Compressors.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList(); + foreach (var compressor in rhs.Compressors) + { + if (string.IsNullOrEmpty(compressor.Name)) + { + var compressorName = Yw.Untity.UniqueHelper.CreateFromFirst("绌哄帇鏈�", compressorNameList); + compressor.Name = compressorName; + compressorNameList.Add(compressorName); } } } @@ -414,7 +448,6 @@ { var decorator = new Model.RevitDecorator(); decorator.Id = blunthead.Id; - decorator.Code = blunthead.Code; decorator.Name = blunthead.Name; decorator.Category = RevitJsonCatalog.Blunthead; decorator.Decoration = null; @@ -441,24 +474,22 @@ } if (startConnectList.Count < 1) { - msgList.Add($"鎹㈢儹鍣╗{exchanger.Code}]涓婃父杩炴帴缁勪欢涓嶅瓨鍦�"); + msgList.Add($"鎹㈢儹鍣╗{exchanger.Id}]涓婃父杩炴帴缁勪欢涓嶅瓨鍦�"); result = false; continue; } + var startJunction = new Model.RevitJunction(); - startJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Code).ToList()); - startJunction.Code = startJunction.Id; + startJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList()); startJunction.Name = UniqueHelper.CreateFromFirst("杩炴帴鑺傜偣", allParterList.Select(x => x.Name).Distinct().ToList()); startJunction.Flags = null; startJunction.ModelType = null; startJunction.Description = "鎹㈢儹鍣ㄤ慨姝f椂锛岃嚜鍔ㄦ坊鍔�"; - startJunction.Quality = exchanger.StartQuality; startJunction.Position = startConnectList.GetCenterPosition(); - startJunction.Elev = exchanger.StartElev; - startJunction.Demand = null; + startJunction.Elev = exchanger.Elev; + startJunction.Demand = 0; startJunction.DemandPattern = null; - rhs.Junctions.Add(startJunction); - exchanger.StartCode = startJunction.Code; + foreach (var startConnect in startConnectList) { var startConnectParter = allParterList.Find(x => x.Id == startConnect.Id); @@ -472,9 +503,15 @@ { revitLink.EndCode = startJunction.Id; } + if (!rhs.Junctions.Exists(t => t.Id == startJunction.Id)) + { + rhs.Junctions.Add(startJunction); + exchanger.StartCode = startJunction.Id; + allParterList.Add(startJunction); + } } } - allParterList.Add(startJunction); + #endregion @@ -491,24 +528,22 @@ } if (endConnectList.Count < 1) { - msgList.Add($"鎹㈢儹鍣╗{exchanger.Code}]涓嬫父杩炴帴缁勪欢涓嶅瓨鍦�"); + msgList.Add($"鎹㈢儹鍣╗{exchanger.Id}]涓嬫父杩炴帴缁勪欢涓嶅瓨鍦�"); result = false; continue; } + var endJunction = new Model.RevitJunction(); - endJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Code).ToList()); - endJunction.Code = endJunction.Id; + endJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList()); endJunction.Name = UniqueHelper.CreateFromFirst("杩炴帴鑺傜偣", allParterList.Select(x => x.Name).Distinct().ToList()); endJunction.Flags = null; endJunction.ModelType = null; endJunction.Description = "鎹㈢儹鍣ㄤ慨姝f椂锛岃嚜鍔ㄦ坊鍔�"; - endJunction.Quality = exchanger.EndQuality; endJunction.Position = endConnectList.GetCenterPosition(); - endJunction.Elev = exchanger.EndElev; - endJunction.Demand = null; + endJunction.Elev = exchanger.Elev; + endJunction.Demand = 0; endJunction.DemandPattern = null; - rhs.Junctions.Add(endJunction); - exchanger.EndCode = endJunction.Code; + foreach (var endConnect in endConnectList) { var endConnectParter = allParterList.Find(x => x.Id == endConnect.Id); @@ -522,6 +557,165 @@ { revitLink.EndCode = endJunction.Id; } + if (!rhs.Junctions.Exists(t => t.Id == endJunction.Id)) + { + rhs.Junctions.Add(endJunction); + exchanger.EndCode = endJunction.Id; + allParterList.Add(endJunction); + } + } + } + + + #endregion + } + else + { + msgList.Add($"鎹㈢儹鍣╗{exchanger.Id}]杩炴帴鍒楄〃涓虹┖"); + result = false; + } + } + } + return result; + } + + //淇绌哄帇鏈� + private static bool CorrectCompressor(Model.RevitModel rhs, ref List<string> msgList) + { + if (rhs == null) + { + return false; + } + if (msgList == null) + { + msgList = new List<string>(); + } + var result = true; + if (rhs.Compressors != null && rhs.Compressors.Count > 0) + { + var allParterList = rhs.GetAllParters(); + foreach (var compressor in rhs.Compressors) + { + if (compressor.ConnectList != null && compressor.ConnectList.Count > 0) + { + #region 鍘婚櫎鏃犳晥杩炴帴鍜岄椃澶� + + foreach (var connect in compressor.ConnectList.ToList()) + { + var connectParter = allParterList.Find(x => x.Id == connect.Id); + if (connectParter == null) + { + compressor.ConnectList.Remove(connect); + } + else + { + if (connectParter is RevitBlunthead blunthead) + { + var decorator = new Model.RevitDecorator(); + decorator.Id = blunthead.Id; + decorator.Name = blunthead.Name; + decorator.Category = RevitJsonCatalog.Blunthead; + decorator.Decoration = null; + decorator.Description = blunthead.Description; + rhs.Decorators.Add(decorator); + rhs.Bluntheads.Remove(blunthead); + allParterList.Remove(connectParter); + } + } + } + + #endregion + + #region 寮�濮嬭繛鎺� + + var startConnectList = compressor.ConnectList.GetStartConnects(); + if (startConnectList.Count < 1) + { + var startConnect = compressor.ConnectList.GetStartConnect(); + if (startConnect != null) + { + startConnectList.Add(startConnect); + } + } + if (startConnectList.Count < 1) + { + msgList.Add($"绌哄帇鏈篬{compressor.Id}]涓婃父杩炴帴缁勪欢涓嶅瓨鍦�"); + result = false; + continue; + } + var startJunction = new Model.RevitJunction(); + startJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList()); + startJunction.Name = UniqueHelper.CreateFromFirst("杩炴帴鑺傜偣", allParterList.Select(x => x.Name).Distinct().ToList()); + startJunction.Flags = null; + startJunction.ModelType = null; + startJunction.Description = "绌哄帇鏈轰慨姝f椂锛岃嚜鍔ㄦ坊鍔�"; + startJunction.Position = startConnectList.GetCenterPosition(); + startJunction.Elev = compressor.Elev; + startJunction.Demand = 0; + startJunction.DemandPattern = null; + rhs.Junctions.Add(startJunction); + compressor.StartCode = startJunction.Id; + foreach (var startConnect in startConnectList) + { + var startConnectParter = allParterList.Find(x => x.Id == startConnect.Id); + if (startConnectParter is RevitLink revitLink) + { + if (revitLink.StartCode == compressor.Id) + { + revitLink.StartCode = startJunction.Id; + } + else if (revitLink.EndCode == compressor.Id) + { + revitLink.EndCode = startJunction.Id; + } + } + } + allParterList.Add(startJunction); + + #endregion + + #region 缁撴潫杩炴帴 + + var endConnectList = compressor.ConnectList.GetEndConnects(); + if (endConnectList.Count < 1) + { + var endConnect = compressor.ConnectList.GetEndConnect(); + if (endConnect != null) + { + endConnectList.Add(endConnect); + } + } + if (endConnectList.Count < 1) + { + msgList.Add($"绌哄帇鏈篬{compressor.Id}]涓嬫父杩炴帴缁勪欢涓嶅瓨鍦�"); + result = false; + continue; + } + var endJunction = new Model.RevitJunction(); + endJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList()); + endJunction.Name = UniqueHelper.CreateFromFirst("杩炴帴鑺傜偣", allParterList.Select(x => x.Name).Distinct().ToList()); + endJunction.Flags = null; + endJunction.ModelType = null; + endJunction.Description = "绌哄帇鏈轰慨姝f椂锛岃嚜鍔ㄦ坊鍔�"; + endJunction.Position = endConnectList.GetCenterPosition(); + endJunction.Elev = compressor.Elev; + endJunction.Demand = 0; + endJunction.DemandPattern = null; + rhs.Junctions.Add(endJunction); + compressor.EndCode = endJunction.Id; + foreach (var endConnect in endConnectList) + { + var endConnectParter = allParterList.Find(x => x.Id == endConnect.Id); + if (endConnectParter is RevitLink revitLink) + { + if (revitLink.StartCode == compressor.Id) + { + revitLink.StartCode = endJunction.Id; + } + else if (revitLink.EndCode == compressor.Id) + { + revitLink.EndCode = endJunction.Id; + } } } allParterList.Add(endJunction); @@ -530,7 +724,7 @@ } else { - msgList.Add($"鎹㈢儹鍣╗{exchanger.Code}]杩炴帴鍒楄〃涓虹┖"); + msgList.Add($"绌哄帇鏈篬{compressor.Id}]杩炴帴鍒楄〃涓虹┖"); result = false; } } @@ -557,23 +751,23 @@ var startLinkParter = allParterList.Find(x => x.Id == link.StartCode); if (startLinkParter == null) { - msgList.Add($"绠℃:[{link.Code}]涓婃父鑺傜偣閿欒"); + msgList.Add($"绠℃:[{link.Id}]涓婃父鑺傜偣[{link.StartCode}]閿欒"); result = false; } else { - link.StartCode = startLinkParter.Code; + link.StartCode = startLinkParter.Id; } var endLinkParter = allParterList.Find(x => x.Id == link.EndCode); if (endLinkParter == null) { - msgList.Add($"绠℃:[{link.Code}]涓嬫父鑺傜偣閿欒"); + msgList.Add($"绠℃:[{link.Id}]涓嬫父鑺傜偣[{link.EndCode}]閿欒"); result = false; } else { - link.EndCode = endLinkParter.Code; + link.EndCode = endLinkParter.Id; } } @@ -595,59 +789,55 @@ var allLinks = rhs.GetAllLinks(); foreach (var link in allLinks) { - var startLinkParter = allParterList.Find(x => x.Code == link.StartCode); + var startLinkParter = allParterList.Find(x => x.Id == link.StartCode); if (startLinkParter is RevitLink startLink) { var junction = new Model.RevitJunction(); - junction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Code).ToList()); - junction.Code = junction.Id; + junction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList()); junction.Name = UniqueHelper.CreateFromFirst("杩炴帴鑺傜偣", allParterList.Select(x => x.Name).Distinct().ToList()); junction.Flags = null; junction.ModelType = null; junction.Description = "姘村姏淇鏃讹紝鑷姩娣诲姞"; - junction.Quality = link.StartQuality; junction.Position = link.StartPosition; - junction.Elev = link.StartElev; - junction.Demand = null; + junction.Elev = link.StartPosition.Z; + junction.Demand = 0; junction.DemandPattern = null; rhs.Junctions.Add(junction); - link.StartCode = junction.Code; + link.StartCode = junction.Id; - if (startLink.StartCode == link.Code) + if (startLink.StartCode == link.Id) { - startLink.StartCode = junction.Code; + startLink.StartCode = junction.Id; } - else if (startLink.EndCode == link.Code) + else if (startLink.EndCode == link.Id) { - startLink.EndCode = junction.Code; + startLink.EndCode = junction.Id; } allParterList.Add(junction); } - var endLinkParter = allParterList.Find(x => x.Code == link.EndCode); + var endLinkParter = allParterList.Find(x => x.Id == link.EndCode); if (endLinkParter is RevitLink endLink) { var junction = new Model.RevitJunction(); - junction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Code).ToList()); - junction.Code = junction.Id; + junction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList()); junction.Name = UniqueHelper.CreateFromFirst("杩炴帴鑺傜偣", allParterList.Select(x => x.Name).Distinct().ToList()); junction.Flags = null; junction.ModelType = null; junction.Description = "姘村姏淇鏃讹紝鑷姩娣诲姞"; - junction.Quality = link.EndQuality; junction.Position = link.EndPosition; - junction.Elev = link.EndElev; - junction.Demand = null; + junction.Elev = link.EndPosition.Z; + junction.Demand = 0; junction.DemandPattern = null; rhs.Junctions.Add(junction); - link.EndCode = junction.Code; - if (endLink.StartCode == link.Code) + link.EndCode = junction.Id; + if (endLink.StartCode == link.Id) { - endLink.StartCode = junction.Code; + endLink.StartCode = junction.Id; } - else if (endLink.EndCode == link.Code) + else if (endLink.EndCode == link.Id) { - endLink.EndCode = junction.Code; + endLink.EndCode = junction.Id; } allParterList.Add(junction); } -- Gitblit v1.9.3