using HStation.Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yw;
namespace HStation.Desktop
{
///
///
///
public class RevitTestHelper
{
private static string DataFolder
{
get
{
return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "测试文件");
}
}
public static string GenerateJson()
{
var revit = new HStation.Model.RevitModel();
revit.Name = "测试简单用例";
revit.Description = "测试简单用例,测试联通性";
revit.Tanks = new List();
revit.Pipes = new List();
revit.Pumps = new List();
revit.Valves = new List();
revit.Junctions = new List();
#region 水池1
var tankFileName1 = Path.Combine(DataFolder, "tank1.txt");
var tankInfo1 = JsonHelper.Json2Object(File.ReadAllText(tankFileName1));
var revitTank1 = new RevitTank();
revitTank1.Id = tankInfo1.ObjectId;
revitTank1.Name = "水池1";
revitTank1.Code = tankInfo1.ObjectId;
revitTank1.Flags = new List() { "标签1", "标签2" };
revitTank1.Description = null;
revitTank1.ModelType = null;
revitTank1.Quality = 0;
revitTank1.PoolElev = 0;
revitTank1.InitLevel = 0;
revitTank1.MinLevel = 0;
revitTank1.MaxLevel = 0;
revitTank1.Diameter = 0;
revitTank1.MinVol = 0;
revitTank1.VolCurve = null;
revitTank1.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitTank1.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = tankInfo1.BoundingBox.Min.X, Y = tankInfo1.BoundingBox.Min.Y, Z = tankInfo1.BoundingBox.Min.Z },
Max = new RevitPosition() { X = tankInfo1.BoundingBox.Max.X, Y = tankInfo1.BoundingBox.Max.Y, Z = tankInfo1.BoundingBox.Max.Z },
Center = new RevitPosition() { X = tankInfo1.WorldPosition.X, Y = tankInfo1.WorldPosition.Y, Z = tankInfo1.WorldPosition.Z },
};
revit.Tanks.Add(revitTank1);
#endregion
#region 过渡件1
var middleFileName1 = Path.Combine(DataFolder, "过渡件1.txt");
var middleInfo1 = JsonHelper.Json2Object(File.ReadAllText(middleFileName1));
var revitMiddle1 = new RevitPipe();
revitMiddle1.Id = middleInfo1.ObjectId;
revitMiddle1.Name = "过渡件1";
revitMiddle1.Code = middleInfo1.ObjectId;
revitMiddle1.Flags = null;
revitMiddle1.Description = null;
revitMiddle1.ModelType = null;
revitMiddle1.StartCode = tankInfo1.ObjectId;
revitMiddle1.EndCode = null;
revitMiddle1.LinkStatus = "Open";
revitMiddle1.StartElev = 0;
revitMiddle1.EndElev = 0;
revitMiddle1.Diameter = 0;
revitMiddle1.Length = 0;
revitMiddle1.Roughness = 0;
revitMiddle1.MinorLoss = 0;
revitMiddle1.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitMiddle1.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = middleInfo1.BoundingBox.Min.X, Y = middleInfo1.BoundingBox.Min.Y, Z = middleInfo1.BoundingBox.Min.Z },
Max = new RevitPosition() { X = middleInfo1.BoundingBox.Max.X, Y = middleInfo1.BoundingBox.Max.Y, Z = middleInfo1.BoundingBox.Max.Z },
Center = new RevitPosition() { X = middleInfo1.WorldPosition.X, Y = middleInfo1.WorldPosition.Y, Z = middleInfo1.WorldPosition.Z },
};
revit.Pipes.Add(revitMiddle1);
#endregion
#region 管道1
var pipeFileName1 = Path.Combine(DataFolder, "pipe1.txt");
var pipeInfo1 = JsonHelper.Json2Object(File.ReadAllText(pipeFileName1));
var revitPipe1 = new RevitPipe();
revitPipe1.Id = pipeInfo1.ObjectId;
revitPipe1.Name = "管道1";
revitPipe1.Code = pipeInfo1.ObjectId;
revitPipe1.Flags = null;
revitPipe1.Description = null;
revitPipe1.ModelType = null;
revitPipe1.StartCode = middleInfo1.ObjectId;
revitPipe1.EndCode = null;
revitPipe1.LinkStatus = "Open";
revitPipe1.StartElev = 0;
revitPipe1.EndElev = 0;
revitPipe1.Diameter = 0;
revitPipe1.Length = 0;
revitPipe1.Roughness = 0;
revitPipe1.MinorLoss = 0;
revitPipe1.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitPipe1.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = pipeInfo1.BoundingBox.Min.X, Y = pipeInfo1.BoundingBox.Min.Y, Z = pipeInfo1.BoundingBox.Min.Z },
Max = new RevitPosition() { X = pipeInfo1.BoundingBox.Max.X, Y = pipeInfo1.BoundingBox.Max.Y, Z = pipeInfo1.BoundingBox.Max.Z },
Center = new RevitPosition() { X = pipeInfo1.WorldPosition.X, Y = pipeInfo1.WorldPosition.Y, Z = pipeInfo1.WorldPosition.Z },
};
revit.Pipes.Add(revitPipe1);
revitMiddle1.EndCode = pipeInfo1.ObjectId;
#endregion
#region 阀门1
var valveFileName1 = Path.Combine(DataFolder, "valve1.txt");
var valveInfo1 = JsonHelper.Json2Object(File.ReadAllText(valveFileName1));
var revitValve1 = new RevitValve();
revitValve1.Id = valveInfo1.ObjectId;
revitValve1.Name = "阀门1";
revitValve1.Code = valveInfo1.ObjectId;
revitValve1.Flags = null;
revitValve1.Description = null;
revitValve1.ModelType = null;
revitValve1.StartCode = pipeInfo1.ObjectId;
revitValve1.EndCode = null;
revitValve1.LinkStatus = "Open";
revitValve1.StartElev = 0;
revitValve1.EndElev = 0;
revitValve1.Diameter = 0;
revitValve1.MinorLoss = 0;
revitValve1.ValveType = "GPV";
revitValve1.ValveSetting = null;
revitValve1.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitValve1.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = valveInfo1.BoundingBox.Min.X, Y = valveInfo1.BoundingBox.Min.Y, Z = valveInfo1.BoundingBox.Min.Z },
Max = new RevitPosition() { X = valveInfo1.BoundingBox.Max.X, Y = valveInfo1.BoundingBox.Max.Y, Z = valveInfo1.BoundingBox.Max.Z },
Center = new RevitPosition() { X = valveInfo1.WorldPosition.X, Y = valveInfo1.WorldPosition.Y, Z = valveInfo1.WorldPosition.Z },
};
revit.Valves.Add(revitValve1);
revitPipe1.EndCode = valveInfo1.ObjectId;
#endregion
#region 管道2
var pipeFileName2 = Path.Combine(DataFolder, "pipe2.txt");
var pipeInfo2 = JsonHelper.Json2Object(File.ReadAllText(pipeFileName2));
var revitPipe2 = new RevitPipe();
revitPipe2.Id = pipeInfo2.ObjectId;
revitPipe2.Name = "管道2";
revitPipe2.Code = pipeInfo2.ObjectId;
revitPipe2.Flags = null;
revitPipe2.Description = null;
revitPipe2.ModelType = null;
revitPipe2.StartCode = valveInfo1.ObjectId;
revitPipe2.EndCode = null;
revitPipe2.LinkStatus = "Open";
revitPipe2.StartElev = 0;
revitPipe2.EndElev = 0;
revitPipe2.Diameter = 0;
revitPipe2.Length = 0;
revitPipe2.Roughness = 0;
revitPipe2.MinorLoss = 0;
revitPipe2.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitPipe2.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = pipeInfo2.BoundingBox.Min.X, Y = pipeInfo2.BoundingBox.Min.Y, Z = pipeInfo2.BoundingBox.Min.Z },
Max = new RevitPosition() { X = pipeInfo2.BoundingBox.Max.X, Y = pipeInfo2.BoundingBox.Max.Y, Z = pipeInfo2.BoundingBox.Max.Z },
Center = new RevitPosition() { X = pipeInfo2.WorldPosition.X, Y = pipeInfo2.WorldPosition.Y, Z = pipeInfo2.WorldPosition.Z },
};
revit.Pipes.Add(revitPipe2);
revitValve1.EndCode = pipeInfo2.ObjectId;
#endregion
#region 水泵1
var pumpFileName1 = Path.Combine(DataFolder, "pump1.txt");
var pumpInfo1 = JsonHelper.Json2Object(File.ReadAllText(pumpFileName1));
var revitPump1 = new RevitPump();
revitPump1.Id = pumpInfo1.ObjectId;
revitPump1.Name = "水泵1";
revitPump1.Code = pumpInfo1.ObjectId;
revitPump1.Flags = null;
revitPump1.Description = null;
revitPump1.ModelType = null;
revitPump1.StartCode = pipeInfo2.ObjectId;
revitPump1.EndCode = null;
revitPump1.LinkStatus = "Open";
revitPump1.StartElev = 0;
revitPump1.EndElev = 0;
revitPump1.RatedPower = 0;
revitPump1.CurveQH = null;
revitPump1.SpeedRatio = null;
revitPump1.SpeedRatioPattern = null;
revitPump1.Price = null;
revitPump1.PricePattern = null;
revitPump1.CurveQE = null;
revitPump1.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitPump1.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = pumpInfo1.BoundingBox.Min.X, Y = pumpInfo1.BoundingBox.Min.Y, Z = pumpInfo1.BoundingBox.Min.Z },
Max = new RevitPosition() { X = pumpInfo1.BoundingBox.Max.X, Y = pumpInfo1.BoundingBox.Max.Y, Z = pumpInfo1.BoundingBox.Max.Z },
Center = new RevitPosition() { X = pumpInfo1.WorldPosition.X, Y = pumpInfo1.WorldPosition.Y, Z = pumpInfo1.WorldPosition.Z },
};
revit.Pumps.Add(revitPump1);
revitPipe2.EndCode = pumpInfo1.ObjectId;
#endregion
#region 管道3
var pipeFileName3 = Path.Combine(DataFolder, "pipe3.txt");
var pipeInfo3 = JsonHelper.Json2Object(File.ReadAllText(pipeFileName3));
var revitPipe3 = new RevitPipe();
revitPipe3.Id = pipeInfo3.ObjectId;
revitPipe3.Name = "过渡件1";
revitPipe3.Code = pipeInfo3.ObjectId;
revitPipe3.Flags = null;
revitPipe3.Description = null;
revitPipe3.ModelType = null;
revitPipe3.StartCode = pumpInfo1.ObjectId;
revitPipe3.EndCode = null;
revitPipe3.LinkStatus = "Open";
revitPipe3.StartElev = 0;
revitPipe3.EndElev = 0;
revitPipe3.Diameter = 0;
revitPipe3.Length = 0;
revitPipe3.Roughness = 0;
revitPipe3.MinorLoss = 0;
revitPipe3.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitPipe3.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = pipeInfo3.BoundingBox.Min.X, Y = pipeInfo3.BoundingBox.Min.Y, Z = pipeInfo3.BoundingBox.Min.Z },
Max = new RevitPosition() { X = pipeInfo3.BoundingBox.Max.X, Y = pipeInfo3.BoundingBox.Max.Y, Z = pipeInfo3.BoundingBox.Max.Z },
Center = new RevitPosition() { X = pipeInfo3.WorldPosition.X, Y = pipeInfo3.WorldPosition.Y, Z = pipeInfo3.WorldPosition.Z },
};
revit.Pipes.Add(revitPipe3);
revitPump1.EndCode = pipeInfo3.ObjectId;
#endregion
#region 节点1
var junctionFileName1 = Path.Combine(DataFolder, "junction1.txt");
var junctionInfo1 = JsonHelper.Json2Object(File.ReadAllText(junctionFileName1));
var revitJunction1 = new RevitJunction();
revitJunction1.Id = junctionInfo1.ObjectId;
revitJunction1.Name = "节点1";
revitJunction1.Code = junctionInfo1.ObjectId;
revitJunction1.Flags = new List() { "标签1", "标签2" };
revitJunction1.Description = null;
revitJunction1.ModelType = null;
revitJunction1.Quality = 0;
revitJunction1.Coefficient = 0;
revitJunction1.Elev = 0;
revitJunction1.Demand = null;
revitJunction1.DemandPattern = null;
revitJunction1.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitJunction1.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = junctionInfo1.BoundingBox.Min.X, Y = junctionInfo1.BoundingBox.Min.Y, Z = junctionInfo1.BoundingBox.Min.Z },
Max = new RevitPosition() { X = junctionInfo1.BoundingBox.Max.X, Y = junctionInfo1.BoundingBox.Max.Y, Z = junctionInfo1.BoundingBox.Max.Z },
Center = new RevitPosition() { X = junctionInfo1.WorldPosition.X, Y = junctionInfo1.WorldPosition.Y, Z = junctionInfo1.WorldPosition.Z },
};
revit.Junctions.Add(revitJunction1);
revitPipe3.EndCode = junctionInfo1.ObjectId;
#endregion
#region 管道4
var pipeFileName4 = Path.Combine(DataFolder, "pipe4.txt");
var pipeInfo4 = JsonHelper.Json2Object(File.ReadAllText(pipeFileName4));
var revitPipe4 = new RevitPipe();
revitPipe4.Id = pipeInfo4.ObjectId;
revitPipe4.Name = "管道4";
revitPipe4.Code = pipeInfo4.ObjectId;
revitPipe4.Flags = null;
revitPipe4.Description = null;
revitPipe4.ModelType = null;
revitPipe4.StartCode = junctionInfo1.ObjectId;
revitPipe4.EndCode = null;
revitPipe4.LinkStatus = "Open";
revitPipe4.StartElev = 0;
revitPipe4.EndElev = 0;
revitPipe4.Diameter = 0;
revitPipe4.Length = 0;
revitPipe4.Roughness = 0;
revitPipe4.MinorLoss = 0;
revitPipe4.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitPipe4.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = pipeInfo4.BoundingBox.Min.X, Y = pipeInfo4.BoundingBox.Min.Y, Z = pipeInfo4.BoundingBox.Min.Z },
Max = new RevitPosition() { X = pipeInfo4.BoundingBox.Max.X, Y = pipeInfo4.BoundingBox.Max.Y, Z = pipeInfo4.BoundingBox.Max.Z },
Center = new RevitPosition() { X = pipeInfo4.WorldPosition.X, Y = pipeInfo4.WorldPosition.Y, Z = pipeInfo4.WorldPosition.Z },
};
revit.Pipes.Add(revitPipe4);
#endregion
#region 过渡件2
var middleFileName2 = Path.Combine(DataFolder, "过渡件2.txt");
var middleInfo2 = JsonHelper.Json2Object(File.ReadAllText(middleFileName2));
var revitMiddle2 = new RevitPipe();
revitMiddle2.Id = middleInfo2.ObjectId;
revitMiddle2.Name = "过渡件2";
revitMiddle2.Code = middleInfo2.ObjectId;
revitMiddle2.Flags = null;
revitMiddle2.Description = null;
revitMiddle2.ModelType = null;
revitMiddle2.StartCode = pipeInfo4.ObjectId;
revitMiddle2.EndCode = null;
revitMiddle2.LinkStatus = "Open";
revitMiddle2.StartElev = 0;
revitMiddle2.EndElev = 0;
revitMiddle2.Diameter = 0;
revitMiddle2.Length = 0;
revitMiddle2.Roughness = 0;
revitMiddle2.MinorLoss = 0;
revitMiddle2.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitMiddle2.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = middleInfo2.BoundingBox.Min.X, Y = middleInfo2.BoundingBox.Min.Y, Z = middleInfo2.BoundingBox.Min.Z },
Max = new RevitPosition() { X = middleInfo2.BoundingBox.Max.X, Y = middleInfo2.BoundingBox.Max.Y, Z = middleInfo2.BoundingBox.Max.Z },
Center = new RevitPosition() { X = middleInfo2.WorldPosition.X, Y = middleInfo2.WorldPosition.Y, Z = middleInfo2.WorldPosition.Z },
};
revit.Pipes.Add(revitMiddle2);
revitPipe4.EndCode = middleInfo2.ObjectId;
#endregion
#region 节点2
var junctionFileName2 = Path.Combine(DataFolder, "junction2.txt");
var junctionInfo2 = JsonHelper.Json2Object(File.ReadAllText(junctionFileName2));
var revitJunction2 = new RevitJunction();
revitJunction2.Id = junctionInfo2.ObjectId;
revitJunction2.Name = "喷头1";
revitJunction2.Code = junctionInfo2.ObjectId;
revitJunction2.Flags = new List() { "标签1", "标签2" };
revitJunction2.Description = null;
revitJunction2.ModelType = null;
revitJunction2.Quality = 0;
revitJunction2.Coefficient = 0.5;
revitJunction2.Elev = 0;
revitJunction2.Demand = null;
revitJunction2.DemandPattern = null;
revitJunction2.PropValueList = new Dictionary() {
{ "测试属性1",1},
{ "测试属性2","abc"},
};
revitJunction2.BoundingBox = new RevitBoundingBox()
{
Min = new RevitPosition() { X = junctionInfo2.BoundingBox.Min.X, Y = junctionInfo2.BoundingBox.Min.Y, Z = junctionInfo2.BoundingBox.Min.Z },
Max = new RevitPosition() { X = junctionInfo2.BoundingBox.Max.X, Y = junctionInfo2.BoundingBox.Max.Y, Z = junctionInfo2.BoundingBox.Max.Z },
Center = new RevitPosition() { X = junctionInfo2.WorldPosition.X, Y = junctionInfo2.WorldPosition.Y, Z = junctionInfo2.WorldPosition.Z },
};
revit.Junctions.Add(revitJunction2);
revitMiddle2.EndCode = junctionInfo2.ObjectId;
#endregion
return JsonHelper.Object2Json(revit);
}
}
}