using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace Hydro.Core.Model
|
{
|
[Serializable]
|
public class LinkModel : BaseModel
|
{
|
public LinkModel() { }
|
|
public LinkModel(LinkModel model) : base(model)
|
{
|
this.Node1 = model.Node1;
|
this.Node2 = model.Node2;
|
this.Diameter = model.Diameter;
|
this.Length = model.Length;
|
this.Roughness = model.Roughness;
|
this.MinorLoss = model.MinorLoss;
|
|
}
|
/// <summary>
|
/// Node1
|
/// </summary>
|
public virtual string Node1 { get; set; }
|
|
/// <summary>
|
/// Node2
|
/// </summary>
|
public virtual string Node2 { get; set; }
|
|
|
|
|
|
|
/// <summary>
|
/// 口径
|
/// </summary>
|
public virtual float Diameter { get; set; }
|
|
/// <summary>
|
/// 长度
|
/// </summary>
|
public virtual float Length { get; set; }
|
|
/// <summary>
|
/// 海森威廉系数
|
/// </summary>
|
public virtual float Roughness { get; set; }
|
|
/// <summary>
|
/// 局部阻力系数
|
/// </summary>
|
public virtual float MinorLoss { get; set; }
|
|
public virtual string ToStatusString()
|
{
|
if (Status == ObjectEnum.StatusType.CLOSED)
|
{
|
return $"{ID}\tCLOSED\r\n";
|
}
|
return "";
|
}
|
}
|
[Serializable]
|
public class LinkCalcModel : LinkModel
|
{
|
public LinkCalcModel() { }
|
|
public LinkCalcModel(LinkCalcModel model) : base(model)
|
{
|
this.Node1 = model.Node1;
|
this.Node2 = model.Node2;
|
this.Diameter = model.Diameter;
|
this.Length = model.Length;
|
this.Roughness = model.Roughness;
|
this.MinorLoss = model.MinorLoss;
|
}
|
|
public string Node1
|
{
|
get
|
{
|
if (_StartNode != null) return _StartNode.ID;
|
return base.Node1;
|
}
|
set
|
{
|
|
base.Node1 = value;
|
}
|
}
|
|
public string Node2
|
{
|
get
|
{
|
if (_EndNode != null) return _EndNode.ID;
|
return base.Node2;
|
}
|
set
|
{
|
base.Node2 = value;
|
}
|
}
|
|
|
private NodeCalcModel _StartNode;
|
[JsonIgnore]
|
public NodeCalcModel StartNode {
|
get { return _StartNode; }
|
set { _StartNode = value; if (_StartNode != null) this.Node1 = _StartNode.ID; }
|
}
|
|
private NodeCalcModel _EndNode;
|
[JsonIgnore]
|
public NodeCalcModel EndNode {
|
get { return _EndNode; }
|
set { _EndNode = value; if (_EndNode!=null)this.Node2 = _EndNode.ID; }
|
}
|
|
/// <summary>
|
/// 长度
|
/// </summary>
|
public float Length
|
{
|
get
|
{
|
if (base.Length>0) return base.Length;
|
else
|
{
|
if (_StartNode!=null && _EndNode!=null)
|
{
|
////求_StartNode到_EndNode的距离
|
return (float)Math.Sqrt( Math.Pow(_StartNode.X-_EndNode.X, 2)+ Math.Pow(_StartNode.Y-_EndNode.Y,2)+Math.Pow(_StartNode.Elev-_EndNode.Elev,2));
|
}
|
else
|
{
|
return 0;
|
}
|
}
|
}
|
set
|
{
|
base.Length = value;
|
}
|
}
|
|
//实际需水量
|
[Category("计算结果")]
|
[DisplayName("1)流量(m³/h)")]
|
[Browsable(true)]
|
public float EN_FLOW { get; set; } = float.NaN;
|
|
//实际需水量
|
[Category("计算结果")]
|
[DisplayName("2)流速(m/s)")]
|
[Browsable(true)]
|
public float EN_VELOCITY { get; set; } = float.NaN;
|
//实际需水量
|
[Category("计算结果")]
|
[DisplayName("3)水头损失(m)")]
|
[Browsable(true)]
|
public float EN_HEADLOSS { get; set; } = float.NaN;
|
|
[Category("计算结果")]
|
[DisplayName("4)沿程水损(m)")]
|
[Browsable(true)]
|
public float EN_HEADLOSS_LINE { get; set; } = float.NaN;
|
|
[Category("计算结果")]
|
[DisplayName("5)局部水损(m)")]
|
[Browsable(true)]
|
public float EN_HEADLOSS_MINOR { get; set; } = float.NaN;
|
//实际需水量
|
[Category("计算结果")]
|
[DisplayName("5)当前状态")]
|
[Browsable(false)]
|
public float EN_STATUS { get; set; } = float.NaN;
|
[Category("其他参数")]
|
[Description("选中")]
|
[DisplayName("选中")]
|
[Browsable(false)]
|
public bool Selected { get; set; }
|
|
[Category("其他参数")]
|
[Description("鼠标悬于上方")]
|
[DisplayName("鼠标悬于上方")]
|
[Browsable(false)]
|
public bool Hovered { get; set; }
|
}
|
|
|
|
}
|