| | |
| | | using System.IO.Pipes; |
| | | using System.Transactions; |
| | | using System.Transactions; |
| | | |
| | | namespace HStation.Service |
| | | { |
| | |
| | | } |
| | | } |
| | | break; |
| | | case RevitJsonCatalog.Compressor: |
| | | { |
| | | var compressor = ParseCompressor(jobject); |
| | | if (compressor != null) |
| | | { |
| | | model.Compressors.Add(compressor); |
| | | } |
| | | } |
| | | break; |
| | | case RevitJsonCatalog.Pump: |
| | | { |
| | | var pump = ParsePump(jobject); |
| | |
| | | /// <summary> |
| | | /// 从json文件中解析 |
| | | /// </summary> |
| | | public static Model.RevitModel FromJsonFile(string revitJsonFile, string revitOthersJsonFile, out string msg) |
| | | public static Model.RevitModel FromJsonFile |
| | | ( |
| | | string revitJsonFile, |
| | | string revitOthersJsonFile, |
| | | out string msg |
| | | ) |
| | | { |
| | | if (!File.Exists(revitJsonFile)) |
| | | { |
| | |
| | | } |
| | | |
| | | var junction = new Model.RevitJunction(); |
| | | junction.Catalog = RevitJsonCatalog.Junction; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var nozzle = new Model.RevitNozzle(); |
| | | nozzle.Catalog = RevitJsonCatalog.Nozzle; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var hydrant = new Model.RevitHydrant(); |
| | | hydrant.Catalog = RevitJsonCatalog.Hydrant; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var blunthead = new Model.RevitBlunthead(); |
| | | blunthead.Catalog = RevitJsonCatalog.Blunthead; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var elbow = new Model.RevitElbow(); |
| | | elbow.Catalog = RevitJsonCatalog.Elbow; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var threelink = new Model.RevitThreelink(); |
| | | threelink.Catalog = RevitJsonCatalog.Threelink; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var fourlink = new Model.RevitFourlink(); |
| | | fourlink.Catalog = RevitJsonCatalog.Fourlink; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var meter = new Model.RevitMeter(); |
| | | meter.Catalog = RevitJsonCatalog.Meter; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var flowmeter = new Model.RevitFlowmeter(); |
| | | flowmeter.Catalog = RevitJsonCatalog.Flowmeter; |
| | | |
| | | #region Id |
| | | |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region Flow |
| | | |
| | | if (jobject[RevitJsonProp.Flow].MatchNumeric(out double flow)) |
| | | { |
| | | flowmeter.CurrentFlow = flow; |
| | | } |
| | | else |
| | | { |
| | | flowmeter.AppendOrUpdatePropStatus(nameof(flowmeter.CurrentFlow), ePropStatus.Abnormal, "[流量]缺少或者数据格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | return flowmeter; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | var pressmeter = new Model.RevitPressmeter(); |
| | | pressmeter.Catalog = RevitJsonCatalog.Pressmeter; |
| | | |
| | | #region Id |
| | | |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region Press |
| | | |
| | | if (jobject[RevitJsonProp.Press].MatchNumeric(out double press)) |
| | | { |
| | | pressmeter.CurrentPress = press; |
| | | } |
| | | else |
| | | { |
| | | pressmeter.AppendOrUpdatePropStatus(nameof(pressmeter.CurrentPress), ePropStatus.Abnormal, "[压力]缺少或者数据格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | return pressmeter; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | var reservoir = new Model.RevitReservoir(); |
| | | reservoir.Catalog = RevitJsonCatalog.Reservoir; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var tank = new Model.RevitTank(); |
| | | tank.Catalog = RevitJsonCatalog.Tank; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var waterbox = new Model.RevitWaterbox(); |
| | | waterbox.Catalog = RevitJsonCatalog.Waterbox; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var pipe = new Model.RevitPipe(); |
| | | pipe.Catalog = RevitJsonCatalog.Pipe; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var translation = new Model.RevitTranslation(); |
| | | translation.Catalog = RevitJsonCatalog.Translation; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | |
| | | var exchanger = new Model.RevitExchanger(); |
| | | exchanger.Catalog = RevitJsonCatalog.Exchanger; |
| | | |
| | | #region Id |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Id), ePropStatus.Error, "缺少[构件编码]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Id), ePropStatus.Error, "[换热器]缺少[构件编码]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | if (string.IsNullOrEmpty(exchanger.Code)) |
| | | { |
| | | exchanger.Code = exchanger.Id; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Code), ePropStatus.Lack, "使用[构件编码]赋值"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Code), ePropStatus.Lack, "[换热器][编码]缺省,使用[构件编码]赋值"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Code), ePropStatus.Error, "缺少[编码]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Code), ePropStatus.Error, "[换热器]缺少[编码]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | if (jobject.ParseString(RevitJsonProp.Name, out string name)) |
| | | { |
| | | exchanger.Name = name; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Name), ePropStatus.Lack, "[名称]缺省"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Name), ePropStatus.Lack, "[换热器][名称]缺省"); |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Name), ePropStatus.Error, "缺少[名称]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Name), ePropStatus.Error, "[换热器]缺少[名称]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | exchanger.ModelType = modelType; |
| | | if (string.IsNullOrEmpty(exchanger.ModelType)) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.ModelType), ePropStatus.Lack, "[型号信息]缺省"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.ModelType), ePropStatus.Lack, "[换热器][型号信息]缺省"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.ModelType), ePropStatus.Error, "缺少[型号信息]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.ModelType), ePropStatus.Error, "[换热器]缺少[型号信息]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | { |
| | | if (exchanger.Flags == null || exchanger.Flags.Count < 1) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Flags), ePropStatus.Abnormal, "[标签]格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Flags), ePropStatus.Abnormal, "[换热器][标签]格式错误"); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Flags), ePropStatus.Error, "缺少[标签]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Flags), ePropStatus.Error, "[换热器]缺少[标签]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Description), ePropStatus.Error, "缺少[说明信息]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Description), ePropStatus.Error, "[换热器]缺少[说明信息]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | }).ToList(); |
| | | if (exchanger.ConnectList == null || exchanger.ConnectList.Count < 1) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.ConnectList), ePropStatus.Error, "[连接列表]解析失败"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.ConnectList), ePropStatus.Error, "[换热器][连接列表]解析失败"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.ConnectList), ePropStatus.Error, "缺少[连接列表]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.ConnectList), ePropStatus.Error, "[换热器]缺少[连接列表]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | exchanger.StartCode = startConnect?.Id; |
| | | if (string.IsNullOrEmpty(exchanger.StartCode)) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartCode), ePropStatus.Error, "[上游构件]受[连接列表]影响解析错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartCode), ePropStatus.Error, "[换热器][上游构件]受[连接列表]影响解析错误"); |
| | | } |
| | | exchanger.StartPosition = startConnect?.Position; |
| | | if (exchanger.StartPosition == null) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartPosition), ePropStatus.Error, "[上游构件位置]受[连接列表]影响解析错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartPosition), ePropStatus.Error, "[换热器][上游构件位置]受[连接列表]影响解析错误"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | exchanger.EndCode = endConnect?.Id; |
| | | if (string.IsNullOrEmpty(exchanger.EndCode)) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndCode), ePropStatus.Error, "[下游构件]受[连接列表]影响解析错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndCode), ePropStatus.Error, "[换热器][下游构件]受[连接列表]影响解析错误"); |
| | | } |
| | | exchanger.EndPosition = endConnect?.Position; |
| | | if (exchanger.EndPosition == null) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndPosition), ePropStatus.Error, "[下游构件位置]受[连接列表]影响解析错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndPosition), ePropStatus.Error, "[换热器][下游构件位置]受[连接列表]影响解析错误"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | if (string.IsNullOrEmpty(exchanger.LinkStatus)) |
| | | { |
| | | exchanger.LinkStatus = PipeStatus.Open; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.LinkStatus), ePropStatus.Lack, "[管道状态]缺省"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.LinkStatus), ePropStatus.Lack, "[换热器][管道状态]缺省"); |
| | | } |
| | | else |
| | | { |
| | | if (!PipeStatus.Contains(exchanger.LinkStatus)) |
| | | { |
| | | exchanger.LinkStatus = PipeStatus.Open; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.LinkStatus), ePropStatus.Abnormal, "[管道状态]设置错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.LinkStatus), ePropStatus.Abnormal, "[换热器][管道状态]设置错误"); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | exchanger.LinkStatus = PipeStatus.Open; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.LinkStatus), ePropStatus.Abnormal, "[管道状态]缺少或格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.LinkStatus), ePropStatus.Abnormal, "[换热器][管道状态]缺少或格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartElev), ePropStatus.Abnormal, "[上游标高]缺少或格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartElev), ePropStatus.Abnormal, "[换热器][上游标高]缺少或格式错误"); |
| | | } |
| | | |
| | | if (exchanger.StartElev <= 0) |
| | |
| | | //通过z轴自动计算 |
| | | if (exchanger.StartPosition == null) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartElev), ePropStatus.Lack, "[上游标高]缺省,受[上游构件位置]影响,无法通过Z轴自动计算"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartElev), ePropStatus.Lack, "[换热器][上游标高]缺省,受[上游构件位置]影响,无法通过Z轴自动计算"); |
| | | } |
| | | else |
| | | { |
| | | exchanger.StartElev = exchanger.StartPosition.Z; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartElev), ePropStatus.Lack, "[上游标高]缺省,通过Z轴自动计算"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartElev), ePropStatus.Lack, "[换热器][上游标高]缺省,通过Z轴自动计算"); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndElev), ePropStatus.Abnormal, "[下游标高]缺少或格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndElev), ePropStatus.Abnormal, "[换热器][下游标高]缺少或格式错误"); |
| | | } |
| | | |
| | | if (exchanger.EndElev <= 0) |
| | |
| | | //通过z轴自动计算 |
| | | if (exchanger.EndPosition == null) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndElev), ePropStatus.Lack, "[下游标高]缺省,受[下游构件位置]影响,无法通过Z轴自动计算"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndElev), ePropStatus.Lack, "[换热器][下游标高]缺省,受[下游构件位置]影响,无法通过Z轴自动计算"); |
| | | } |
| | | else |
| | | { |
| | | exchanger.EndElev = exchanger.EndPosition.Z; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndElev), ePropStatus.Lack, "[下游标高]缺省,通过Z轴自动计算"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndElev), ePropStatus.Lack, "[换热器][下游标高]缺省,通过Z轴自动计算"); |
| | | } |
| | | } |
| | | |
| | |
| | | exchanger.StartQuality = startQuality; |
| | | if (exchanger.StartQuality <= 0) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartQuality), ePropStatus.Lack, "[上游初始水质]缺省"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartQuality), ePropStatus.Lack, "[换热器][上游初始水质]缺省"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartQuality), ePropStatus.Abnormal, "[上游初始水质]缺少或者格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.StartQuality), ePropStatus.Abnormal, "[换热器][上游初始水质]缺少或者格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | exchanger.EndQuality = endQuality; |
| | | if (exchanger.EndQuality <= 0) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndQuality), ePropStatus.Lack, "[下游初始水质]缺省"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndQuality), ePropStatus.Lack, "[换热器][下游初始水质]缺省"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndQuality), ePropStatus.Abnormal, "[下游初始水质]缺少或者格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.EndQuality), ePropStatus.Abnormal, "[换热器][下游初始水质]缺少或者格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | exchanger.Material = material; |
| | | if (string.IsNullOrEmpty(exchanger.Material)) |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Material), ePropStatus.Lack, "[材质]缺省"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Material), ePropStatus.Lack, "[换热器][材质]缺省"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Material), ePropStatus.Abnormal, "缺少[材质]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Material), ePropStatus.Abnormal, "[换热器]缺少[材质]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Abnormal, "[直径]缺少或者格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Abnormal, "[换热器][直径]缺少或者格式错误"); |
| | | } |
| | | |
| | | if (exchanger.Diameter < 1) |
| | |
| | | if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out double internalDiameter)) |
| | | { |
| | | exchanger.Diameter = internalDiameter; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Lack, "[直径]通过[内径]进行修复]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Lack, "[换热器][直径]通过[内径]进行修复]"); |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Abnormal, "[直径]无法通过[内径]进行修复]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Abnormal, "[换热器][直径]无法通过[内径]进行修复]"); |
| | | } |
| | | } |
| | | |
| | |
| | | if (jobject[RevitJsonProp.DN].MatchNumeric(out double dn)) |
| | | { |
| | | exchanger.Diameter = dn; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Lack, "[直径]通过[公称直径]进行修复]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Lack, "[换热器][直径]通过[公称直径]进行修复]"); |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Abnormal, "[直径]无法通过[公称直径]进行修复]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Abnormal, "[换热器][直径]无法通过[公称直径]进行修复]"); |
| | | } |
| | | } |
| | | |
| | | if (exchanger.Diameter < 1) |
| | | { |
| | | exchanger.Diameter = 1000; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Lack, "[直径][内径]解析错误,使用默认值(1000mm)修正]"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Diameter), ePropStatus.Lack, "[换热器][直径][内径]解析错误,使用默认值(1000mm)修正]"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Length), ePropStatus.Abnormal, "[长度]缺少或者格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Length), ePropStatus.Abnormal, "[换热器][长度]缺少或者格式错误"); |
| | | } |
| | | if (exchanger.Length <= 0) |
| | | { |
| | | if (exchanger.StartPosition != null && exchanger.EndPosition != null) |
| | | { |
| | | exchanger.Length = exchanger.StartPosition.Distance(exchanger.EndPosition); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Length), ePropStatus.Lack, "[长度]缺省,通过位置自动计算"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Length), ePropStatus.Lack, "[换热器][长度]缺省,通过位置自动计算"); |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Length), ePropStatus.Abnormal, "[长度]受[连接列表]影响无法自动计算"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Length), ePropStatus.Abnormal, "[换热器][长度]受[连接列表]影响无法自动计算"); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Roughness), ePropStatus.Abnormal, "[粗糙系数]缺少或者数据格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Roughness), ePropStatus.Abnormal, "[换热器][粗糙系数]缺少或者数据格式错误"); |
| | | } |
| | | |
| | | if (exchanger.Roughness < 0.1) |
| | | { |
| | | exchanger.Roughness = 110; |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Roughness), ePropStatus.Lack, "[粗糙系数]解析错误,通过默认值(110)进行修正"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.Roughness), ePropStatus.Lack, "[换热器][粗糙系数]解析错误,通过默认值(110)进行修正"); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.MinorLoss), ePropStatus.Abnormal, "[局部阻力系数]缺少或者数据格式错误"); |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.MinorLoss), ePropStatus.Abnormal, "[换热器][局部阻力系数]缺少或者数据格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region MinorLossK |
| | | |
| | | if (jobject[RevitJsonProp.MinorLossK].MatchNumeric(out double minorLossK)) |
| | | { |
| | | exchanger.MinorLossK = minorLossK; |
| | | } |
| | | else |
| | | { |
| | | exchanger.AppendOrUpdatePropStatus(nameof(exchanger.MinorLossK), ePropStatus.Abnormal, "[换热器][损失K系数]缺少或者数据格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | return exchanger; |
| | | } |
| | | |
| | | //解析空压机 |
| | | private static HStation.Model.RevitCompressor ParseCompressor(JToken jobject) |
| | | { |
| | | if (jobject == null) |
| | | { |
| | | return default; |
| | | } |
| | | |
| | | var compressor = new Model.RevitCompressor(); |
| | | compressor.Catalog = RevitJsonCatalog.Compressor; |
| | | |
| | | #region Id |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.Id, out string id)) |
| | | { |
| | | compressor.Id = id; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Id), ePropStatus.Error, "[空压机]缺少[构件编码]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Code |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.Code, out string code)) |
| | | { |
| | | compressor.Code = code; |
| | | if (string.IsNullOrEmpty(compressor.Code)) |
| | | { |
| | | compressor.Code = compressor.Id; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Code), ePropStatus.Lack, "[空压机][编码]缺省,使用[构件编码]赋值"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Code), ePropStatus.Error, "[空压机]缺少[编码]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Name |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.Name, out string name)) |
| | | { |
| | | compressor.Name = name; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Name), ePropStatus.Lack, "[空压机][名称]缺省"); |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Name), ePropStatus.Error, "[空压机]缺少[名称]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ModelType |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.ModelType, out string modelType)) |
| | | { |
| | | compressor.ModelType = modelType; |
| | | if (string.IsNullOrEmpty(compressor.ModelType)) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.ModelType), ePropStatus.Lack, "[空压机][型号信息]缺省"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.ModelType), ePropStatus.Error, "[空压机]缺少[型号信息]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Flags |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.Flags, out string flags)) |
| | | { |
| | | compressor.Flags = Yw.Untity.FlagsHelper.ToList(flags); |
| | | if (!string.IsNullOrEmpty(flags)) |
| | | { |
| | | if (compressor.Flags == null || compressor.Flags.Count < 1) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Flags), ePropStatus.Abnormal, "[空压机][标签]格式错误"); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Flags), ePropStatus.Error, "[空压机]缺少[标签]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Description |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.Description, out string description)) |
| | | { |
| | | compressor.Description = description; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Description), ePropStatus.Error, "[空压机]缺少[说明信息]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ConnectList |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.Connects, out string connectString)) |
| | | { |
| | | var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(connectString); |
| | | compressor.ConnectList = connectList?.Select(x => new Model.RevitConnect() |
| | | { |
| | | Id = x.ConnectId, |
| | | Direction = x.Dirction, |
| | | Position = new Model.RevitPosition() |
| | | { |
| | | X = x.Point.X / 1000f, |
| | | Y = x.Point.Y / 1000f, |
| | | Z = x.Point.Z / 1000f |
| | | } |
| | | }).ToList(); |
| | | if (compressor.ConnectList == null || compressor.ConnectList.Count < 1) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.ConnectList), ePropStatus.Error, "[空压机][连接列表]解析失败"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.ConnectList), ePropStatus.Error, "[空压机]缺少[连接列表]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region StartCode/StartPosition |
| | | |
| | | var startConnect = compressor.ConnectList?.GetStartConnect(); |
| | | compressor.StartCode = startConnect?.Id; |
| | | if (string.IsNullOrEmpty(compressor.StartCode)) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.StartCode), ePropStatus.Error, "[空压机][上游构件]受[连接列表]影响解析错误"); |
| | | } |
| | | compressor.StartPosition = startConnect?.Position; |
| | | if (compressor.StartPosition == null) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.StartPosition), ePropStatus.Error, "[空压机][上游构件位置]受[连接列表]影响解析错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region EndCode/EndPosition |
| | | |
| | | var endConnect = compressor.ConnectList?.GetEndConnect(); |
| | | compressor.EndCode = endConnect?.Id; |
| | | if (string.IsNullOrEmpty(compressor.EndCode)) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.EndCode), ePropStatus.Error, "[空压机][下游构件]受[连接列表]影响解析错误"); |
| | | } |
| | | compressor.EndPosition = endConnect?.Position; |
| | | if (compressor.EndPosition == null) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.EndPosition), ePropStatus.Error, "[空压机][下游构件位置]受[连接列表]影响解析错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region LinkStatus |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.LinkStatusPipe, out string linkStatus)) |
| | | { |
| | | compressor.LinkStatus = linkStatus; |
| | | if (string.IsNullOrEmpty(compressor.LinkStatus)) |
| | | { |
| | | compressor.LinkStatus = PipeStatus.Open; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.LinkStatus), ePropStatus.Lack, "[空压机][管道状态]缺省"); |
| | | } |
| | | else |
| | | { |
| | | if (!PipeStatus.Contains(compressor.LinkStatus)) |
| | | { |
| | | compressor.LinkStatus = PipeStatus.Open; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.LinkStatus), ePropStatus.Abnormal, "[空压机][管道状态]设置错误"); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | compressor.LinkStatus = PipeStatus.Open; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.LinkStatus), ePropStatus.Abnormal, "[空压机][管道状态]缺少或格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region StartElev |
| | | |
| | | if (jobject[RevitJsonProp.StartElev].MatchNumeric(out double startElev)) |
| | | { |
| | | compressor.StartElev = startElev / 1000f; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.StartElev), ePropStatus.Abnormal, "[空压机][上游标高]缺少或格式错误"); |
| | | } |
| | | |
| | | if (compressor.StartElev <= 0) |
| | | { |
| | | //通过z轴自动计算 |
| | | if (compressor.StartPosition == null) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.StartElev), ePropStatus.Lack, "[空压机][上游标高]缺省,受[上游构件位置]影响,无法通过Z轴自动计算"); |
| | | } |
| | | else |
| | | { |
| | | compressor.StartElev = compressor.StartPosition.Z; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.StartElev), ePropStatus.Lack, "[空压机][上游标高]缺省,通过Z轴自动计算"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region EndElev |
| | | |
| | | if (jobject[RevitJsonProp.EndElev].MatchNumeric(out double endElev)) |
| | | { |
| | | compressor.EndElev = endElev / 1000f; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.EndElev), ePropStatus.Abnormal, "[空压机][下游标高]缺少或格式错误"); |
| | | } |
| | | |
| | | if (compressor.EndElev <= 0) |
| | | { |
| | | //通过z轴自动计算 |
| | | if (compressor.EndPosition == null) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.EndElev), ePropStatus.Lack, "[空压机][下游标高]缺省,受[下游构件位置]影响,无法通过Z轴自动计算"); |
| | | } |
| | | else |
| | | { |
| | | compressor.EndElev = compressor.EndPosition.Z; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.EndElev), ePropStatus.Lack, "[空压机][下游标高]缺省,通过Z轴自动计算"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region StartQuality |
| | | |
| | | if (jobject[RevitJsonProp.StartQuality].MatchNumeric(out double startQuality)) |
| | | { |
| | | compressor.StartQuality = startQuality; |
| | | if (compressor.StartQuality <= 0) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.StartQuality), ePropStatus.Lack, "[空压机][上游初始水质]缺省"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.StartQuality), ePropStatus.Abnormal, "[空压机][上游初始水质]缺少或者格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region EndQuality |
| | | |
| | | if (jobject[RevitJsonProp.EndQuality].MatchNumeric(out double endQuality)) |
| | | { |
| | | compressor.EndQuality = endQuality; |
| | | if (compressor.EndQuality <= 0) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.EndQuality), ePropStatus.Lack, "[空压机][下游初始水质]缺省"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.EndQuality), ePropStatus.Abnormal, "[空压机][下游初始水质]缺少或者格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Material |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.Material, out string material)) |
| | | { |
| | | compressor.Material = material; |
| | | if (string.IsNullOrEmpty(compressor.Material)) |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Material), ePropStatus.Lack, "[空压机][材质]缺省"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Material), ePropStatus.Abnormal, "[空压机]缺少[材质]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Diameter |
| | | |
| | | if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) |
| | | { |
| | | compressor.Diameter = diameter; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Diameter), ePropStatus.Abnormal, "[空压机][直径]缺少或者格式错误"); |
| | | } |
| | | |
| | | if (compressor.Diameter < 1) |
| | | { |
| | | if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out double internalDiameter)) |
| | | { |
| | | compressor.Diameter = internalDiameter; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Diameter), ePropStatus.Lack, "[空压机][直径]通过[内径]进行修复]"); |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Diameter), ePropStatus.Abnormal, "[空压机][直径]无法通过[内径]进行修复]"); |
| | | } |
| | | } |
| | | |
| | | if (compressor.Diameter < 1) |
| | | { |
| | | if (jobject[RevitJsonProp.DN].MatchNumeric(out double dn)) |
| | | { |
| | | compressor.Diameter = dn; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Diameter), ePropStatus.Lack, "[空压机][直径]通过[公称直径]进行修复]"); |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Diameter), ePropStatus.Abnormal, "[空压机][直径]无法通过[公称直径]进行修复]"); |
| | | } |
| | | } |
| | | |
| | | if (compressor.Diameter < 1) |
| | | { |
| | | compressor.Diameter = 1000; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Diameter), ePropStatus.Lack, "[空压机][直径][内径]解析错误,使用默认值(1000mm)修正]"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Length |
| | | |
| | | if (jobject[RevitJsonProp.Length].MatchNumeric(out double length)) |
| | | { |
| | | compressor.Length = length / 1000f; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Length), ePropStatus.Abnormal, "[空压机][长度]缺少或者格式错误"); |
| | | } |
| | | if (compressor.Length <= 0) |
| | | { |
| | | if (compressor.StartPosition != null && compressor.EndPosition != null) |
| | | { |
| | | compressor.Length = compressor.StartPosition.Distance(compressor.EndPosition); |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Length), ePropStatus.Lack, "[空压机][长度]缺省,通过位置自动计算"); |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Length), ePropStatus.Abnormal, "[空压机][长度]受[连接列表]影响无法自动计算"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region Roughness |
| | | |
| | | if (jobject[RevitJsonProp.Roughness].MatchNumeric(out double roughness)) |
| | | { |
| | | compressor.Roughness = roughness; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Roughness), ePropStatus.Abnormal, "[空压机][粗糙系数]缺少或者数据格式错误"); |
| | | } |
| | | |
| | | if (compressor.Roughness < 0.1) |
| | | { |
| | | compressor.Roughness = 110; |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.Roughness), ePropStatus.Lack, "[空压机][粗糙系数]解析错误,通过默认值(110)进行修正"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region MinorLoss |
| | | |
| | | if (jobject[RevitJsonProp.MinorLoss].MatchNumeric(out double minorLoss)) |
| | | { |
| | | compressor.MinorLoss = minorLoss; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.MinorLoss), ePropStatus.Abnormal, "[空压机][局部阻力系数]缺少或者数据格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region MinorLossK |
| | | |
| | | if (jobject[RevitJsonProp.MinorLossK].MatchNumeric(out double minorLossK)) |
| | | { |
| | | compressor.MinorLossK = minorLossK; |
| | | } |
| | | else |
| | | { |
| | | compressor.AppendOrUpdatePropStatus(nameof(compressor.MinorLossK), ePropStatus.Abnormal, "[空压机][损失K系数]缺少或者数据格式错误"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | return compressor; |
| | | } |
| | | |
| | | //解析水泵 |
| | |
| | | return default; |
| | | } |
| | | var pump = new Model.RevitPump(); |
| | | pump.Catalog = RevitJsonCatalog.Pump; |
| | | |
| | | #region Id |
| | | |
| | |
| | | |
| | | if (pump.RatedHz < 1) |
| | | { |
| | | pump.RatedHz = 50; |
| | | pump.AppendOrUpdatePropStatus(nameof(pump.RatedHz), ePropStatus.Lack, "[额定频率]缺省,使用默认值(50Hz)进行修正"); |
| | | } |
| | | |
| | |
| | | return default; |
| | | } |
| | | var valve = new Model.RevitValve(); |
| | | valve.Catalog = RevitJsonCatalog.Valve; |
| | | |
| | | #region Id |
| | | |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region OpeningDegree |
| | | |
| | | if (jobject[RevitJsonProp.ValveOpeningDegree].MatchNumeric(out double openingDegree)) |
| | | { |
| | | valve.OpeningDegree = openingDegree; |
| | | } |
| | | else |
| | | { |
| | | valve.OpeningDegree = 100; |
| | | valve.AppendOrUpdatePropStatus(nameof(valve.MinorLoss), ePropStatus.Abnormal, "[阀门开度]缺少或者数据格式错误,使用默认值(100)进行修正"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ValveSetting |
| | | |
| | | if (jobject.ParseString(RevitJsonProp.ValveSetting, out string valveSetting)) |