namespace Yw.WinFrmUI.Phart.Unit { /// /// /// public class UnitQHelper : IUnitHelper { #region 静态 public static double Convert(eUnitQ fromUnit, eUnitQ toUnit, double fromValue) { if (fromUnit == toUnit) return fromValue; double m = toM3H(fromUnit, fromValue); return fromM3H(toUnit, m); } public static string GetCnUnitName(eUnitQ unit) { switch (unit) { case eUnitQ.LS: return "升/秒"; case eUnitQ.M3H: return "立方米/小时"; case eUnitQ.M3M: return "立方米/分钟"; case eUnitQ.M3Ss: return "立方米/秒"; default: return string.Empty; } } public static List GetCnUnitNameList() { var list = new List(); foreach (eUnitQ item in Enum.GetValues(typeof(eUnitQ))) { list.Add(GetCnUnitName(item)); } return list; } public static Dictionary GetCnUnitDict() { var dic = new Dictionary(); foreach (eUnitQ item in Enum.GetValues(typeof(eUnitQ))) { dic.Add(item, GetCnUnitName(item)); } return dic; } public static string GetEnUnitName(eUnitQ unit) { switch (unit) { case eUnitQ.LS: return "L/s"; case eUnitQ.M3H: return "m³/h"; case eUnitQ.M3M: return "m³/min"; case eUnitQ.M3Ss: return "m³/s"; case eUnitQ.USGalMin: return "us.gpm"; case eUnitQ.Ft3H: return "ft³/h"; case eUnitQ.Ft3Min: return "ft³/min"; case eUnitQ.LMIN: return "L/min"; case eUnitQ.USGalHour: return "us.gal/hour"; case eUnitQ.LH: return "L/h"; default: return string.Empty; } } public static List GetEnUnitNameList() { var list = new List(); foreach (eUnitQ item in Enum.GetValues(typeof(eUnitQ))) { list.Add(GetEnUnitName(item)); } return list; } public static Dictionary GetEnUnitDict() { var dic = new Dictionary(); foreach (eUnitQ item in Enum.GetValues(typeof(eUnitQ))) { dic.Add(item, GetEnUnitName(item)); } return dic; } public static CoefficientAxis fromM3H(eUnitQ unit) { switch (unit) { case eUnitQ.LS: return M3HtoLS_calc; case eUnitQ.M3H: return constantAxis; //case eUnitQ.M3Min: // return M3HtoM3Min_calc; //case eUnitQ.LmpGalMin: // return M3HtoLmpGalMin_calc; case eUnitQ.USGalMin: return M3HtoUSGalMin_calc; case eUnitQ.Ft3H: return M3HtoFt3H_calc; case eUnitQ.Ft3Min: return M3HtoFt3Min_calc; case eUnitQ.M3Ss: return M3HtoM3S_calc; case eUnitQ.LMIN: return M3HtoLMIN_calc; case eUnitQ.USGalHour: return M3HtoUSGalHour_calc; case eUnitQ.LH: return M3HtoLH_calc; default: return constantAxis; } } public static CoefficientAxis toM3H(eUnitQ unit) { switch (unit) { case eUnitQ.LS: return LStoM3H_calc; case eUnitQ.M3H: return constantAxis; case eUnitQ.M3M: // return M3MintoM3H_calc; //case eUnitQ.LmpGalMin: return LmpGalMintoM3H_calc; case eUnitQ.USGalMin: return USGalMintoM3H_calc; case eUnitQ.Ft3H: return Ft3HtoM3H_calc; case eUnitQ.Ft3Min: return Ft3MintoM3H_calc; case eUnitQ.M3Ss: return M3StoM3H_calc; case eUnitQ.LMIN: return LMINtoM3H_calc; case eUnitQ.USGalHour: return USGalHourtoM3H_calc; case eUnitQ.LH: return LHtoM3H_calc; default: return constantAxis; } } public static double fromM3H(eUnitQ unit, double value) { switch (unit) { case eUnitQ.LS: return M3HtoLS_calc.Calc(value); case eUnitQ.M3H: return value; case eUnitQ.M3M: return M3HtoM3Min_calc.Calc(value); case eUnitQ.USGalMin: return M3HtoUSGalMin_calc.Calc(value); case eUnitQ.Ft3H: return M3HtoFt3H_calc.Calc(value); case eUnitQ.Ft3Min: return M3HtoFt3Min_calc.Calc(value); case eUnitQ.M3Ss: return M3HtoM3S_calc.Calc(value); case eUnitQ.LMIN: return M3HtoLMIN_calc.Calc(value); case eUnitQ.USGalHour: return M3HtoUSGalHour_calc.Calc(value); case eUnitQ.LH: return M3HtoLH_calc.Calc(value); default: return value; } } public static double toM3H(eUnitQ unit, double value) { switch (unit) { case eUnitQ.LS: return LStoM3H_calc.Calc(value); case eUnitQ.M3H: return value; case eUnitQ.M3M: return M3MintoM3H_calc.Calc(value); case eUnitQ.USGalMin: return USGalMintoM3H_calc.Calc(value); case eUnitQ.Ft3H: return Ft3HtoM3H_calc.Calc(value); case eUnitQ.Ft3Min: return Ft3MintoM3H_calc.Calc(value); case eUnitQ.M3Ss: return M3StoM3H_calc.Calc(value); case eUnitQ.LMIN: return LMINtoM3H_calc.Calc(value); case eUnitQ.USGalHour: return USGalHourtoM3H_calc.Calc(value); case eUnitQ.LH: return LHtoM3H_calc.Calc(value); default: return value; } } #endregion // static CoefficientAxis constantAxis = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0); static CoefficientAxis LStoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(3.6); static CoefficientAxis M3HtoLS_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 3.6); static CoefficientAxis M3MintoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(60.0); static CoefficientAxis M3HtoM3Min_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 60.0); static CoefficientAxis M3StoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(3600.0); static CoefficientAxis M3HtoM3S_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 3600.0); static CoefficientAxis LmpGalMintoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(0.27279); static CoefficientAxis M3HtoLmpGalMin_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 0.27279); static CoefficientAxis USGalMintoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(0.2271); static CoefficientAxis M3HtoUSGalMin_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 0.2271); static CoefficientAxis USGalHourtoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(0.2271 / 60); static CoefficientAxis M3HtoUSGalHour_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(60.0 / 0.2271); static CoefficientAxis USGalMintoLH_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(0.2271 * 1000); static CoefficientAxis LHtoUSGalMin_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1 / (0.2271 * 1000)); static CoefficientAxis Ft3HtoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(0.02832); static CoefficientAxis M3HtoFt3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 0.02832); static CoefficientAxis Ft3MintoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.6992); static CoefficientAxis M3HtoFt3Min_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 1.6992); static CoefficientAxis LMINtoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(0.06); static CoefficientAxis M3HtoLMIN_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 0.06); static CoefficientAxis LHtoM3H_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(0.001); static CoefficientAxis M3HtoLH_calc = new Yw.WinFrmUI.Phart.Unit.CoefficientAxis(1.0 / 1000); #region 显示接口 double IUnitHelper.Convert(int fromUnit, int toUnit, double fromValue) { return Convert((eUnitQ)fromUnit, (eUnitQ)toUnit, fromValue); } string IUnitHelper.GetCnUnitName(int unit) { return GetCnUnitName((eUnitQ)unit); } List IUnitHelper.GetCnUnitNameList() { return GetCnUnitNameList(); } Dictionary IUnitHelper.GetCnUnitDict() { var dic = new Dictionary(); foreach (var item in GetCnUnitDict()) { dic.Add((int)item.Key, item.Value); } return dic; } string IUnitHelper.GetEnUnitName(int unit) { return GetEnUnitName((eUnitQ)unit); } List IUnitHelper.GetEnUnitNameList() { return GetEnUnitNameList(); } Dictionary IUnitHelper.GetEnUnitDict() { var dic = new Dictionary(); foreach (var item in GetEnUnitDict()) { dic.Add((int)item.Key, item.Value); } return dic; } #endregion } }