From 32b2fee0421e7997672fe4a14fe5bf9a6de926c2 Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期五, 27 九月 2024 15:45:58 +0800
Subject: [PATCH] 冲突

---
 Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs |  849 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 546 insertions(+), 303 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 4e47512..bf1d296 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
@@ -1,4 +1,6 @@
-锘縩amespace HStation.Service
+锘縰sing System.Transactions;
+
+namespace HStation.Service
 {
     /// <summary>
     /// Revit Json杈呭姪绫�
@@ -8,9 +10,12 @@
         /// <summary>
         /// 浠巎son瀛楃涓蹭腑瑙f瀽
         /// </summary>
-        /// <param name="revitJsonString">json瀛楃涓�</param>
-        /// <returns>鏍煎紡閿欒锛屼細鎶涘嚭寮傚父</returns>
-        public static HStation.Model.RevitModel FromJsonString(string revitJsonString, out string msg)
+        public static HStation.Model.RevitModel FromJsonString
+            (
+                string revitJsonString,
+                string revitOthersJsonString,
+                out string msg
+            )
         {
             msg = string.Empty;
             if (string.IsNullOrEmpty(revitJsonString))
@@ -22,6 +27,7 @@
             {
                 var model = new Model.RevitModel();
 
+                //瑙f瀽缁撴瀯json
                 var jarray = JArray.Parse(revitJsonString);
                 for (int i = 0; i < jarray.Count; i++)
                 {
@@ -42,18 +48,24 @@
                                 reservoir.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 reservoir.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 reservoir.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                reservoir.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
+
                                 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
-                                };
+                                reservoir.Position = reservoir.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.PoolElev].MatchNumeric(out double poolElev))
                                 {
                                     reservoir.PoolElev = poolElev;
@@ -63,6 +75,10 @@
                                     reservoir.Head = head;
                                 }
                                 reservoir.HeadPattern = jobject[RevitJsonProp.HeadPattern].ToString();
+                                if (!string.IsNullOrEmpty(reservoir.HeadPattern))
+                                {
+                                    reservoir.HeadPattern = string.Empty;
+                                }
                                 model.Reservoirs.Add(reservoir);
                             }
                             break;
@@ -79,18 +95,23 @@
                                 tank.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 tank.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 tank.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                tank.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                tank.Position = tank.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.PoolElev].MatchNumeric(out double poolElev))
                                 {
                                     tank.PoolElev = poolElev;
@@ -116,6 +137,10 @@
                                     tank.MinVol = minVol;
                                 }
                                 tank.VolCurve = jobject[RevitJsonProp.VolCurve].ToString();
+                                if (!string.IsNullOrEmpty(tank.VolCurve))
+                                {
+                                    tank.VolCurve = string.Empty;
+                                }
                                 model.Tanks.Add(tank);
                             }
                             break;
@@ -132,18 +157,23 @@
                                 waterbox.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 waterbox.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 waterbox.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                waterbox.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                waterbox.Position = waterbox.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.PoolElev].MatchNumeric(out double poolElev))
                                 {
                                     waterbox.PoolElev = poolElev;
@@ -169,6 +199,10 @@
                                     waterbox.MinVol = minVol;
                                 }
                                 waterbox.VolCurve = jobject[RevitJsonProp.VolCurve].ToString();
+                                if (!string.IsNullOrEmpty(waterbox.VolCurve))
+                                {
+                                    waterbox.VolCurve = string.Empty;
+                                }
                                 model.Waterboxs.Add(waterbox);
                             }
                             break;
@@ -185,18 +219,23 @@
                                 junction.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 junction.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 junction.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                junction.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                junction.Position = junction.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     junction.Elev = elev;
@@ -206,6 +245,10 @@
                                     junction.Demand = demand;
                                 }
                                 junction.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(junction.DemandPattern))
+                                {
+                                    junction.DemandPattern = string.Empty;
+                                }
                                 model.Junctions.Add(junction);
                             }
                             break;
@@ -222,18 +265,23 @@
                                 elbow.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 elbow.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 elbow.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                elbow.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                elbow.Position = elbow.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     elbow.Elev = elev;
@@ -243,6 +291,10 @@
                                     elbow.Demand = demand;
                                 }
                                 elbow.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(elbow.DemandPattern))
+                                {
+                                    elbow.DemandPattern = string.Empty;
+                                }
                                 model.Elbows.Add(elbow);
                             }
                             break;
@@ -259,18 +311,23 @@
                                 threelink.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 threelink.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 threelink.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                threelink.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                threelink.Position = threelink.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     threelink.Elev = elev;
@@ -280,6 +337,10 @@
                                     threelink.Demand = demand;
                                 }
                                 threelink.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(threelink.DemandPattern))
+                                {
+                                    threelink.DemandPattern = string.Empty;
+                                }
                                 model.Threelinks.Add(threelink);
                             }
                             break;
@@ -296,18 +357,23 @@
                                 fourlink.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 fourlink.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 fourlink.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                fourlink.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                fourlink.Position = fourlink.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     fourlink.Elev = elev;
@@ -317,6 +383,10 @@
                                     fourlink.Demand = demand;
                                 }
                                 fourlink.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(fourlink.DemandPattern))
+                                {
+                                    fourlink.DemandPattern = string.Empty;
+                                }
                                 model.Fourlinks.Add(fourlink);
                             }
                             break;
@@ -333,18 +403,23 @@
                                 meter.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 meter.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 meter.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                meter.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                meter.Position = meter.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     meter.Elev = elev;
@@ -354,6 +429,10 @@
                                     meter.Demand = demand;
                                 }
                                 meter.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(meter.DemandPattern))
+                                {
+                                    meter.DemandPattern = string.Empty;
+                                }
                                 model.Meters.Add(meter);
                             }
                             break;
@@ -370,18 +449,23 @@
                                 flowmeter.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 flowmeter.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 flowmeter.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                flowmeter.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                flowmeter.Position = flowmeter.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     flowmeter.Elev = elev;
@@ -391,6 +475,10 @@
                                     flowmeter.Demand = demand;
                                 }
                                 flowmeter.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(flowmeter.DemandPattern))
+                                {
+                                    flowmeter.DemandPattern = string.Empty;
+                                }
                                 model.Flowmeters.Add(flowmeter);
                             }
                             break;
@@ -407,18 +495,23 @@
                                 pressmeter.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 pressmeter.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 pressmeter.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                pressmeter.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                pressmeter.Position = pressmeter.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     pressmeter.Elev = elev;
@@ -428,6 +521,10 @@
                                     pressmeter.Demand = demand;
                                 }
                                 pressmeter.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(pressmeter.DemandPattern))
+                                {
+                                    pressmeter.DemandPattern = string.Empty;
+                                }
                                 model.Pressmeters.Add(pressmeter);
                             }
                             break;
@@ -444,18 +541,23 @@
                                 blunthead.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 blunthead.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 blunthead.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                blunthead.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                blunthead.Position = blunthead.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     blunthead.Elev = elev;
@@ -465,6 +567,10 @@
                                     blunthead.Demand = demand;
                                 }
                                 blunthead.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(blunthead.DemandPattern))
+                                {
+                                    blunthead.DemandPattern = string.Empty;
+                                }
                                 model.Bluntheads.Add(blunthead);
                             }
                             break;
@@ -481,18 +587,23 @@
                                 nozzle.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 nozzle.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 nozzle.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                nozzle.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                nozzle.Position = nozzle.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     nozzle.Elev = elev;
@@ -502,6 +613,10 @@
                                     nozzle.Demand = demand;
                                 }
                                 nozzle.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(nozzle.DemandPattern))
+                                {
+                                    nozzle.DemandPattern = string.Empty;
+                                }
                                 if (jobject[RevitJsonProp.CoefficientP].MatchNumeric(out double coeffient))
                                 {
                                     nozzle.Coefficient = coeffient;
@@ -522,18 +637,23 @@
                                 hydrant.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 hydrant.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 hydrant.Description = jobject[RevitJsonProp.Description].ToString();
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                hydrant.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
                                 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
-                                };
+                                hydrant.Position = hydrant.ConnectList.GetCenterPosition();
                                 if (jobject[RevitJsonProp.Elev].MatchNumeric(out double elev))
                                 {
                                     hydrant.Elev = elev;
@@ -543,153 +663,15 @@
                                     hydrant.Demand = demand;
                                 }
                                 hydrant.DemandPattern = jobject[RevitJsonProp.DemandPattern].ToString();
+                                if (!string.IsNullOrEmpty(hydrant.DemandPattern))
+                                {
+                                    hydrant.DemandPattern = string.Empty;
+                                }
                                 if (jobject[RevitJsonProp.CoefficientF].MatchNumeric(out double coeffient))
                                 {
                                     hydrant.Coefficient = coeffient;
                                 }
                                 model.Hydrants.Add(hydrant);
-                            }
-                            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.Exchanger:
@@ -705,23 +687,24 @@
                                 exchanger.ModelType = jobject[RevitJsonProp.ModelType].ToString();
                                 exchanger.Flags = Yw.Untity.FlagsHelper.ToList(jobject[RevitJsonProp.Flags].ToString());
                                 exchanger.Description = jobject[RevitJsonProp.Description].ToString();
-                                var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject[RevitJsonProp.Links].ToString());
-                                var startLinker = linkList.GetStartLinker();
-                                var endLinker = linkList.GetEndLinker();
-                                exchanger.StartCode = startLinker.ConnectId;
-                                exchanger.EndCode = endLinker.ConnectId;
-                                exchanger.StartPosition = new Model.RevitPosition()
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                exchanger.ConnectList = connectList?.Select(x => new Model.RevitConnect()
                                 {
-                                    X = startLinker.Point.X,
-                                    Y = startLinker.Point.Y,
-                                    Z = startLinker.Point.Z
-                                };
-                                exchanger.EndPosition = new Model.RevitPosition()
-                                {
-                                    X = endLinker.Point.X,
-                                    Y = endLinker.Point.Y,
-                                    Z = endLinker.Point.Z
-                                };
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
+                                var startConnect = exchanger.ConnectList.GetStartConnect();
+                                var endConnect = exchanger.ConnectList.GetEndConnect();
+                                exchanger.StartCode = startConnect.Id;
+                                exchanger.EndCode = endConnect.Id;
+                                exchanger.StartPosition = startConnect.Position;
+                                exchanger.EndPosition = endConnect.Position;
                                 exchanger.LinkStatus = jobject[RevitJsonProp.LinkStatusPipe].ToString();
                                 if (jobject[RevitJsonProp.StartElev].MatchNumeric(out double startElev))
                                 {
@@ -760,7 +743,199 @@
                                 {
                                     exchanger.Roughness = roughness;
                                 }
+                                if (exchanger.Length <= 0)
+                                {
+                                    exchanger.Length = exchanger.StartPosition.Distance(exchanger.EndPosition);
+                                }
+                                if (exchanger.Diameter < 0.1)
+                                {
+                                    exchanger.Diameter = 500;
+                                }
+                                if (exchanger.Roughness < 0.1)
+                                {
+                                    exchanger.Roughness = 110;
+                                }
                                 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 connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                pipe.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
+                                var startConnect = pipe.ConnectList.GetStartConnect();
+                                var endConnect = pipe.ConnectList.GetEndConnect();
+                                pipe.StartCode = startConnect.Id;
+                                pipe.EndCode = endConnect.Id;
+                                pipe.StartPosition = startConnect.Position;
+                                pipe.EndPosition = endConnect.Position;
+                                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;
+                                }
+
+
+                                #region 鐩村緞
+
+                                if (jobject[RevitJsonProp.Diameter].MatchNumeric(out double diameter))
+                                {
+                                    pipe.Diameter = diameter;
+                                }
+
+                                if (pipe.Diameter < 1)
+                                {
+                                    if (jobject[RevitJsonProp.InternalDiameter].MatchNumeric(out double internalDiameter))
+                                    {
+                                        pipe.Diameter = internalDiameter;
+                                    }
+                                }
+
+                                #endregion
+
+
+                                if (jobject[RevitJsonProp.MinorLoss].MatchNumeric(out double minorLoss))
+                                {
+                                    pipe.MinorLoss = minorLoss;
+                                }
+                                if (jobject[RevitJsonProp.Roughness].MatchNumeric(out double roughness))
+                                {
+                                    pipe.Roughness = roughness;
+                                }
+                                if (pipe.Length <= 0)
+                                {
+                                    pipe.Length = pipe.StartPosition.Distance(pipe.EndPosition);
+                                }
+                                if (pipe.Diameter < 0.1)
+                                {
+                                    pipe.Diameter = 500;
+                                }
+                                if (pipe.Roughness < 0.1)
+                                {
+                                    pipe.Roughness = 110;
+                                }
+                                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 connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                translation.ConnectList = connectList?.Select(x => new Model.RevitConnect()
+                                {
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
+                                var startConnect = translation.ConnectList.GetStartConnect();
+                                var endConnect = translation.ConnectList.GetEndConnect();
+                                translation.StartCode = startConnect.Id;
+                                translation.EndCode = endConnect.Id;
+                                translation.StartPosition = startConnect.Position;
+                                translation.EndPosition = endConnect.Position;
+                                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;
+                                }
+                                if (translation.Length <= 0)
+                                {
+                                    translation.Length = translation.StartPosition.Distance(translation.EndPosition);
+                                }
+                                if (translation.Diameter < 0.1)
+                                {
+                                    translation.Diameter = 500;
+                                }
+                                if (translation.Roughness < 0.1)
+                                {
+                                    translation.Roughness = 110;
+                                }
+                                model.Translations.Add(translation);
                             }
                             break;
                         case RevitJsonCatalog.Pump:
@@ -776,23 +951,24 @@
                                 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()
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                pump.ConnectList = connectList?.Select(x => new Model.RevitConnect()
                                 {
-                                    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
-                                };
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
+                                var startConnect = pump.ConnectList.GetStartConnect();
+                                var endConnect = pump.ConnectList.GetEndConnect();
+                                pump.StartCode = startConnect.Id;
+                                pump.EndCode = endConnect.Id;
+                                pump.StartPosition = startConnect.Position;
+                                pump.EndPosition = endConnect.Position;
                                 pump.LinkStatus = jobject[RevitJsonProp.LinkStatusPump].ToString();
                                 if (jobject[RevitJsonProp.StartElev].MatchNumeric(out double startElev))
                                 {
@@ -815,17 +991,30 @@
                                     pump.RatedPower = ratedPower;
                                 }
                                 pump.CurveQH = jobject[RevitJsonProp.CurveQH].ToString();
+                                pump.CurveQH = "PumpDefault";
                                 if (jobject[RevitJsonProp.SpeedRatio].MatchNumeric(out double speedRatio))
                                 {
                                     pump.SpeedRatio = speedRatio;
                                 }
                                 pump.SpeedRatioPattern = jobject[RevitJsonProp.SpeedRatioPattern].ToString();
+                                if (!string.IsNullOrEmpty(pump.SpeedRatioPattern))
+                                {
+                                    pump.SpeedRatioPattern = string.Empty;
+                                }
                                 if (jobject[RevitJsonProp.Price].MatchNumeric(out double price))
                                 {
                                     pump.Price = price;
                                 }
                                 pump.PricePattern = jobject[RevitJsonProp.PricePattern].ToString();
+                                if (!string.IsNullOrEmpty(pump.PricePattern))
+                                {
+                                    pump.PricePattern = string.Empty;
+                                }
                                 pump.CurveQE = jobject[RevitJsonProp.CurveQE].ToString();
+                                if (!string.IsNullOrEmpty(pump.CurveQE))
+                                {
+                                    pump.CurveQE = string.Empty;
+                                }
                                 model.Pumps.Add(pump);
                             }
                             break;
@@ -842,23 +1031,24 @@
                                 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()
+                                var connectList = JsonHelper.Json2Object<List<RevitJsonConnectModel>>(jobject[RevitJsonProp.Connects].ToString());
+                                valve.ConnectList = connectList?.Select(x => new Model.RevitConnect()
                                 {
-                                    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
-                                };
+                                    Id = x.ConnectId,
+                                    Direction = x.Dirction,
+                                    Position = new Model.RevitPosition()
+                                    {
+                                        X = x.Point.X,
+                                        Y = x.Point.Y,
+                                        Z = x.Point.Z
+                                    }
+                                }).ToList();
+                                var startConnect = valve.ConnectList.GetStartConnect();
+                                var endConnect = valve.ConnectList.GetEndConnect();
+                                valve.StartCode = startConnect.Id;
+                                valve.EndCode = endConnect.Id;
+                                valve.StartPosition = startConnect.Position;
+                                valve.EndPosition = endConnect.Position;
                                 valve.LinkStatus = jobject[RevitJsonProp.LinkStatusValve].ToString();
                                 if (jobject[RevitJsonProp.StartElev].MatchNumeric(out double startElev))
                                 {
@@ -885,13 +1075,63 @@
                                     valve.MinorLoss = minorLoss;
                                 }
 
+                                if (valve.Diameter < 0.1)
+                                {
+                                    valve.Diameter = 500;
+                                }
+
                                 valve.ValveType = jobject[RevitJsonProp.ValveType].ToString();
                                 valve.ValveSetting = jobject[RevitJsonProp.ValveSetting].ToString();
                                 model.Valves.Add(valve);
                             }
                             break;
-
+                        case RevitJsonCatalog.Other:
+                            {
+                                var decorator = new Model.RevitDecorator();
+                                decorator.Id = jobject[RevitJsonProp.Id].ToString();
+                                decorator.Code = jobject[RevitJsonProp.Code].ToString();
+                                if (string.IsNullOrEmpty(decorator.Code))
+                                {
+                                    decorator.Code = decorator.Id;
+                                }
+                                decorator.Name = string.Empty;
+                                decorator.Category = jobject[RevitJsonProp.ClanAndType][RevitJsonProp.ClanName].ToString();
+                                decorator.Decoration = string.Empty;
+                                model.Decorators.Add(decorator);
+                            }
+                            break;
                         default: break;
+                    }
+                }
+
+                //瑙f瀽鍏朵粬json
+                var jothersArray = JArray.Parse(revitOthersJsonString);
+                if (jothersArray != null && jothersArray.Count > 0)
+                {
+                    var allParterList = model.GetAllParters();
+                    for (int i = 0; i < jothersArray.Count; i++)
+                    {
+                        var jobject = jothersArray[i];
+                        var id = jobject[RevitOthersJsonProp.Id]?.ToString();
+                        if (string.IsNullOrEmpty(id))
+                        {
+                            continue;
+                        }
+                        if (allParterList.Exists(x => x.Id == id))
+                        {
+                            continue;
+                        }
+                        if (model.Decorators.Exists(x => x.Id == id))
+                        {
+                            continue;
+                        }
+                        var decorator = new Model.RevitDecorator();
+                        decorator.Id = id;
+                        decorator.Code = id;
+                        decorator.Name = jobject[RevitOthersJsonProp.Name]?.ToString();
+                        decorator.Category = jobject[RevitOthersJsonProp.CategoryName]?.ToString();
+                        decorator.Decoration = jobject[RevitOthersJsonProp.CategoryID]?.ToString();
+                        model.Decorators.Add(decorator);
                     }
                 }
 
@@ -908,9 +1148,7 @@
         /// <summary>
         /// 浠巎son鏂囦欢涓В鏋�
         /// </summary>
-        /// <param name="revitJsonFile">json鏂囦欢璺緞</param>
-        /// <returns></returns>
-        public static Model.RevitModel FromJsonFile(string revitJsonFile, out string msg)
+        public static Model.RevitModel FromJsonFile(string revitJsonFile, string revitOthersJsonFile, out string msg)
         {
             if (!File.Exists(revitJsonFile))
             {
@@ -918,7 +1156,12 @@
                 return default;
             }
             var revitJson = File.ReadAllText(revitJsonFile);
-            var revitModel = FromJsonString(revitJson, out msg);
+            var revitOthersJson = string.Empty;
+            if (File.Exists(revitOthersJsonFile))
+            {
+                revitOthersJson = File.ReadAllText(revitOthersJsonFile);
+            }
+            var revitModel = FromJsonString(revitJson, revitOthersJson, out msg);
             if (revitModel == null)
             {
                 return default;

--
Gitblit v1.9.3