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 |  265 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 259 insertions(+), 6 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 f449429..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
                 {
@@ -1577,6 +1618,11 @@
                 elbow.UpdatePropStatus(nameof(elbow.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (elbow.Flags == null)
+            {
+                elbow.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -1646,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
                 {
@@ -1855,6 +1909,11 @@
                 threelink.UpdatePropStatus(nameof(threelink.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (threelink.Flags == null)
+            {
+                threelink.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -1924,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
                 {
@@ -2129,6 +2196,11 @@
                 fourlink.UpdatePropStatus(nameof(fourlink.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (fourlink.Flags == null)
+            {
+                fourlink.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -2198,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
                 {
@@ -2377,6 +2457,11 @@
                 nozzle.UpdatePropStatus(nameof(nozzle.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (nozzle.Flags == null)
+            {
+                nozzle.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -2446,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
                 {
@@ -2648,6 +2741,11 @@
                 hydrant.UpdatePropStatus(nameof(hydrant.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (hydrant.Flags == null)
+            {
+                hydrant.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -2717,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
                 {
@@ -2914,6 +3020,11 @@
                 cooling.UpdatePropStatus(nameof(cooling.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (cooling.Flags == null)
+            {
+                cooling.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -2983,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
                 {
@@ -3197,6 +3316,11 @@
                 meter.UpdatePropStatus(nameof(meter.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (meter.Flags == null)
+            {
+                meter.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -3266,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
                 {
@@ -3408,6 +3540,11 @@
                 flowmeter.UpdatePropStatus(nameof(flowmeter.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (flowmeter.Flags == null)
+            {
+                flowmeter.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -3477,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
                 {
@@ -3632,6 +3777,11 @@
                 pressmeter.UpdatePropStatus(nameof(pressmeter.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (pressmeter.Flags == null)
+            {
+                pressmeter.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -3701,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
                 {
@@ -3857,6 +4015,11 @@
             else
             {
                 pipe.UpdatePropStatus(nameof(pipe.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
+            }
+
+            if (pipe.Flags == null)
+            {
+                pipe.Flags = new List<string>();
             }
 
             #endregion
@@ -4172,6 +4335,11 @@
                 translation.UpdatePropStatus(nameof(translation.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (translation.Flags == null)
+            {
+                translation.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -4290,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
                 {
@@ -4529,6 +4705,11 @@
                 pump.UpdatePropStatus(nameof(pump.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (pump.Flags == null)
+            {
+                pump.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -4647,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
                 {
@@ -4927,6 +5116,11 @@
                 valve.UpdatePropStatus(nameof(valve.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (valve.Flags == null)
+            {
+                valve.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -5018,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
                 {
@@ -5102,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
@@ -5115,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
@@ -5128,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
@@ -5305,6 +5532,11 @@
                 exchanger.UpdatePropStatus(nameof(exchanger.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (exchanger.Flags == null)
+            {
+                exchanger.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -5423,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
                 {
@@ -5623,6 +5863,11 @@
                 compressor.UpdatePropStatus(nameof(compressor.Flags), ePropStatus.Error, "缂哄皯[鏍囩淇℃伅]");
             }
 
+            if (compressor.Flags == null)
+            {
+                compressor.Flags = new List<string>();
+            }
+
             #endregion
 
             #region Description
@@ -5741,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
                 {

--
Gitblit v1.9.3