using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Data;
|
using System.Text;
|
|
namespace Yw.Coordinate
|
{
|
public class LxpCoordinateParas
|
{
|
public LxpCoordinateParas() { }
|
|
public LxpCoordinateParas(string strChartCoord)
|
{
|
try
|
{
|
if (string.IsNullOrEmpty(strChartCoord))
|
{
|
isNull = true;
|
return;
|
}
|
|
string[] coords = strChartCoord.Split('|');
|
if (coords.Count() < 6)
|
{
|
isNull = true;
|
return;
|
}
|
|
//
|
string sbQ = coords[0];
|
string[] coordParasQ = sbQ.Split(',');
|
//coordParasQ[0] =1 表示均匀 默认就是均匀的
|
//this.UnitQ = Convert.ToInt32(coordParasQ[1]);
|
this.GridNumberX = Convert.ToInt32(coordParasQ[2]);
|
this.CoordMinQ = Convert.ToDouble(coordParasQ[3]);
|
this.CoordSpaceQ = Convert.ToDouble(coordParasQ[4]);
|
|
|
//
|
string sbY = coords[1];
|
string[] coordParasY = sbY.Split(',');
|
//coordParasQ[0] =1 表示均匀:默认就是均匀的
|
this.GridNumberY = Convert.ToInt32(coordParasY[1]);
|
|
//H
|
string sbH = coords[2];
|
string[] coordParasH = sbH.Split(',');
|
//this.UnitH = (UnitH)Convert.ToInt32(coordParasH[0]);
|
this.CoordMinH = Convert.ToDouble(coordParasH[1]) ;
|
this.CoordSpaceH = Convert.ToDouble(coordParasH[2]);
|
this.StartLineNoH = Convert.ToInt32(coordParasH[3]);
|
this.EndLineNoH = Convert.ToInt32(coordParasH[4]);
|
|
//Eff
|
string sbE = coords[3];
|
string[] coordParasE = sbE.Split(',');
|
// this.UnitE = (UnitE)Convert.ToInt32(coordParasE[0]);
|
this.CoordMinE = Convert.ToDouble(coordParasE[1]) ;
|
this.CoordSpaceE = Convert.ToDouble(coordParasE[2]);
|
this.StartLineNoE = Convert.ToInt32(coordParasE[3]);
|
this.EndLineNoE = Convert.ToInt32(coordParasE[4]);
|
if (this.CoordSpaceE < 0.01)
|
this.CoordSpaceE = 10;
|
if (this.EndLineNoE == 0)
|
this.EndLineNoE = 10;
|
|
//Power
|
string sbP = coords[4];
|
string[] coordParasP = sbP.Split(',');
|
// paras.UnitP = (UnitE)Convert.ToInt32(coordParasP[0]);
|
this.CoordMinP = Convert.ToDouble(coordParasP[1]) ;
|
this.CoordSpaceP = Convert.ToDouble(coordParasP[2]);
|
this.StartLineNoP = Convert.ToInt32(coordParasP[3]);
|
this.EndLineNoP = Convert.ToInt32(coordParasP[4]);
|
if (this.CoordSpaceP < 0.001)
|
this.CoordSpaceP = 10;
|
if (this.EndLineNoP == 0)
|
this.EndLineNoP = 5;
|
|
//QNPSH
|
string sbNPSH = coords[5];
|
string[] coordParasNPSH = sbNPSH.Split(',');
|
// this.UnitNPSH = (UnitH)Convert.ToInt32(coordParasNPSH[0]);
|
this.CoordMinNPSH = Convert.ToDouble(coordParasNPSH[1]);
|
this.CoordSpaceNPSH = Convert.ToDouble(coordParasNPSH[2]);
|
this.StartLineNoNPSH = Convert.ToInt32(coordParasNPSH[3]);
|
this.EndLineNoNPSH = Convert.ToInt32(coordParasNPSH[4]);
|
if (this.CoordSpaceNPSH < 0.1)
|
this.CoordSpaceNPSH = 1;
|
if (this.EndLineNoNPSH == 0)
|
this.EndLineNoNPSH = 5;
|
|
if (coords.Count() > 6)
|
{//大于6
|
string sbPanel = coords[6];
|
string[] coordParasPanel = sbPanel.Split(',');
|
this.DispStyle = Convert.ToInt32(coordParasPanel[0]);
|
var num1 = Convert.ToInt32(coordParasPanel[1]);
|
if (num1 > 0)//不能是0 为了兼容老数据, 老的数据里面是0
|
this.DislocationNumUp = num1;
|
|
var num2 = Convert.ToInt32(coordParasPanel[2]);
|
if (num2 > 0)
|
this.DislocationNumDown = num2;
|
}
|
}
|
catch (Exception)
|
{
|
isNull = true;
|
return;
|
}
|
}
|
|
public LxpCoordinateParas(LxpCoordinateParas rhs)
|
{
|
if (rhs == null)
|
{
|
return;
|
}
|
|
|
this.UnitQ = rhs.UnitQ;
|
this.GridNumberX = rhs.GridNumberX;
|
this.CoordMinQ = rhs.CoordMinQ;
|
this.CoordSpaceQ = rhs.CoordSpaceQ;
|
|
//
|
this.GridNumberY = rhs.GridNumberY;
|
|
//H
|
this.UnitH = rhs.UnitH;
|
this.CoordMinH = rhs.CoordMinH;
|
this.CoordSpaceH = rhs.CoordSpaceH;
|
this.StartLineNoH = rhs.StartLineNoH;
|
this.EndLineNoH = rhs.EndLineNoH;
|
|
//Eff
|
this.CoordMinE = rhs.CoordMinE;
|
this.CoordSpaceE = rhs.CoordSpaceE;
|
this.StartLineNoE = rhs.StartLineNoE;
|
this.EndLineNoE = rhs.EndLineNoE;
|
|
|
//Power
|
this.CoordMinP = rhs.CoordMinP;
|
this.CoordSpaceP = rhs.CoordSpaceP;
|
this.StartLineNoP = rhs.StartLineNoP;
|
this.EndLineNoP = rhs.EndLineNoP;
|
|
|
//QNPSH
|
this.CoordMinNPSH = rhs.CoordMinNPSH;
|
this.CoordSpaceNPSH = rhs.CoordSpaceNPSH;
|
this.StartLineNoNPSH = rhs.StartLineNoNPSH;
|
this.EndLineNoNPSH = rhs.EndLineNoNPSH;
|
|
this.DispStyle = rhs.DispStyle;
|
this.DislocationNumUp = rhs.DislocationNumUp;
|
this.DislocationNumDown = rhs.DislocationNumDown;
|
}
|
|
|
//得到空白的坐标值
|
public static LxpCoordinateParas GetBlankCoordinate()
|
{
|
LxpCoordinateParas para = new LxpCoordinateParas();
|
para.GridNumberX = 30;
|
para.GridNumberY = 16;
|
|
//显示的坐标线号
|
para.StartLineNoH = 10;
|
para.EndLineNoH = 15;
|
|
para.StartLineNoE = 0;
|
para.EndLineNoE = 10;
|
|
para.StartLineNoP = 2;
|
para.EndLineNoP = 9;
|
|
//坐标最小值和间隔
|
para.CoordMinQ = 0; para.CoordSpaceQ = 1000;
|
para.CoordMinH = 10; para.CoordSpaceH = 100;
|
para.CoordMinE = 0; para.CoordSpaceE = 100;
|
para.CoordMinP = 10; para.CoordSpaceP = 100;
|
|
return para;
|
}
|
|
|
//坐标间隔数,坐标线会比坐标间隔数多一
|
public int GridNumberX = 30;//X坐标
|
public int GridNumberY = 16;//Y坐标
|
|
//显示的坐标线号
|
public int StartLineNoH;
|
public int EndLineNoH;
|
|
public int StartLineNoE;
|
public int EndLineNoE;
|
|
public int StartLineNoP;
|
public int EndLineNoP;
|
|
public int StartLineNoNPSH;
|
public int EndLineNoNPSH;
|
|
//面板显示设置
|
public int DispStyle = 0;//显示风格 0 跟随系统: 以后拓展
|
public int DislocationNumUp = 2;//扬程效率刻度 错位数 (QH和QE坐标的错位) 就是QH下面的空格数
|
public int DislocationNumDown = 1;//气蚀功率刻度 错位数
|
|
|
//坐标最小值和间隔
|
public double CoordMinQ, CoordSpaceQ;
|
public double CoordMinH, CoordSpaceH;
|
public double CoordMinE, CoordSpaceE;
|
public double CoordMinP, CoordSpaceP;
|
public double CoordMinNPSH, CoordSpaceNPSH;
|
|
//
|
public double DispMaxQ()
|
{
|
return this.CoordMinQ + this.GridNumberX * this.CoordSpaceQ;
|
}
|
|
public double DispMinH()
|
{
|
return this.CoordMinH + this.StartLineNoH * this.CoordSpaceH;
|
}
|
public double DispMaxH()
|
{
|
return this.CoordMinH + this.EndLineNoH * this.CoordSpaceH;
|
}
|
public double DispMinE()
|
{
|
return this.CoordMinE + this.StartLineNoE * this.CoordSpaceE;
|
}
|
public double DispMaxE()
|
{
|
return this.CoordMinE + this.EndLineNoE * this.CoordSpaceE;
|
}
|
public double DispMinP()
|
{
|
return this.CoordMinP + this.StartLineNoP * this.CoordSpaceP;
|
}
|
public double DispMaxP()
|
{
|
return this.CoordMinP + this.EndLineNoP * this.CoordSpaceP;
|
}
|
public double DispMinNPSH()
|
{
|
return this.CoordMinNPSH + this.StartLineNoNPSH * this.CoordSpaceNPSH;
|
}
|
public double DispMaxNPSH()
|
{
|
return this.CoordMinNPSH + this.EndLineNoNPSH * this.CoordSpaceNPSH;
|
}
|
//
|
public int? UnitQ
|
{
|
get { return _unitQ; }
|
set
|
{
|
_unitQ = value;
|
}
|
}
|
private int? _unitQ = null;
|
|
//
|
public int? UnitH
|
{
|
get { return _unitH; }
|
set
|
{
|
_unitH = value;
|
}
|
}
|
private int? _unitH = null;
|
|
//
|
public int? UnitP { get { return _unitP; } set { _unitP = value; } }
|
private int? _unitP = null;
|
|
|
public Object Clone() //对外提供一个创建自身的浅表副本的能力
|
{
|
return this.MemberwiseClone();
|
}
|
|
//坐标刻度的最小值
|
public double TitleMinH { get { return CoordMinH + StartLineNoH * CoordSpaceH; } }
|
|
//
|
protected bool isNull = false;
|
public bool IsNull
|
{
|
get { return isNull; }
|
}
|
|
public static LxpCoordinateParas ToParameter(string strChartCoord)
|
{
|
try
|
{
|
var paras = new LxpCoordinateParas(strChartCoord);
|
if (paras.isNull)
|
return null;
|
else
|
return paras;
|
}
|
catch (Exception)
|
{
|
return null;
|
}
|
}
|
|
public string ToDsString()
|
{
|
return ToDsString(this);
|
}
|
|
public static string ToDsString(LxpCoordinateParas paras)
|
{
|
if (paras == null)
|
return "";//为了ACCESS只能用""
|
|
StringBuilder sbQ = new StringBuilder();
|
sbQ.Append("1,");//1:表示均匀
|
sbQ.Append(paras.UnitQ==null?"": paras.UnitQ.ToString()); sbQ.Append(",");
|
sbQ.Append(paras.GridNumberX); sbQ.Append(",");
|
sbQ.Append(paras.CoordMinQ); sbQ.Append(",");
|
sbQ.Append(paras.CoordSpaceQ);
|
|
//
|
StringBuilder sbY = new StringBuilder();
|
sbY.Append("1,");//1:表示均匀
|
sbY.Append(paras.GridNumberY);
|
|
//
|
StringBuilder sbH = new StringBuilder();
|
sbH.Append(paras.UnitH == null ? "" : paras.UnitH.ToString()); sbH.Append(",");//要保留小数, 因为单位原因
|
sbH.Append(paras.CoordMinH); sbH.Append(",");
|
sbH.Append(paras.CoordSpaceH); sbH.Append(",");
|
sbH.Append(paras.StartLineNoH); sbH.Append(",");
|
sbH.Append(paras.EndLineNoH);
|
|
StringBuilder sbE = new StringBuilder();
|
sbE.Append("0,");//暂时没有单位
|
|
sbE.Append(paras.CoordMinE); sbE.Append(",");
|
sbE.Append(paras.CoordSpaceE); sbE.Append(",");
|
sbE.Append(paras.StartLineNoE); sbE.Append(",");
|
sbE.Append(paras.EndLineNoE);
|
|
StringBuilder sbP = new StringBuilder();
|
sbP.Append(paras.UnitP == null ? "" : paras.UnitP.ToString()); sbP.Append(",");
|
sbP.Append(paras.CoordMinP); sbP.Append(",");
|
sbP.Append(paras.CoordSpaceP); sbP.Append(",");
|
sbP.Append(paras.StartLineNoP); sbP.Append(",");
|
sbP.Append(paras.EndLineNoP);
|
|
StringBuilder sbNPSH = new StringBuilder();
|
sbNPSH.Append(",");//暂时没有单位
|
sbNPSH.Append(paras.CoordMinNPSH); sbNPSH.Append(",");
|
sbNPSH.Append(paras.CoordSpaceNPSH); sbNPSH.Append(",");
|
sbNPSH.Append(paras.StartLineNoNPSH); sbNPSH.Append(",");
|
sbNPSH.Append(paras.EndLineNoNPSH);
|
|
StringBuilder sbPanel = new StringBuilder();
|
sbPanel.Append(paras.DispStyle); sbPanel.Append(",");
|
sbPanel.Append(paras.DislocationNumUp); sbPanel.Append(",");
|
sbPanel.Append(paras.DislocationNumDown);
|
|
string strChartCoord = string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}",
|
sbQ.ToString(), sbY.ToString(), sbH.ToString(), sbE.ToString(), sbP.ToString(), sbNPSH.ToString(),
|
sbPanel.ToString());
|
|
return strChartCoord;
|
}
|
|
|
}
|
}
|