From 40e445d68998eacd39a750cec349fa025fc56fe2 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期三, 15 一月 2025 13:50:29 +0800 Subject: [PATCH] 解析参照标高 --- Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs | 344 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 322 insertions(+), 22 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 b1af633..cc20c22 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 @@ -372,6 +372,10 @@ { reservoir.UpdatePropStatus(nameof(reservoir.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (reservoir.Flags == null) + { + reservoir.Flags = new List<string>(); + } #endregion @@ -569,6 +573,11 @@ else { tank.UpdatePropStatus(nameof(tank.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); + } + + if (tank.Flags == null) + { + tank.Flags = new List<string>(); } #endregion @@ -844,6 +853,11 @@ waterbox.UpdatePropStatus(nameof(waterbox.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (waterbox.Flags == null) + { + waterbox.Flags = new List<string>(); + } + #endregion #region Description @@ -1117,6 +1131,11 @@ junction.UpdatePropStatus(nameof(junction.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (junction.Flags == null) + { + junction.Flags = new List<string>(); + } + #endregion #region Description @@ -1186,11 +1205,20 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { junction.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + junction.Elev += facade / 1000f; + } + } } else { junction.UpdatePropStatus(nameof(junction.Elev), ePropStatus.Abnormal, "[鏍囬珮涓殑楂樼▼]缂哄皯鎴栬�呮牸寮忛敊璇�"); } + } if (junction.Elev <= 0) @@ -1328,6 +1356,11 @@ blunthead.UpdatePropStatus(nameof(blunthead.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (blunthead.Flags == null) + { + blunthead.Flags = new List<string>(); + } + #endregion #region Description @@ -1397,6 +1430,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { blunthead.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + blunthead.Elev += facade / 1000f; + } + } } else { @@ -1443,7 +1484,14 @@ { blunthead.Caliber = caliber; } - else + if (blunthead.Caliber <= 0) + { + if (jobject[RevitJsonProp.DN].MatchNumeric(out caliber)) + { + blunthead.Caliber = caliber; + } + } + if (blunthead.Caliber <= 0) { blunthead.UpdatePropStatus(nameof(blunthead.Caliber), ePropStatus.Abnormal, "[鍙e緞淇℃伅]缂哄皯鎴栬�呮暟鎹牸寮忛敊璇�"); } @@ -1570,6 +1618,11 @@ elbow.UpdatePropStatus(nameof(elbow.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (elbow.Flags == null) + { + elbow.Flags = new List<string>(); + } + #endregion #region Description @@ -1639,6 +1692,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { elbow.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + elbow.Elev += facade / 1000f; + } + } } else { @@ -1685,7 +1746,14 @@ { elbow.Caliber = caliber; } - else + if (elbow.Caliber <= 0) + { + if (jobject[RevitJsonProp.DN].MatchNumeric(out caliber)) + { + elbow.Caliber = caliber; + } + } + if (elbow.Caliber <= 0) { elbow.UpdatePropStatus(nameof(elbow.Caliber), ePropStatus.Abnormal, "[鍙e緞淇℃伅]缂哄皯鎴栬�呮暟鎹牸寮忛敊璇�"); } @@ -1739,7 +1807,7 @@ if (jobject[RevitJsonProp.BendingAngle].MatchNumeric(out double bendingAngle)) { - elbow.BendingAngle = bendingAngle; + elbow.BendingAngle = (int)bendingAngle; } else { @@ -1841,6 +1909,11 @@ threelink.UpdatePropStatus(nameof(threelink.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (threelink.Flags == null) + { + threelink.Flags = new List<string>(); + } + #endregion #region Description @@ -1910,6 +1983,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { threelink.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + threelink.Elev += facade / 1000f; + } + } } else { @@ -1956,7 +2037,14 @@ { threelink.Caliber = caliber; } - else + if (threelink.Caliber <= 0) + { + if (jobject[RevitJsonProp.DN].MatchNumeric(out caliber)) + { + threelink.Caliber = caliber; + } + } + if (threelink.Caliber <= 0) { threelink.UpdatePropStatus(nameof(threelink.Caliber), ePropStatus.Abnormal, "[鍙e緞淇℃伅]缂哄皯鎴栬�呮暟鎹牸寮忛敊璇�"); } @@ -2108,6 +2196,11 @@ fourlink.UpdatePropStatus(nameof(fourlink.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (fourlink.Flags == null) + { + fourlink.Flags = new List<string>(); + } + #endregion #region Description @@ -2177,6 +2270,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { fourlink.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + fourlink.Elev += facade / 1000f; + } + } } else { @@ -2223,7 +2324,14 @@ { fourlink.Caliber = caliber; } - else + if (fourlink.Caliber <= 0) + { + if (jobject[RevitJsonProp.DN].MatchNumeric(out caliber)) + { + fourlink.Caliber = caliber; + } + } + if (fourlink.Caliber <= 0) { fourlink.UpdatePropStatus(nameof(fourlink.Caliber), ePropStatus.Abnormal, "[鍙e緞淇℃伅]缂哄皯鎴栬�呮暟鎹牸寮忛敊璇�"); } @@ -2349,6 +2457,11 @@ nozzle.UpdatePropStatus(nameof(nozzle.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (nozzle.Flags == null) + { + nozzle.Flags = new List<string>(); + } + #endregion #region Description @@ -2418,6 +2531,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { nozzle.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + nozzle.Elev += facade / 1000f; + } + } } else { @@ -2620,6 +2741,11 @@ hydrant.UpdatePropStatus(nameof(hydrant.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (hydrant.Flags == null) + { + hydrant.Flags = new List<string>(); + } + #endregion #region Description @@ -2689,6 +2815,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { hydrant.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + hydrant.Elev += facade / 1000f; + } + } } else { @@ -2886,6 +3020,11 @@ cooling.UpdatePropStatus(nameof(cooling.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (cooling.Flags == null) + { + cooling.Flags = new List<string>(); + } + #endregion #region Description @@ -2955,6 +3094,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { cooling.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + cooling.Elev += facade / 1000f; + } + } } else { @@ -3169,6 +3316,11 @@ meter.UpdatePropStatus(nameof(meter.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (meter.Flags == null) + { + meter.Flags = new List<string>(); + } + #endregion #region Description @@ -3238,6 +3390,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { meter.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + meter.Elev += facade / 1000f; + } + } } else { @@ -3380,6 +3540,11 @@ flowmeter.UpdatePropStatus(nameof(flowmeter.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (flowmeter.Flags == null) + { + flowmeter.Flags = new List<string>(); + } + #endregion #region Description @@ -3449,6 +3614,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { flowmeter.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + flowmeter.Elev += facade / 1000f; + } + } } else { @@ -3604,6 +3777,11 @@ pressmeter.UpdatePropStatus(nameof(pressmeter.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (pressmeter.Flags == null) + { + pressmeter.Flags = new List<string>(); + } + #endregion #region Description @@ -3673,6 +3851,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { pressmeter.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + pressmeter.Elev += facade / 1000f; + } + } } else { @@ -3784,7 +3970,10 @@ if (jobject.ParseString(RevitJsonProp.Name, out string name)) { pipe.Name = name; - pipe.UpdatePropStatus(nameof(pipe.Name), ePropStatus.Lack, "[鏋勪欢鍚嶇О]缂虹渷"); + if (string.IsNullOrEmpty(pipe.Name)) + { + pipe.UpdatePropStatus(nameof(pipe.Name), ePropStatus.Lack, "[鏋勪欢鍚嶇О]缂虹渷"); + } } else { @@ -3814,7 +4003,7 @@ if (jobject.ParseString(RevitJsonProp.Flags, out string flags)) { - pipe.Flags = Yw.Untity.FlagsHelper.ToList(flags); + pipe.Flags = RevitFlagsHelper.ToList(flags); if (!string.IsNullOrEmpty(flags)) { if (pipe.Flags == null || pipe.Flags.Count < 1) @@ -3826,6 +4015,11 @@ else { pipe.UpdatePropStatus(nameof(pipe.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); + } + + if (pipe.Flags == null) + { + pipe.Flags = new List<string>(); } #endregion @@ -3949,7 +4143,8 @@ #region Diameter - if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + //鐩村緞淇℃伅 + if (jobject[RevitJsonProp.DiameterInfo].MatchNumeric(out double diameter)) { pipe.Diameter = diameter; } @@ -3958,11 +4153,26 @@ pipe.UpdatePropStatus(nameof(pipe.Diameter), ePropStatus.Abnormal, "[鐩村緞淇℃伅]缂哄皯鎴栬�呮牸寮忛敊璇�"); } + //鐩村緞 if (pipe.Diameter < 1) { - if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out double internalDiameter)) + if (jobject[RevitJsonProp.Diameter].MatchNumeric(out diameter)) { - pipe.Diameter = internalDiameter; + pipe.Diameter = diameter; + pipe.UpdatePropStatus(nameof(pipe.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅]閫氳繃[鐩村緞]杩涜淇]"); + } + else + { + pipe.UpdatePropStatus(nameof(pipe.Diameter), ePropStatus.Abnormal, "[鐩村緞淇℃伅]鏃犳硶閫氳繃[鐩村緞]杩涜淇]"); + } + } + + //鍐呭緞 + if (pipe.Diameter < 1) + { + if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out diameter)) + { + pipe.Diameter = diameter; pipe.UpdatePropStatus(nameof(pipe.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅]閫氳繃[鍐呭緞]杩涜淇]"); } else @@ -3971,6 +4181,7 @@ } } + //鍏О鐩村緞 if (pipe.Diameter < 1) { if (jobject[RevitJsonProp.DN].MatchNumeric(out double dn)) @@ -3986,8 +4197,7 @@ if (pipe.Diameter < 1) { - pipe.Diameter = 500; - pipe.UpdatePropStatus(nameof(pipe.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅][鍐呭緞]瑙f瀽閿欒锛屼娇鐢ㄩ粯璁ゅ��(500mm)淇]"); + pipe.UpdatePropStatus(nameof(pipe.Diameter), ePropStatus.Error, "[鐩村緞淇℃伅]瑙f瀽閿欒锛屾棤娉曢�氳繃銆愮洿寰勩�戙�愬唴寰勩�戙�愬叕绉扮洿寰勩�戜慨澶�"); } #endregion @@ -4125,6 +4335,11 @@ translation.UpdatePropStatus(nameof(translation.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (translation.Flags == null) + { + translation.Flags = new List<string>(); + } + #endregion #region Description @@ -4243,6 +4458,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { translation.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + translation.Elev += facade / 1000f; + } + } } else { @@ -4289,7 +4512,7 @@ #region Diameter - if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + if (jobject[RevitJsonProp.DiameterInfo].MatchNumeric(out double diameter)) { translation.Diameter = diameter; } @@ -4482,6 +4705,11 @@ pump.UpdatePropStatus(nameof(pump.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (pump.Flags == null) + { + pump.Flags = new List<string>(); + } + #endregion #region Description @@ -4600,6 +4828,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { pump.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + pump.Elev += facade / 1000f; + } + } } else { @@ -4880,6 +5116,11 @@ valve.UpdatePropStatus(nameof(valve.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (valve.Flags == null) + { + valve.Flags = new List<string>(); + } + #endregion #region Description @@ -4971,6 +5212,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { valve.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + valve.Elev += facade / 1000f; + } + } } else { @@ -5044,7 +5293,7 @@ #region Diameter - if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + if (jobject[RevitJsonProp.DiameterInfo].MatchNumeric(out double diameter)) { valve.Diameter = diameter; } @@ -5055,9 +5304,9 @@ if (valve.Diameter < 1) { - if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out double internalDiameter)) + if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out diameter)) { - valve.Diameter = internalDiameter; + valve.Diameter = diameter; valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅]閫氳繃[鍐呭緞]杩涜淇]"); } else @@ -5068,9 +5317,9 @@ if (valve.Diameter < 1) { - if (jobject[RevitJsonProp.DN].MatchNumeric(out double dn)) + if (jobject[RevitJsonProp.DN].MatchNumeric(out diameter)) { - valve.Diameter = dn; + valve.Diameter = diameter; valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅]閫氳繃[鍏О鐩村緞]杩涜淇]"); } else @@ -5081,8 +5330,33 @@ if (valve.Diameter < 1) { - valve.Diameter = 500; - valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅][鍐呭緞]瑙f瀽閿欒锛屼娇鐢ㄩ粯璁ゅ��(500mm)淇]"); + if (jobject[RevitJsonProp.MaxSize].MatchNumeric(out diameter)) + { + valve.Diameter = diameter; + valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅]閫氳繃[鏈�澶у昂瀵竇杩涜淇]"); + } + else + { + valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Abnormal, "[鐩村緞淇℃伅]鏃犳硶閫氳繃[鏈�澶у昂瀵竇杩涜淇]"); + } + } + + if (valve.Diameter < 1) + { + if (jobject[RevitJsonProp.MinSize].MatchNumeric(out diameter)) + { + valve.Diameter = diameter; + valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅]閫氳繃[鏈�灏忓昂瀵竇杩涜淇]"); + } + else + { + valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Abnormal, "[鐩村緞淇℃伅]鏃犳硶閫氳繃[鏈�灏忓昂瀵竇杩涜淇]"); + } + } + + if (valve.Diameter < 1) + { + valve.UpdatePropStatus(nameof(valve.Diameter), ePropStatus.Lack, "[鐩村緞淇℃伅]瑙f瀽閿欒锛屾棤娉曢�氳繃[鍐呭緞][鍏О鐩村緞][鏈�澶у昂瀵竇[鏈�灏忓昂瀵竇淇"); } #endregion @@ -5258,6 +5532,11 @@ exchanger.UpdatePropStatus(nameof(exchanger.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (exchanger.Flags == null) + { + exchanger.Flags = new List<string>(); + } + #endregion #region Description @@ -5376,6 +5655,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { exchanger.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + exchanger.Elev += facade / 1000f; + } + } } else { @@ -5422,7 +5709,7 @@ #region Diameter - if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + if (jobject[RevitJsonProp.DiameterInfo].MatchNumeric(out double diameter)) { exchanger.Diameter = diameter; } @@ -5576,6 +5863,11 @@ compressor.UpdatePropStatus(nameof(compressor.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]"); } + if (compressor.Flags == null) + { + compressor.Flags = new List<string>(); + } + #endregion #region Description @@ -5694,6 +5986,14 @@ if (jobject[RevitJsonProp.ElevOfElevation].MatchNumeric(out double elevOfElevation)) { compressor.Elev = elevOfElevation / 1000f; + var jre = jobject[RevitJsonProp.ElevOfReference]; + if (jre != null) + { + if (jre[RevitJsonProp.ElevFacade].MatchNumeric(out double facade)) + { + compressor.Elev += facade / 1000f; + } + } } else { @@ -5740,7 +6040,7 @@ #region Diameter - if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter)) + if (jobject[RevitJsonProp.DiameterInfo].MatchNumeric(out double diameter)) { compressor.Diameter = diameter; } -- Gitblit v1.9.3