From 3e4fa61e398cb7c6fa3d0173ebaf740a14992e8c Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期二, 13 八月 2024 16:11:36 +0800 Subject: [PATCH] 主界面修改 --- Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs | 1428 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 854 insertions(+), 574 deletions(-) diff --git a/Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs b/Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs index e8ef547..4807b3e 100644 --- a/Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs +++ b/Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs @@ -10,587 +10,865 @@ /// </summary> /// <param name="revitJsonString">json瀛楃涓�</param> /// <returns>鏍煎紡閿欒锛屼細鎶涘嚭寮傚父</returns> - public static HStation.Model.RevitModel FromJsonString(string revitJsonString) + public static HStation.Model.RevitModel FromJsonString(string revitJsonString, out string msg) { + msg = string.Empty; if (string.IsNullOrEmpty(revitJsonString)) { - throw new Exception("Json瀛楃涓蹭负绌�"); + msg = "Revit json 瀛楃涓蹭负绌�"; + return default; } - var model = new Model.RevitModel(); - - var jarray = JArray.Parse(revitJsonString); - for (int i = 0; i < jarray.Count; i++) + try { - var jobject = JObject.Parse(jarray[i].ToString()); - var catalog = jobject["鏋勪欢绫诲瀷"].ToString(); - switch (catalog) - { - case Catalog.Reservoir: - { - var reservoir = new Model.RevitReservoir(); - reservoir.Id = jobject["鏋勪欢缂栫爜"].ToString(); - reservoir.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(reservoir.Code)) - { - reservoir.Code = reservoir.Id; - } - reservoir.Name = jobject["鍚嶇О"].ToString(); - reservoir.ModelType = jobject["鍨嬪彿"].ToString(); - reservoir.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - reservoir.Description = jobject["璇存槑"].ToString(); - reservoir.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - reservoir.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - reservoir.Head = Convert.ToDouble(jobject["鎬绘按澶�"]); - reservoir.HeadPattern = jobject["姘村ご妯″紡"].ToString(); - model.Reservoirs.Add(reservoir); - } - break; - case Catalog.Tank: - { - var tank = new Model.RevitTank(); - tank.Id = jobject["鏋勪欢缂栫爜"].ToString(); - tank.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(tank.Code)) - { - tank.Code = tank.Id; - } - tank.Name = jobject["鍚嶇О"].ToString(); - tank.ModelType = jobject["鍨嬪彿"].ToString(); - tank.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - tank.Description = jobject["璇存槑"].ToString(); - tank.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - tank.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - tank.PoolElev = Convert.ToDouble(jobject["姹犲簳鏍囬珮"]); - tank.InitLevel = Convert.ToDouble(jobject["鍒濆姘翠綅"]); - tank.MinLevel = Convert.ToDouble(jobject["鏈�浣庢按浣�"]); - tank.MaxLevel = Convert.ToDouble(jobject["鏈�楂樻按浣�"]); - tank.Diameter = Convert.ToDouble(jobject["鐩村緞"]); - tank.MinVol = Convert.ToDouble(jobject["鏈�灏忓绉�"]); - tank.VolCurve = jobject["瀹圭Н鏇茬嚎"].ToString(); - model.Tanks.Add(tank); - } - break; - case Catalog.Waterbox: - { - var waterbox = new Model.RevitWaterbox(); - waterbox.Id = jobject["鏋勪欢缂栫爜"].ToString(); - waterbox.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(waterbox.Code)) - { - waterbox.Code = waterbox.Id; - } - waterbox.Name = jobject["鍚嶇О"].ToString(); - waterbox.ModelType = jobject["鍨嬪彿"].ToString(); - waterbox.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - waterbox.Description = jobject["璇存槑"].ToString(); - waterbox.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - waterbox.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - waterbox.PoolElev = Convert.ToDouble(jobject["姹犲簳鏍囬珮"]); - waterbox.InitLevel = Convert.ToDouble(jobject["鍒濆姘翠綅"]); - waterbox.MinLevel = Convert.ToDouble(jobject["鏈�浣庢按浣�"]); - waterbox.MaxLevel = Convert.ToDouble(jobject["鏈�楂樻按浣�"]); - waterbox.Diameter = Convert.ToDouble(jobject["鐩村緞"]); - waterbox.MinVol = Convert.ToDouble(jobject["鏈�灏忓绉�"]); - waterbox.VolCurve = jobject["瀹圭Н鏇茬嚎"].ToString(); - model.Waterboxs.Add(waterbox); - } - break; - case Catalog.Junction: - { - var junction = new Model.RevitJunction(); - junction.Id = jobject["鏋勪欢缂栫爜"].ToString(); - junction.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(junction.Code)) - { - junction.Code = junction.Id; - } - junction.Name = jobject["鍚嶇О"].ToString(); - junction.ModelType = jobject["鍨嬪彿"].ToString(); - junction.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - junction.Description = jobject["璇存槑"].ToString(); - junction.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - junction.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - junction.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - junction.Demand = Convert.ToDouble(demand); - } - junction.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Junctions.Add(junction); - } - break; - case Catalog.Elbow: - { - var elbow = new Model.RevitElbow(); - elbow.Id = jobject["鏋勪欢缂栫爜"].ToString(); - elbow.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(elbow.Code)) - { - elbow.Code = elbow.Id; - } - elbow.Name = jobject["鍚嶇О"].ToString(); - elbow.ModelType = jobject["鍨嬪彿"].ToString(); - elbow.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - elbow.Description = jobject["璇存槑"].ToString(); - elbow.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - elbow.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - elbow.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - elbow.Demand = Convert.ToDouble(demand); - } - elbow.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Elbows.Add(elbow); - } - break; - case Catalog.Threelink: - { - var threelink = new Model.RevitThreelink(); - threelink.Id = jobject["鏋勪欢缂栫爜"].ToString(); - threelink.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(threelink.Code)) - { - threelink.Code = threelink.Id; - } - threelink.Name = jobject["鍚嶇О"].ToString(); - threelink.ModelType = jobject["鍨嬪彿"].ToString(); - threelink.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - threelink.Description = jobject["璇存槑"].ToString(); - threelink.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - threelink.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - threelink.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - threelink.Demand = Convert.ToDouble(demand); - } - threelink.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Threelinks.Add(threelink); - } - break; - case Catalog.Fourlink: - { - var fourlink = new Model.RevitFourlink(); - fourlink.Id = jobject["鏋勪欢缂栫爜"].ToString(); - fourlink.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(fourlink.Code)) - { - fourlink.Code = fourlink.Id; - } - fourlink.Name = jobject["鍚嶇О"].ToString(); - fourlink.ModelType = jobject["鍨嬪彿"].ToString(); - fourlink.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - fourlink.Description = jobject["璇存槑"].ToString(); - fourlink.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - fourlink.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - fourlink.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - fourlink.Demand = Convert.ToDouble(demand); - } - fourlink.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Fourlinks.Add(fourlink); - } - break; - case Catalog.Flowmeter: - { - var flowmeter = new Model.RevitFlowmeter(); - flowmeter.Id = jobject["鏋勪欢缂栫爜"].ToString(); - flowmeter.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(flowmeter.Code)) - { - flowmeter.Code = flowmeter.Id; - } - flowmeter.Name = jobject["鍚嶇О"].ToString(); - flowmeter.ModelType = jobject["鍨嬪彿"].ToString(); - flowmeter.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - flowmeter.Description = jobject["璇存槑"].ToString(); - flowmeter.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - flowmeter.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - flowmeter.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - flowmeter.Demand = Convert.ToDouble(demand); - } - flowmeter.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Flowmeters.Add(flowmeter); - } - break; - case Catalog.Pressmeter: - { - var pressmeter = new Model.RevitPressmeter(); - pressmeter.Id = jobject["鏋勪欢缂栫爜"].ToString(); - pressmeter.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(pressmeter.Code)) - { - pressmeter.Code = pressmeter.Id; - } - pressmeter.Name = jobject["鍚嶇О"].ToString(); - pressmeter.ModelType = jobject["鍨嬪彿"].ToString(); - pressmeter.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - pressmeter.Description = jobject["璇存槑"].ToString(); - pressmeter.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - pressmeter.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - pressmeter.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - pressmeter.Demand = Convert.ToDouble(demand); - } - pressmeter.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Pressmeters.Add(pressmeter); - } - break; - case Catalog.Blunthead: - { - var blunthead = new Model.RevitBlunthead(); - blunthead.Id = jobject["鏋勪欢缂栫爜"].ToString(); - blunthead.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(blunthead.Code)) - { - blunthead.Code = blunthead.Id; - } - blunthead.Name = jobject["鍚嶇О"].ToString(); - blunthead.ModelType = jobject["鍨嬪彿"].ToString(); - blunthead.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - blunthead.Description = jobject["璇存槑"].ToString(); - blunthead.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - blunthead.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - blunthead.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - blunthead.Demand = Convert.ToDouble(demand); - } - blunthead.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Bluntheads.Add(blunthead); - } - break; - case Catalog.Nozzle: - { - var nozzle = new Model.RevitNozzle(); - nozzle.Id = jobject["鏋勪欢缂栫爜"].ToString(); - nozzle.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(nozzle.Code)) - { - nozzle.Code = nozzle.Id; - } - nozzle.Name = jobject["鍚嶇О"].ToString(); - nozzle.ModelType = jobject["鍨嬪彿"].ToString(); - nozzle.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - nozzle.Description = jobject["璇存槑"].ToString(); - nozzle.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - nozzle.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - nozzle.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - nozzle.Coefficient = Convert.ToDouble(jobject["鍠峰皠绯绘暟"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - nozzle.Demand = Convert.ToDouble(demand); - } - nozzle.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Nozzles.Add(nozzle); - } - break; - case Catalog.Hydrant: - { - var hydrant = new Model.RevitHydrant(); - hydrant.Id = jobject["鏋勪欢缂栫爜"].ToString(); - hydrant.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(hydrant.Code)) - { - hydrant.Code = hydrant.Id; - } - hydrant.Name = jobject["鍚嶇О"].ToString(); - hydrant.ModelType = jobject["鍨嬪彿"].ToString(); - hydrant.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - hydrant.Description = jobject["璇存槑"].ToString(); - hydrant.Quality = Convert.ToDouble(jobject["鍒濆姘磋川"]); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var centerPoint = linkList.GetCenterPoint(); - hydrant.Position = new Model.RevitPosition() - { - X = centerPoint.X, - Y = centerPoint.Y, - Z = centerPoint.Z - }; - hydrant.Elev = Convert.ToDouble(jobject["鏍囬珮"]); - hydrant.Coefficient = Convert.ToDouble(jobject["娴侀噺绯绘暟"]); - var demand = jobject["闇�姘撮噺"].ToString(); - if (!string.IsNullOrEmpty(demand)) - { - hydrant.Demand = Convert.ToDouble(demand); - } - hydrant.DemandPattern = jobject["闇�姘存ā寮�"].ToString(); - model.Hydrants.Add(hydrant); - } - break; - case Catalog.Pipe: - { - var pipe = new Model.RevitPipe(); - pipe.Id = jobject["鏋勪欢缂栫爜"].ToString(); - pipe.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(pipe.Code)) - { - pipe.Code = pipe.Id; - } - pipe.Name = jobject["鍚嶇О"].ToString(); - pipe.ModelType = jobject["鍨嬪彿"].ToString(); - pipe.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - pipe.Description = jobject["璇存槑"].ToString(); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var startLinker = linkList.GetStartLinker(); - var endLinker = linkList.GetEndLinker(); - pipe.StartCode = startLinker.ConnectId; - pipe.EndCode = endLinker.ConnectId; - pipe.LinkStatus = jobject["绠¢亾鐘舵��"].ToString(); - pipe.StartElev = Convert.ToDouble(jobject["涓婃父鏍囬珮"]); - pipe.EndElev = Convert.ToDouble(jobject["涓嬫父鏍囬珮"]); - pipe.StartQuality = Convert.ToDouble(jobject["涓婃父鍒濆姘磋川"]); - pipe.EndQuality = Convert.ToDouble(jobject["涓嬫父鍒濆姘磋川"]); - pipe.StartPosition = new Model.RevitPosition() - { - X = startLinker.Point.X, - Y = startLinker.Point.Y, - Z = startLinker.Point.Z - }; - pipe.EndPosition = new Model.RevitPosition() - { - X = endLinker.Point.X, - Y = endLinker.Point.Y, - Z = endLinker.Point.Z - }; - pipe.Length = Convert.ToDouble(jobject["闀垮害"]); - pipe.Diameter = Convert.ToDouble(jobject["鐩村緞"]); - pipe.MinorLoss = Convert.ToDouble(jobject["灞�閮ㄩ樆鍔涚郴鏁�"]); - pipe.Roughness = Convert.ToDouble(jobject["绮楃硻绯绘暟"]); - model.Pipes.Add(pipe); - } - break; - case Catalog.Translation: - { - var translation = new Model.RevitTranslation(); - translation.Id = jobject["鏋勪欢缂栫爜"].ToString(); - translation.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(translation.Code)) - { - translation.Code = translation.Id; - } - translation.Name = jobject["鍚嶇О"].ToString(); - translation.ModelType = jobject["鍨嬪彿"].ToString(); - translation.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - translation.Description = jobject["璇存槑"].ToString(); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var startLinker = linkList.GetStartLinker(); - var endLinker = linkList.GetEndLinker(); - translation.StartCode = startLinker.ConnectId; - translation.EndCode = endLinker.ConnectId; - translation.LinkStatus = jobject["绠¢亾鐘舵��"].ToString(); - translation.StartElev = Convert.ToDouble(jobject["涓婃父鏍囬珮"]); - translation.EndElev = Convert.ToDouble(jobject["涓嬫父鏍囬珮"]); - translation.StartQuality = Convert.ToDouble(jobject["涓婃父鍒濆姘磋川"]); - translation.EndQuality = Convert.ToDouble(jobject["涓嬫父鍒濆姘磋川"]); - translation.StartPosition = new Model.RevitPosition() - { - X = startLinker.Point.X, - Y = startLinker.Point.Y, - Z = startLinker.Point.Z - }; - translation.EndPosition = new Model.RevitPosition() - { - X = endLinker.Point.X, - Y = endLinker.Point.Y, - Z = endLinker.Point.Z - }; - translation.Length = Convert.ToDouble(jobject["闀垮害"]); - translation.Diameter = Convert.ToDouble(jobject["鐩村緞"]); - translation.MinorLoss = Convert.ToDouble(jobject["灞�閮ㄩ樆鍔涚郴鏁�"]); - translation.Roughness = Convert.ToDouble(jobject["绮楃硻绯绘暟"]); - model.Translations.Add(translation); - } - break; - case Catalog.Pump: - { - var pump = new Model.RevitPump(); - pump.Id = jobject["鏋勪欢缂栫爜"].ToString(); - pump.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(pump.Code)) - { - pump.Code = pump.Id; - } - pump.Name = jobject["鍚嶇О"].ToString(); - pump.ModelType = jobject["鍨嬪彿"].ToString(); - pump.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - pump.Description = jobject["璇存槑"].ToString(); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var startLinker = linkList.GetStartLinker(); - var endLinker = linkList.GetEndLinker(); - pump.StartCode = startLinker.ConnectId; - pump.EndCode = endLinker.ConnectId; - pump.LinkStatus = jobject["姘存车鐘舵��"].ToString(); - pump.StartElev = Convert.ToDouble(jobject["涓婃父鏍囬珮"]); - pump.EndElev = Convert.ToDouble(jobject["涓嬫父鏍囬珮"]); - pump.StartQuality = Convert.ToDouble(jobject["涓婃父鍒濆姘磋川"]); - pump.EndQuality = Convert.ToDouble(jobject["涓嬫父鍒濆姘磋川"]); - pump.StartPosition = new Model.RevitPosition() - { - X = startLinker.Point.X, - Y = startLinker.Point.Y, - Z = startLinker.Point.Z - }; - pump.EndPosition = new Model.RevitPosition() - { - X = endLinker.Point.X, - Y = endLinker.Point.Y, - Z = endLinker.Point.Z - }; - pump.RatedPower = Convert.ToDouble(jobject["棰濆畾鍔熺巼"]); - pump.CurveQH = jobject["娴侀噺鎵▼鏇茬嚎"].ToString(); - var speedRatio = jobject["杞�熸瘮"].ToString(); - if (!string.IsNullOrEmpty(speedRatio)) - { - pump.SpeedRatio = Convert.ToDouble(speedRatio); - } - pump.SpeedRatioPattern = jobject["杞�熸瘮妯″紡"].ToString(); - var price = jobject["鑳借�椾环鏍�"].ToString(); - if (!string.IsNullOrEmpty(price)) - { - pump.Price = Convert.ToDouble(price); - } - pump.PricePattern = jobject["浠锋牸妯″紡"].ToString(); - pump.CurveQE = jobject["娴侀噺鏁堢巼鏇茬嚎"].ToString(); - model.Pumps.Add(pump); - } - break; - case Catalog.Valve: - { - var valve = new Model.RevitValve(); - valve.Id = jobject["鏋勪欢缂栫爜"].ToString(); - valve.Code = jobject["缂栫爜"].ToString(); - if (string.IsNullOrEmpty(valve.Code)) - { - valve.Code = valve.Id; - } - valve.Name = jobject["鍚嶇О"].ToString(); - valve.ModelType = jobject["鍨嬪彿"].ToString(); - valve.Flags = Yw.Untity.FlagsHelper.ToList(jobject["鏍囩"].ToString()); - valve.Description = jobject["璇存槑"].ToString(); - var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["杩炴帴鍒楄〃"].ToString()); - var startLinker = linkList.GetStartLinker(); - var endLinker = linkList.GetEndLinker(); - valve.StartCode = startLinker.ConnectId; - valve.EndCode = endLinker.ConnectId; - valve.LinkStatus = jobject["闃�闂ㄧ姸鎬�"].ToString(); - valve.StartElev = Convert.ToDouble(jobject["涓婃父鏍囬珮"]); - valve.EndElev = Convert.ToDouble(jobject["涓嬫父鏍囬珮"]); - valve.StartQuality = Convert.ToDouble(jobject["涓婃父鍒濆姘磋川"]); - valve.EndQuality = Convert.ToDouble(jobject["涓嬫父鍒濆姘磋川"]); - valve.StartPosition = new Model.RevitPosition() - { - X = startLinker.Point.X, - Y = startLinker.Point.Y, - Z = startLinker.Point.Z - }; - valve.EndPosition = new Model.RevitPosition() - { - X = endLinker.Point.X, - Y = endLinker.Point.Y, - Z = endLinker.Point.Z - }; - valve.Diameter = Convert.ToDouble(jobject["鐩村緞"]); - valve.MinorLoss = Convert.ToDouble(jobject["灞�閮ㄩ樆鍔涚郴鏁�"]); - valve.ValveType = jobject["闃�闂ㄧ被鍨�"].ToString(); - valve.ValveSetting = jobject["闃�闂ㄨ缃�"].ToString(); - model.Valves.Add(valve); - } - break; + var model = new Model.RevitModel(); - default: break; + var jarray = JArray.Parse(revitJsonString); + for (int i = 0; i < jarray.Count; i++) + { + var jobject = JObject.Parse(jarray[i].ToString()); + var catalog = jobject[RevitJsonProp.Catalog].ToString(); + switch (catalog) + { + case RevitJsonCatalog.Reservoir: + { + var reservoir = new Model.RevitReservoir(); + reservoir.Id = jobject[RevitJsonProp.Id].ToString(); + reservoir.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(reservoir.Code)) + { + reservoir.Code = reservoir.Id; + } + reservoir.Name = jobject[RevitJsonProp.Name].ToString(); + reservoir.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + reservoir.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + reservoir.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + reservoir.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + reservoir.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.PoolElev].MatchNumeric(out double poolElev)) + { + reservoir.PoolElev = poolElev; + } + if (jobject[RevitJsonProp.Head].MatchNumeric(out double head)) + { + reservoir.Head = head; + } + reservoir.HeadPattern = jobject[RevitJsonProp.HeadPattern].ToString(); + model.Reservoirs.Add(reservoir); + } + break; + case RevitJsonCatalog.Tank: + { + var tank = new Model.RevitTank(); + tank.Id = jobject[RevitJsonProp.Id].ToString(); + tank.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(tank.Code)) + { + tank.Code = tank.Id; + } + tank.Name = jobject[RevitJsonProp.Name].ToString(); + tank.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + tank.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + tank.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + tank.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + tank.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.PoolElev].MatchNumeric(out double poolElev)) + { + tank.PoolElev = poolElev; + } + if (jobject[RevitJsonProp.InitLevel].MatchNumeric(out double initLevel)) + { + tank.InitLevel = initLevel; + } + if (jobject[RevitJsonProp.MinLevel].MatchNumeric(out double minLevel)) + { + tank.MinLevel = minLevel; + } + if (jobject[RevitJsonProp.MaxLevel].MatchNumeric(out double maxLevel)) + { + tank.MaxLevel = maxLevel; + } + if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + { + tank.Diameter = diameter; + } + if (jobject[RevitJsonProp.MinVol].MatchNumeric(out double minVol)) + { + tank.MinVol = minVol; + } + tank.VolCurve = jobject[RevitJsonProp.VolCurve].ToString(); + model.Tanks.Add(tank); + } + break; + case RevitJsonCatalog.Waterbox: + { + var waterbox = new Model.RevitWaterbox(); + waterbox.Id = jobject[RevitJsonProp.Id].ToString(); + waterbox.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(waterbox.Code)) + { + waterbox.Code = waterbox.Id; + } + waterbox.Name = jobject[RevitJsonProp.Name].ToString(); + waterbox.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + waterbox.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + waterbox.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + waterbox.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + waterbox.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.PoolElev].MatchNumeric(out double poolElev)) + { + waterbox.PoolElev = poolElev; + } + if (jobject[RevitJsonProp.InitLevel].MatchNumeric(out double initLevel)) + { + waterbox.InitLevel = initLevel; + } + if (jobject[RevitJsonProp.MinLevel].MatchNumeric(out double minLevel)) + { + waterbox.MinLevel = minLevel; + } + if (jobject[RevitJsonProp.MaxLevel].MatchNumeric(out double maxLevel)) + { + waterbox.MaxLevel = maxLevel; + } + if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + { + waterbox.Diameter = diameter; + } + if (jobject[RevitJsonProp.MinVol].MatchNumeric(out double minVol)) + { + waterbox.MinVol = minVol; + } + waterbox.VolCurve = jobject[RevitJsonProp.VolCurve].ToString(); + model.Waterboxs.Add(waterbox); + } + break; + case RevitJsonCatalog.Junction: + { + var junction = new Model.RevitJunction(); + junction.Id = jobject[RevitJsonProp.Id].ToString(); + junction.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(junction.Code)) + { + junction.Code = junction.Id; + } + junction.Name = jobject[RevitJsonProp.Name].ToString(); + junction.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + junction.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + junction.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + junction.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + junction.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + junction.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + junction.Demand = demand; + } + junction.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Junctions.Add(junction); + } + break; + case RevitJsonCatalog.Elbow: + { + var elbow = new Model.RevitElbow(); + elbow.Id = jobject[RevitJsonProp.Id].ToString(); + elbow.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(elbow.Code)) + { + elbow.Code = elbow.Id; + } + elbow.Name = jobject[RevitJsonProp.Name].ToString(); + elbow.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + elbow.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + elbow.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + elbow.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + elbow.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + elbow.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + elbow.Demand = demand; + } + elbow.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Elbows.Add(elbow); + } + break; + case RevitJsonCatalog.Threelink: + { + var threelink = new Model.RevitThreelink(); + threelink.Id = jobject[RevitJsonProp.Id].ToString(); + threelink.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(threelink.Code)) + { + threelink.Code = threelink.Id; + } + threelink.Name = jobject[RevitJsonProp.Name].ToString(); + threelink.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + threelink.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + threelink.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + threelink.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + threelink.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + threelink.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + threelink.Demand = demand; + } + threelink.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Threelinks.Add(threelink); + } + break; + case RevitJsonCatalog.Fourlink: + { + var fourlink = new Model.RevitFourlink(); + fourlink.Id = jobject[RevitJsonProp.Id].ToString(); + fourlink.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(fourlink.Code)) + { + fourlink.Code = fourlink.Id; + } + fourlink.Name = jobject[RevitJsonProp.Name].ToString(); + fourlink.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + fourlink.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + fourlink.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + fourlink.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + fourlink.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + fourlink.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + fourlink.Demand = demand; + } + fourlink.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Fourlinks.Add(fourlink); + } + break; + case RevitJsonCatalog.Meter: + { + var meter = new Model.RevitMeter(); + meter.Id = jobject[RevitJsonProp.Id].ToString(); + meter.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(meter.Code)) + { + meter.Code = meter.Id; + } + meter.Name = jobject[RevitJsonProp.Name].ToString(); + meter.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + meter.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + meter.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + meter.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + meter.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + meter.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + meter.Demand = demand; + } + meter.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Meters.Add(meter); + } + break; + case RevitJsonCatalog.Flowmeter: + { + var flowmeter = new Model.RevitFlowmeter(); + flowmeter.Id = jobject[RevitJsonProp.Id].ToString(); + flowmeter.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(flowmeter.Code)) + { + flowmeter.Code = flowmeter.Id; + } + flowmeter.Name = jobject[RevitJsonProp.Name].ToString(); + flowmeter.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + flowmeter.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + flowmeter.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + flowmeter.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + flowmeter.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + flowmeter.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + flowmeter.Demand = demand; + } + flowmeter.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Flowmeters.Add(flowmeter); + } + break; + case RevitJsonCatalog.Pressmeter: + { + var pressmeter = new Model.RevitPressmeter(); + pressmeter.Id = jobject[RevitJsonProp.Id].ToString(); + pressmeter.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(pressmeter.Code)) + { + pressmeter.Code = pressmeter.Id; + } + pressmeter.Name = jobject[RevitJsonProp.Name].ToString(); + pressmeter.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + pressmeter.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + pressmeter.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + pressmeter.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + pressmeter.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + pressmeter.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + pressmeter.Demand = demand; + } + pressmeter.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Pressmeters.Add(pressmeter); + } + break; + case RevitJsonCatalog.Blunthead: + { + var blunthead = new Model.RevitBlunthead(); + blunthead.Id = jobject[RevitJsonProp.Id].ToString(); + blunthead.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(blunthead.Code)) + { + blunthead.Code = blunthead.Id; + } + blunthead.Name = jobject[RevitJsonProp.Name].ToString(); + blunthead.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + blunthead.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + blunthead.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + blunthead.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + blunthead.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + blunthead.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + blunthead.Demand = demand; + } + blunthead.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Bluntheads.Add(blunthead); + } + break; + case RevitJsonCatalog.Nozzle: + { + var nozzle = new Model.RevitNozzle(); + nozzle.Id = jobject[RevitJsonProp.Id].ToString(); + nozzle.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(nozzle.Code)) + { + nozzle.Code = nozzle.Id; + } + nozzle.Name = jobject[RevitJsonProp.Name].ToString(); + nozzle.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + nozzle.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + nozzle.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + nozzle.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + nozzle.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + nozzle.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + nozzle.Demand = demand; + } + nozzle.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + if (jobject[RevitJsonProp.CoefficientP].MatchNumeric(out double coeffient)) + { + nozzle.Coefficient = coeffient; + } + model.Nozzles.Add(nozzle); + } + break; + case RevitJsonCatalog.Hydrant: + { + var hydrant = new Model.RevitHydrant(); + hydrant.Id = jobject[RevitJsonProp.Id].ToString(); + hydrant.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(hydrant.Code)) + { + hydrant.Code = hydrant.Id; + } + hydrant.Name = jobject[RevitJsonProp.Name].ToString(); + hydrant.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + hydrant.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + hydrant.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + hydrant.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + hydrant.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + hydrant.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + hydrant.Demand = demand; + } + hydrant.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + if (jobject[RevitJsonProp.CoefficientF].MatchNumeric(out double coeffient)) + { + hydrant.Coefficient = coeffient; + } + model.Hydrants.Add(hydrant); + } + break; + case RevitJsonCatalog.Exchanger: + { + var exchanger = new Model.RevitExchanger(); + exchanger.Id = jobject[RevitJsonProp.Id].ToString(); + exchanger.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(exchanger.Code)) + { + exchanger.Code = exchanger.Id; + } + exchanger.Name = jobject[RevitJsonProp.Name].ToString(); + exchanger.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + exchanger.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + exchanger.Description = jobject[RevitJsonProp.Description].ToString(); + if (jobject[RevitJsonProp.Quality].MatchNumeric(out double quality)) + { + exchanger.Quality = quality; + } + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var centerPoint = linkList.GetCenterPoint(); + exchanger.Position = new Model.RevitPosition() + { + X = centerPoint.X, + Y = centerPoint.Y, + Z = centerPoint.Z + }; + if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev)) + { + exchanger.Elev = elev; + } + if (jobject[RevitJsonProp.Demand].MatchNumeric(out double demand)) + { + exchanger.Demand = demand; + } + exchanger.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString(); + model.Exchangers.Add(exchanger); + } + break; + case RevitJsonCatalog.Pipe: + { + var pipe = new Model.RevitPipe(); + pipe.Id = jobject[RevitJsonProp.Id].ToString(); + pipe.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(pipe.Code)) + { + pipe.Code = pipe.Id; + } + pipe.Name = jobject[RevitJsonProp.Name].ToString(); + pipe.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + pipe.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + pipe.Description = jobject[RevitJsonProp.Description].ToString(); + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var startLinker = linkList.GetStartLinker(); + var endLinker = linkList.GetEndLinker(); + pipe.StartCode = startLinker.ConnectId; + pipe.EndCode = endLinker.ConnectId; + pipe.StartPosition = new Model.RevitPosition() + { + X = startLinker.Point.X, + Y = startLinker.Point.Y, + Z = startLinker.Point.Z + }; + pipe.EndPosition = new Model.RevitPosition() + { + X = endLinker.Point.X, + Y = endLinker.Point.Y, + Z = endLinker.Point.Z + }; + pipe.LinkStatus = jobject[RevitJsonProp.LinkStatusPipe].ToString(); + if (jobject[RevitJsonProp.StartElev].MatchNumeric(out double startElev)) + { + pipe.StartElev = startElev; + } + if (jobject[RevitJsonProp.EndElev].MatchNumeric(out double endElev)) + { + pipe.EndElev = endElev; + } + if (jobject[RevitJsonProp.StartQuality].MatchNumeric(out double startQuality)) + { + pipe.StartQuality = startQuality; + } + if (jobject[RevitJsonProp.EndQuality].MatchNumeric(out double endQuality)) + { + pipe.EndQuality = endQuality; + } + + if (jobject[RevitJsonProp.Length].MatchNumeric(out double length)) + { + pipe.Length = length; + } + if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + { + pipe.Diameter = diameter; + } + else if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out double internalDiameter)) + { + pipe.Diameter = internalDiameter; + } + if (jobject[RevitJsonProp.MinorLoss].MatchNumeric(out double minorLoss)) + { + pipe.MinorLoss = minorLoss; + } + if (jobject[RevitJsonProp.Roughness].MatchNumeric(out double roughness)) + { + pipe.Roughness = roughness; + } + model.Pipes.Add(pipe); + } + break; + case RevitJsonCatalog.Translation: + { + var translation = new Model.RevitTranslation(); + translation.Id = jobject[RevitJsonProp.Id].ToString(); + translation.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(translation.Code)) + { + translation.Code = translation.Id; + } + translation.Name = jobject[RevitJsonProp.Name].ToString(); + translation.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + translation.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + translation.Description = jobject[RevitJsonProp.Description].ToString(); + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var startLinker = linkList.GetStartLinker(); + var endLinker = linkList.GetEndLinker(); + translation.StartCode = startLinker.ConnectId; + translation.EndCode = endLinker.ConnectId; + translation.StartPosition = new Model.RevitPosition() + { + X = startLinker.Point.X, + Y = startLinker.Point.Y, + Z = startLinker.Point.Z + }; + translation.EndPosition = new Model.RevitPosition() + { + X = endLinker.Point.X, + Y = endLinker.Point.Y, + Z = endLinker.Point.Z + }; + translation.LinkStatus = jobject[RevitJsonProp.LinkStatusPipe].ToString(); + if (jobject[RevitJsonProp.StartElev].MatchNumeric(out double startElev)) + { + translation.StartElev = startElev; + } + if (jobject[RevitJsonProp.EndElev].MatchNumeric(out double endElev)) + { + translation.EndElev = endElev; + } + if (jobject[RevitJsonProp.StartQuality].MatchNumeric(out double startQuality)) + { + translation.StartQuality = startQuality; + } + if (jobject[RevitJsonProp.EndQuality].MatchNumeric(out double endQuality)) + { + translation.EndQuality = endQuality; + } + + if (jobject[RevitJsonProp.Length].MatchNumeric(out double length)) + { + translation.Length = length; + } + if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + { + translation.Diameter = diameter; + } + else if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out double internalDiameter)) + { + translation.Diameter = internalDiameter; + } + if (jobject[RevitJsonProp.MinorLoss].MatchNumeric(out double minorLoss)) + { + translation.MinorLoss = minorLoss; + } + if (jobject[RevitJsonProp.Roughness].MatchNumeric(out double roughness)) + { + translation.Roughness = roughness; + } + model.Translations.Add(translation); + } + break; + case RevitJsonCatalog.Pump: + { + var pump = new Model.RevitPump(); + pump.Id = jobject[RevitJsonProp.Id].ToString(); + pump.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(pump.Code)) + { + pump.Code = pump.Id; + } + pump.Name = jobject[RevitJsonProp.Name].ToString(); + pump.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + pump.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + pump.Description = jobject[RevitJsonProp.Description].ToString(); + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var startLinker = linkList.GetStartLinker(); + var endLinker = linkList.GetEndLinker(); + pump.StartCode = startLinker.ConnectId; + pump.EndCode = endLinker.ConnectId; + pump.StartPosition = new Model.RevitPosition() + { + X = startLinker.Point.X, + Y = startLinker.Point.Y, + Z = startLinker.Point.Z + }; + pump.EndPosition = new Model.RevitPosition() + { + X = endLinker.Point.X, + Y = endLinker.Point.Y, + Z = endLinker.Point.Z + }; + pump.LinkStatus = jobject[RevitJsonProp.LinkStatusPump].ToString(); + if (jobject[RevitJsonProp.StartElev].MatchNumeric(out double startElev)) + { + pump.StartElev = startElev; + } + if (jobject[RevitJsonProp.EndElev].MatchNumeric(out double endElev)) + { + pump.EndElev = endElev; + } + if (jobject[RevitJsonProp.StartQuality].MatchNumeric(out double startQuality)) + { + pump.StartQuality = startQuality; + } + if (jobject[RevitJsonProp.EndQuality].MatchNumeric(out double endQuality)) + { + pump.EndQuality = endQuality; + } + if (jobject[RevitJsonProp.RatedPower].MatchNumeric(out double ratedPower)) + { + pump.RatedPower = ratedPower; + } + pump.CurveQH = jobject[RevitJsonProp.CurveQH].ToString(); + if (jobject[RevitJsonProp.SpeedRatio].MatchNumeric(out double speedRatio)) + { + pump.SpeedRatio = speedRatio; + } + pump.SpeedRatioPattern = jobject[RevitJsonProp.SpeedRatioPattern].ToString(); + if (jobject[RevitJsonProp.Price].MatchNumeric(out double price)) + { + pump.Price = price; + } + pump.PricePattern = jobject[RevitJsonProp.PricePattern].ToString(); + pump.CurveQE = jobject[RevitJsonProp.CurveQE].ToString(); + model.Pumps.Add(pump); + } + break; + case RevitJsonCatalog.Valve: + { + var valve = new Model.RevitValve(); + valve.Id = jobject[RevitJsonProp.Id].ToString(); + valve.Code = jobject[RevitJsonProp.Code].ToString(); + if (string.IsNullOrEmpty(valve.Code)) + { + valve.Code = valve.Id; + } + valve.Name = jobject[RevitJsonProp.Name].ToString(); + valve.ModelType = jobject[RevitJsonProp.ModelType].ToString(); + valve.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString()); + valve.Description = jobject[RevitJsonProp.Description].ToString(); + var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString()); + var startLinker = linkList.GetStartLinker(); + var endLinker = linkList.GetEndLinker(); + valve.StartCode = startLinker.ConnectId; + valve.EndCode = endLinker.ConnectId; + valve.StartPosition = new Model.RevitPosition() + { + X = startLinker.Point.X, + Y = startLinker.Point.Y, + Z = startLinker.Point.Z + }; + valve.EndPosition = new Model.RevitPosition() + { + X = endLinker.Point.X, + Y = endLinker.Point.Y, + Z = endLinker.Point.Z + }; + valve.LinkStatus = jobject[RevitJsonProp.LinkStatusValve].ToString(); + if (jobject[RevitJsonProp.StartElev].MatchNumeric(out double startElev)) + { + valve.StartElev = startElev; + } + if (jobject[RevitJsonProp.EndElev].MatchNumeric(out double endElev)) + { + valve.EndElev = endElev; + } + if (jobject[RevitJsonProp.StartQuality].MatchNumeric(out double startQuality)) + { + valve.StartQuality = startQuality; + } + if (jobject[RevitJsonProp.EndQuality].MatchNumeric(out double endQuality)) + { + valve.EndQuality = endQuality; + } + if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + { + valve.Diameter = diameter; + } + if (jobject[RevitJsonProp.MinorLoss].MatchNumeric(out double minorLoss)) + { + valve.MinorLoss = minorLoss; + } + + valve.ValveType = jobject[RevitJsonProp.ValveType].ToString(); + valve.ValveSetting = jobject[RevitJsonProp.ValveSetting].ToString(); + model.Valves.Add(valve); + } + break; + + default: break; + } } + + return model; + } + catch (Exception ex) + { + msg = ex.Message; + return default; } - return model; } /// <summary> @@ -598,14 +876,15 @@ /// </summary> /// <param name="revitJsonFile">json鏂囦欢璺緞</param> /// <returns></returns> - public static Model.RevitModel FromJsonFile(string revitJsonFile) + public static Model.RevitModel FromJsonFile(string revitJsonFile, out string msg) { if (!File.Exists(revitJsonFile)) { + msg = "Json 鏂囦欢涓嶅瓨鍦�"; return default; } var revitJson = File.ReadAllText(revitJsonFile); - var revitModel = FromJsonString(revitJson); + var revitModel = FromJsonString(revitJson, out msg); if (revitModel == null) { return default; @@ -614,5 +893,6 @@ revitModel.Description = $"瑙f瀽銆恵Path.GetFileName(revitJsonFile)}銆戞枃浠�"; return revitModel; } + } } -- Gitblit v1.9.3