namespace HStation.Service
|
{
|
/// <summary>
|
/// Revit Json辅助类
|
/// </summary>
|
public class RevitJsonHelper
|
{
|
/// <summary>
|
/// 从json字符串中解析
|
/// </summary>
|
/// <param name="revitJsonString">json字符串</param>
|
/// <returns>格式错误,会抛出异常</returns>
|
public static HStation.Model.RevitModel FromJsonString(string revitJsonString)
|
{
|
if (string.IsNullOrEmpty(revitJsonString))
|
{
|
throw new Exception("Json字符串为空");
|
}
|
var model = new Model.RevitModel();
|
|
var jarray = JArray.Parse(revitJsonString);
|
for (int i = 0; i < jarray.Count; i++)
|
{
|
var jobject = JObject.Parse(jarray[i].ToString());
|
var catalog = jobject["构件类型"].ToString();
|
switch (catalog)
|
{
|
case Catalog.Reservoir:
|
{
|
var reservoir = new Model.RevitReservoir();
|
reservoir.Id = jobject["构件编码"].ToString();
|
reservoir.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(reservoir.Code))
|
{
|
reservoir.Code = reservoir.Id;
|
}
|
reservoir.Name = jobject["名称"].ToString();
|
reservoir.ModelType = jobject["型号"].ToString();
|
reservoir.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
reservoir.Description = jobject["说明"].ToString();
|
reservoir.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
reservoir.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
reservoir.Head = Convert.ToDouble(jobject["总水头"]);
|
reservoir.HeadPattern = jobject["水头模式"].ToString();
|
model.Reservoirs.Add(reservoir);
|
}
|
break;
|
case Catalog.Tank:
|
{
|
var tank = new Model.RevitTank();
|
tank.Id = jobject["构件编码"].ToString();
|
tank.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(tank.Code))
|
{
|
tank.Code = tank.Id;
|
}
|
tank.Name = jobject["名称"].ToString();
|
tank.ModelType = jobject["型号"].ToString();
|
tank.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
tank.Description = jobject["说明"].ToString();
|
tank.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
tank.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
tank.PoolElev = Convert.ToDouble(jobject["池底标高"]);
|
tank.InitLevel = Convert.ToDouble(jobject["初始水位"]);
|
tank.MinLevel = Convert.ToDouble(jobject["最低水位"]);
|
tank.MaxLevel = Convert.ToDouble(jobject["最高水位"]);
|
tank.Diameter = Convert.ToDouble(jobject["直径"]);
|
tank.MinVol = Convert.ToDouble(jobject["最小容积"]);
|
tank.VolCurve = jobject["容积曲线"].ToString();
|
model.Tanks.Add(tank);
|
}
|
break;
|
case Catalog.Waterbox:
|
{
|
var waterbox = new Model.RevitWaterbox();
|
waterbox.Id = jobject["构件编码"].ToString();
|
waterbox.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(waterbox.Code))
|
{
|
waterbox.Code = waterbox.Id;
|
}
|
waterbox.Name = jobject["名称"].ToString();
|
waterbox.ModelType = jobject["型号"].ToString();
|
waterbox.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
waterbox.Description = jobject["说明"].ToString();
|
waterbox.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
waterbox.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
waterbox.PoolElev = Convert.ToDouble(jobject["池底标高"]);
|
waterbox.InitLevel = Convert.ToDouble(jobject["初始水位"]);
|
waterbox.MinLevel = Convert.ToDouble(jobject["最低水位"]);
|
waterbox.MaxLevel = Convert.ToDouble(jobject["最高水位"]);
|
waterbox.Diameter = Convert.ToDouble(jobject["直径"]);
|
waterbox.MinVol = Convert.ToDouble(jobject["最小容积"]);
|
waterbox.VolCurve = jobject["容积曲线"].ToString();
|
model.Waterboxs.Add(waterbox);
|
}
|
break;
|
case Catalog.Junction:
|
{
|
var junction = new Model.RevitJunction();
|
junction.Id = jobject["构件编码"].ToString();
|
junction.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(junction.Code))
|
{
|
junction.Code = junction.Id;
|
}
|
junction.Name = jobject["名称"].ToString();
|
junction.ModelType = jobject["型号"].ToString();
|
junction.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
junction.Description = jobject["说明"].ToString();
|
junction.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
junction.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
junction.Elev = Convert.ToDouble(jobject["标高"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
junction.Demand = Convert.ToDouble(demand);
|
}
|
junction.DemandPattern = jobject["需水模式"].ToString();
|
model.Junctions.Add(junction);
|
}
|
break;
|
case Catalog.Elbow:
|
{
|
var elbow = new Model.RevitElbow();
|
elbow.Id = jobject["构件编码"].ToString();
|
elbow.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(elbow.Code))
|
{
|
elbow.Code = elbow.Id;
|
}
|
elbow.Name = jobject["名称"].ToString();
|
elbow.ModelType = jobject["型号"].ToString();
|
elbow.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
elbow.Description = jobject["说明"].ToString();
|
elbow.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
elbow.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
elbow.Elev = Convert.ToDouble(jobject["标高"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
elbow.Demand = Convert.ToDouble(demand);
|
}
|
elbow.DemandPattern = jobject["需水模式"].ToString();
|
model.Elbows.Add(elbow);
|
}
|
break;
|
case Catalog.Threelink:
|
{
|
var threelink = new Model.RevitThreelink();
|
threelink.Id = jobject["构件编码"].ToString();
|
threelink.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(threelink.Code))
|
{
|
threelink.Code = threelink.Id;
|
}
|
threelink.Name = jobject["名称"].ToString();
|
threelink.ModelType = jobject["型号"].ToString();
|
threelink.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
threelink.Description = jobject["说明"].ToString();
|
threelink.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
threelink.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
threelink.Elev = Convert.ToDouble(jobject["标高"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
threelink.Demand = Convert.ToDouble(demand);
|
}
|
threelink.DemandPattern = jobject["需水模式"].ToString();
|
model.Threelinks.Add(threelink);
|
}
|
break;
|
case Catalog.Fourlink:
|
{
|
var fourlink = new Model.RevitFourlink();
|
fourlink.Id = jobject["构件编码"].ToString();
|
fourlink.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(fourlink.Code))
|
{
|
fourlink.Code = fourlink.Id;
|
}
|
fourlink.Name = jobject["名称"].ToString();
|
fourlink.ModelType = jobject["型号"].ToString();
|
fourlink.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
fourlink.Description = jobject["说明"].ToString();
|
fourlink.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
fourlink.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
fourlink.Elev = Convert.ToDouble(jobject["标高"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
fourlink.Demand = Convert.ToDouble(demand);
|
}
|
fourlink.DemandPattern = jobject["需水模式"].ToString();
|
model.Fourlinks.Add(fourlink);
|
}
|
break;
|
case Catalog.Flowmeter:
|
{
|
var flowmeter = new Model.RevitFlowmeter();
|
flowmeter.Id = jobject["构件编码"].ToString();
|
flowmeter.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(flowmeter.Code))
|
{
|
flowmeter.Code = flowmeter.Id;
|
}
|
flowmeter.Name = jobject["名称"].ToString();
|
flowmeter.ModelType = jobject["型号"].ToString();
|
flowmeter.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
flowmeter.Description = jobject["说明"].ToString();
|
flowmeter.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
flowmeter.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
flowmeter.Elev = Convert.ToDouble(jobject["标高"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
flowmeter.Demand = Convert.ToDouble(demand);
|
}
|
flowmeter.DemandPattern = jobject["需水模式"].ToString();
|
model.Flowmeters.Add(flowmeter);
|
}
|
break;
|
case Catalog.Pressmeter:
|
{
|
var pressmeter = new Model.RevitPressmeter();
|
pressmeter.Id = jobject["构件编码"].ToString();
|
pressmeter.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(pressmeter.Code))
|
{
|
pressmeter.Code = pressmeter.Id;
|
}
|
pressmeter.Name = jobject["名称"].ToString();
|
pressmeter.ModelType = jobject["型号"].ToString();
|
pressmeter.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
pressmeter.Description = jobject["说明"].ToString();
|
pressmeter.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
pressmeter.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
pressmeter.Elev = Convert.ToDouble(jobject["标高"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
pressmeter.Demand = Convert.ToDouble(demand);
|
}
|
pressmeter.DemandPattern = jobject["需水模式"].ToString();
|
model.Pressmeters.Add(pressmeter);
|
}
|
break;
|
case Catalog.Blunthead:
|
{
|
var blunthead = new Model.RevitBlunthead();
|
blunthead.Id = jobject["构件编码"].ToString();
|
blunthead.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(blunthead.Code))
|
{
|
blunthead.Code = blunthead.Id;
|
}
|
blunthead.Name = jobject["名称"].ToString();
|
blunthead.ModelType = jobject["型号"].ToString();
|
blunthead.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
blunthead.Description = jobject["说明"].ToString();
|
blunthead.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
blunthead.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
blunthead.Elev = Convert.ToDouble(jobject["标高"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
blunthead.Demand = Convert.ToDouble(demand);
|
}
|
blunthead.DemandPattern = jobject["需水模式"].ToString();
|
model.Bluntheads.Add(blunthead);
|
}
|
break;
|
case Catalog.Nozzle:
|
{
|
var nozzle = new Model.RevitNozzle();
|
nozzle.Id = jobject["构件编码"].ToString();
|
nozzle.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(nozzle.Code))
|
{
|
nozzle.Code = nozzle.Id;
|
}
|
nozzle.Name = jobject["名称"].ToString();
|
nozzle.ModelType = jobject["型号"].ToString();
|
nozzle.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
nozzle.Description = jobject["说明"].ToString();
|
nozzle.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
nozzle.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
nozzle.Elev = Convert.ToDouble(jobject["标高"]);
|
nozzle.Coefficient = Convert.ToDouble(jobject["喷射系数"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
nozzle.Demand = Convert.ToDouble(demand);
|
}
|
nozzle.DemandPattern = jobject["需水模式"].ToString();
|
model.Nozzles.Add(nozzle);
|
}
|
break;
|
case Catalog.Hydrant:
|
{
|
var hydrant = new Model.RevitHydrant();
|
hydrant.Id = jobject["构件编码"].ToString();
|
hydrant.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(hydrant.Code))
|
{
|
hydrant.Code = hydrant.Id;
|
}
|
hydrant.Name = jobject["名称"].ToString();
|
hydrant.ModelType = jobject["型号"].ToString();
|
hydrant.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
hydrant.Description = jobject["说明"].ToString();
|
hydrant.Quality = Convert.ToDouble(jobject["初始水质"]);
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var centerPoint = linkList.GetCenterPoint();
|
hydrant.Position = new Model.RevitPosition()
|
{
|
X = centerPoint.X,
|
Y = centerPoint.Y,
|
Z = centerPoint.Z
|
};
|
hydrant.Elev = Convert.ToDouble(jobject["标高"]);
|
hydrant.Coefficient = Convert.ToDouble(jobject["流量系数"]);
|
var demand = jobject["需水量"].ToString();
|
if (!string.IsNullOrEmpty(demand))
|
{
|
hydrant.Demand = Convert.ToDouble(demand);
|
}
|
hydrant.DemandPattern = jobject["需水模式"].ToString();
|
model.Hydrants.Add(hydrant);
|
}
|
break;
|
case Catalog.Pipe:
|
{
|
var pipe = new Model.RevitPipe();
|
pipe.Id = jobject["构件编码"].ToString();
|
pipe.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(pipe.Code))
|
{
|
pipe.Code = pipe.Id;
|
}
|
pipe.Name = jobject["名称"].ToString();
|
pipe.ModelType = jobject["型号"].ToString();
|
pipe.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
pipe.Description = jobject["说明"].ToString();
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var startLinker = linkList.GetStartLinker();
|
var endLinker = linkList.GetEndLinker();
|
pipe.StartCode = startLinker.ConnectId;
|
pipe.EndCode = endLinker.ConnectId;
|
pipe.LinkStatus = jobject["管道状态"].ToString();
|
pipe.StartElev = Convert.ToDouble(jobject["上游标高"]);
|
pipe.EndElev = Convert.ToDouble(jobject["下游标高"]);
|
pipe.StartQuality = Convert.ToDouble(jobject["上游初始水质"]);
|
pipe.EndQuality = Convert.ToDouble(jobject["下游初始水质"]);
|
pipe.StartPosition = new Model.RevitPosition()
|
{
|
X = startLinker.Point.X,
|
Y = startLinker.Point.Y,
|
Z = startLinker.Point.Z
|
};
|
pipe.EndPosition = new Model.RevitPosition()
|
{
|
X = endLinker.Point.X,
|
Y = endLinker.Point.Y,
|
Z = endLinker.Point.Z
|
};
|
pipe.Length = Convert.ToDouble(jobject["长度"]);
|
pipe.Diameter = Convert.ToDouble(jobject["直径"]);
|
pipe.MinorLoss = Convert.ToDouble(jobject["局部阻力系数"]);
|
pipe.Roughness = Convert.ToDouble(jobject["粗糙系数"]);
|
model.Pipes.Add(pipe);
|
}
|
break;
|
case Catalog.Translation:
|
{
|
var translation = new Model.RevitTranslation();
|
translation.Id = jobject["构件编码"].ToString();
|
translation.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(translation.Code))
|
{
|
translation.Code = translation.Id;
|
}
|
translation.Name = jobject["名称"].ToString();
|
translation.ModelType = jobject["型号"].ToString();
|
translation.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
translation.Description = jobject["说明"].ToString();
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var startLinker = linkList.GetStartLinker();
|
var endLinker = linkList.GetEndLinker();
|
translation.StartCode = startLinker.ConnectId;
|
translation.EndCode = endLinker.ConnectId;
|
translation.LinkStatus = jobject["管道状态"].ToString();
|
translation.StartElev = Convert.ToDouble(jobject["上游标高"]);
|
translation.EndElev = Convert.ToDouble(jobject["下游标高"]);
|
translation.StartQuality = Convert.ToDouble(jobject["上游初始水质"]);
|
translation.EndQuality = Convert.ToDouble(jobject["下游初始水质"]);
|
translation.StartPosition = new Model.RevitPosition()
|
{
|
X = startLinker.Point.X,
|
Y = startLinker.Point.Y,
|
Z = startLinker.Point.Z
|
};
|
translation.EndPosition = new Model.RevitPosition()
|
{
|
X = endLinker.Point.X,
|
Y = endLinker.Point.Y,
|
Z = endLinker.Point.Z
|
};
|
translation.Length = Convert.ToDouble(jobject["长度"]);
|
translation.Diameter = Convert.ToDouble(jobject["直径"]);
|
translation.MinorLoss = Convert.ToDouble(jobject["局部阻力系数"]);
|
translation.Roughness = Convert.ToDouble(jobject["粗糙系数"]);
|
model.Translations.Add(translation);
|
}
|
break;
|
case Catalog.Pump:
|
{
|
var pump = new Model.RevitPump();
|
pump.Id = jobject["构件编码"].ToString();
|
pump.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(pump.Code))
|
{
|
pump.Code = pump.Id;
|
}
|
pump.Name = jobject["名称"].ToString();
|
pump.ModelType = jobject["型号"].ToString();
|
pump.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
pump.Description = jobject["说明"].ToString();
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var startLinker = linkList.GetStartLinker();
|
var endLinker = linkList.GetEndLinker();
|
pump.StartCode = startLinker.ConnectId;
|
pump.EndCode = endLinker.ConnectId;
|
pump.LinkStatus = jobject["水泵状态"].ToString();
|
pump.StartElev = Convert.ToDouble(jobject["上游标高"]);
|
pump.EndElev = Convert.ToDouble(jobject["下游标高"]);
|
pump.StartQuality = Convert.ToDouble(jobject["上游初始水质"]);
|
pump.EndQuality = Convert.ToDouble(jobject["下游初始水质"]);
|
pump.StartPosition = new Model.RevitPosition()
|
{
|
X = startLinker.Point.X,
|
Y = startLinker.Point.Y,
|
Z = startLinker.Point.Z
|
};
|
pump.EndPosition = new Model.RevitPosition()
|
{
|
X = endLinker.Point.X,
|
Y = endLinker.Point.Y,
|
Z = endLinker.Point.Z
|
};
|
pump.RatedPower = Convert.ToDouble(jobject["额定功率"]);
|
pump.CurveQH = jobject["流量扬程曲线"].ToString();
|
var speedRatio = jobject["转速比"].ToString();
|
if (!string.IsNullOrEmpty(speedRatio))
|
{
|
pump.SpeedRatio = Convert.ToDouble(speedRatio);
|
}
|
pump.SpeedRatioPattern = jobject["转速比模式"].ToString();
|
var price = jobject["能耗价格"].ToString();
|
if (!string.IsNullOrEmpty(price))
|
{
|
pump.Price = Convert.ToDouble(price);
|
}
|
pump.PricePattern = jobject["价格模式"].ToString();
|
pump.CurveQE = jobject["流量效率曲线"].ToString();
|
model.Pumps.Add(pump);
|
}
|
break;
|
case Catalog.Valve:
|
{
|
var valve = new Model.RevitValve();
|
valve.Id = jobject["构件编码"].ToString();
|
valve.Code = jobject["编码"].ToString();
|
if (string.IsNullOrEmpty(valve.Code))
|
{
|
valve.Code = valve.Id;
|
}
|
valve.Name = jobject["名称"].ToString();
|
valve.ModelType = jobject["型号"].ToString();
|
valve.Flags = Yw.Untity.FlagsHelper.ToList(jobject["标签"].ToString());
|
valve.Description = jobject["说明"].ToString();
|
var linkList = JsonHelper.Json2Object<List<RevitJsonLinkerModel>>(jobject["连接列表"].ToString());
|
var startLinker = linkList.GetStartLinker();
|
var endLinker = linkList.GetEndLinker();
|
valve.StartCode = startLinker.ConnectId;
|
valve.EndCode = endLinker.ConnectId;
|
valve.LinkStatus = jobject["阀门状态"].ToString();
|
valve.StartElev = Convert.ToDouble(jobject["上游标高"]);
|
valve.EndElev = Convert.ToDouble(jobject["下游标高"]);
|
valve.StartQuality = Convert.ToDouble(jobject["上游初始水质"]);
|
valve.EndQuality = Convert.ToDouble(jobject["下游初始水质"]);
|
valve.StartPosition = new Model.RevitPosition()
|
{
|
X = startLinker.Point.X,
|
Y = startLinker.Point.Y,
|
Z = startLinker.Point.Z
|
};
|
valve.EndPosition = new Model.RevitPosition()
|
{
|
X = endLinker.Point.X,
|
Y = endLinker.Point.Y,
|
Z = endLinker.Point.Z
|
};
|
valve.Diameter = Convert.ToDouble(jobject["直径"]);
|
valve.MinorLoss = Convert.ToDouble(jobject["局部阻力系数"]);
|
valve.ValveType = jobject["阀门类型"].ToString();
|
valve.ValveSetting = jobject["阀门设置"].ToString();
|
model.Valves.Add(valve);
|
}
|
break;
|
|
default: break;
|
}
|
}
|
|
return model;
|
}
|
|
/// <summary>
|
/// 从json文件中解析
|
/// </summary>
|
/// <param name="revitJsonFile">json文件路径</param>
|
/// <returns></returns>
|
public static Model.RevitModel FromJsonFile(string revitJsonFile)
|
{
|
if (!File.Exists(revitJsonFile))
|
{
|
return default;
|
}
|
var revitJson = File.ReadAllText(revitJsonFile);
|
var revitModel = FromJsonString(revitJson);
|
if (revitModel == null)
|
{
|
return default;
|
}
|
revitModel.Name = Path.GetFileNameWithoutExtension(revitJsonFile);
|
revitModel.Description = $"解析【{Path.GetFileName(revitJsonFile)}】文件";
|
return revitModel;
|
}
|
}
|
}
|