using System;
|
using System.Linq;
|
using System.Runtime.Serialization;
|
|
namespace IStation.WinFrmUI.ViewModel
|
{
|
/// <summary>
|
/// 公差点参数
|
/// </summary>
|
[Serializable]
|
[DataContract]
|
public class PointToleranceParas
|
{
|
private int _toleranceGrade = 1;
|
|
private double _tolMinX;
|
|
private double _tolMaxX = -1.0;
|
|
private double _tolMinY;
|
|
private double _tolMaxY = -1.0;
|
|
private double _tolMinP;
|
|
private double _tolMaxP = -1.0;
|
|
private double _tolMinE;
|
|
[DataMember]
|
public int ToleranceGrade
|
{
|
get
|
{
|
return _toleranceGrade;
|
}
|
set
|
{
|
_toleranceGrade = value;
|
}
|
}
|
|
[DataMember]
|
public double TolRatioMinQ
|
{
|
get
|
{
|
return _tolMinX;
|
}
|
set
|
{
|
_tolMinX = value;
|
if (_tolMinX > 90.0)
|
{
|
_tolMinX /= 100.0;
|
}
|
}
|
}
|
|
[DataMember]
|
public double TolRatioMaxQ
|
{
|
get
|
{
|
return _tolMaxX;
|
}
|
set
|
{
|
_tolMaxX = value;
|
if (_tolMaxX > 90.0)
|
{
|
_tolMaxX /= 100.0;
|
}
|
}
|
}
|
|
[DataMember]
|
public double TolRatioMinH
|
{
|
get
|
{
|
return _tolMinY;
|
}
|
set
|
{
|
_tolMinY = value;
|
if (_tolMinY > 90.0)
|
{
|
_tolMinY /= 100.0;
|
}
|
}
|
}
|
|
[DataMember]
|
public double TolRatioMaxH
|
{
|
get
|
{
|
return _tolMaxY;
|
}
|
set
|
{
|
_tolMaxY = value;
|
if (_tolMaxY > 90.0)
|
{
|
_tolMaxY /= 100.0;
|
}
|
}
|
}
|
|
[DataMember]
|
public double TolRatioMinP
|
{
|
get
|
{
|
return _tolMinP;
|
}
|
set
|
{
|
_tolMinP = value;
|
if (_tolMinP > 90.0)
|
{
|
_tolMinP /= 100.0;
|
}
|
}
|
}
|
|
[DataMember]
|
public double TolRatioMaxP
|
{
|
get
|
{
|
return _tolMaxP;
|
}
|
set
|
{
|
_tolMaxP = value;
|
if (_tolMaxP > 90.0)
|
{
|
_tolMaxP = _tolMaxY / 100.0;
|
}
|
}
|
}
|
|
[DataMember]
|
public double TolRatioMinE
|
{
|
get
|
{
|
return _tolMinE;
|
}
|
set
|
{
|
_tolMinE = value;
|
if (_tolMinE > 90.0)
|
{
|
_tolMinE /= 100.0;
|
}
|
}
|
}
|
|
public PointToleranceParas()
|
{
|
}
|
|
public PointToleranceParas(string strPara)
|
{
|
if (string.IsNullOrEmpty(strPara))
|
{
|
return;
|
}
|
|
string[] array = strPara.Split(',');
|
if (array.Count() >= 4)
|
{
|
if (array.Count() == 4)
|
{
|
ToleranceGrade = 1;
|
TolRatioMinQ = Convert.ToDouble(array[0]);
|
TolRatioMaxQ = Convert.ToDouble(array[1]);
|
TolRatioMinH = Convert.ToDouble(array[2]);
|
TolRatioMaxH = Convert.ToDouble(array[3]);
|
}
|
else if (array.Count() == 8)
|
{
|
ToleranceGrade = Convert.ToInt32(array[0]);
|
TolRatioMinQ = Convert.ToDouble(array[1]);
|
TolRatioMaxQ = Convert.ToDouble(array[2]);
|
TolRatioMinH = Convert.ToDouble(array[3]);
|
TolRatioMaxH = Convert.ToDouble(array[4]);
|
TolRatioMinP = Convert.ToDouble(array[5]);
|
TolRatioMaxP = Convert.ToDouble(array[6]);
|
TolRatioMinE = Convert.ToDouble(array[7]);
|
}
|
else
|
{
|
ToleranceGrade = -100;
|
}
|
}
|
}
|
|
public PointToleranceParas(PointToleranceParas rhs)
|
{
|
TolRatioMinQ = rhs.TolRatioMinQ;
|
TolRatioMaxQ = rhs.TolRatioMaxQ;
|
TolRatioMinH = rhs.TolRatioMinH;
|
TolRatioMaxH = rhs.TolRatioMaxH;
|
TolRatioMinP = rhs.TolRatioMinP;
|
TolRatioMaxP = rhs.TolRatioMaxP;
|
TolRatioMinE = rhs.TolRatioMinE;
|
ToleranceGrade = rhs.ToleranceGrade;
|
}
|
|
public PointToleranceParas(eToleranceGrade grand)
|
{
|
ResetGrade(grand);
|
}
|
|
public void ResetGrade(eToleranceGrade grand)
|
{
|
ToleranceGrade = (int)grand;
|
switch (grand)
|
{
|
case eToleranceGrade.GB3216_2005_1:
|
TolRatioMinQ = 0.955;
|
TolRatioMaxQ = 1.045;
|
TolRatioMinH = 0.97;
|
TolRatioMaxH = 1.03;
|
TolRatioMinE = 0.03;
|
break;
|
case eToleranceGrade.GB3216_2005_2:
|
TolRatioMinQ = 0.92;
|
TolRatioMaxQ = 1.08;
|
TolRatioMinH = 0.95;
|
TolRatioMaxH = 1.05;
|
TolRatioMinE = 0.05;
|
break;
|
case eToleranceGrade.GB3216_2016_1U:
|
TolRatioMinQ = 0.9;
|
TolRatioMaxQ = 1.1;
|
TolRatioMinH = 0.94;
|
TolRatioMaxH = 1.06;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.1;
|
TolRatioMinE = 0.0;
|
break;
|
case eToleranceGrade.GB3216_2016_1E:
|
TolRatioMinQ = 0.95;
|
TolRatioMaxQ = 1.05;
|
TolRatioMinH = 0.97;
|
TolRatioMaxH = 1.03;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.04;
|
TolRatioMinE = 0.0;
|
break;
|
case eToleranceGrade.GB3216_2016_1B:
|
TolRatioMinQ = 0.95;
|
TolRatioMaxQ = 1.05;
|
TolRatioMinH = 0.97;
|
TolRatioMaxH = 1.03;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.04;
|
TolRatioMinE = 0.03;
|
break;
|
case eToleranceGrade.GB3216_2016_2B:
|
TolRatioMinQ = 0.92;
|
TolRatioMaxQ = 1.08;
|
TolRatioMinH = 0.95;
|
TolRatioMaxH = 1.05;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.08;
|
TolRatioMinE = 0.05;
|
break;
|
case eToleranceGrade.GB3216_2016_2U:
|
TolRatioMinQ = 0.84;
|
TolRatioMaxQ = 1.16;
|
TolRatioMinH = 0.9;
|
TolRatioMaxH = 1.1;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.16;
|
TolRatioMinE = 0.05;
|
break;
|
case eToleranceGrade.GB3216_2016_3B:
|
TolRatioMinQ = 0.91;
|
TolRatioMaxQ = 1.09;
|
TolRatioMinH = 0.93;
|
TolRatioMaxH = 1.07;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.09;
|
TolRatioMinE = 0.07;
|
break;
|
case eToleranceGrade.ISO9906_2012_1U:
|
TolRatioMinQ = 0.9;
|
TolRatioMaxQ = 1.1;
|
TolRatioMinH = 0.94;
|
TolRatioMaxH = 1.06;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.1;
|
TolRatioMinE = 0.0;
|
break;
|
case eToleranceGrade.ISO9906_2012_1E:
|
TolRatioMinQ = 0.95;
|
TolRatioMaxQ = 1.05;
|
TolRatioMinH = 0.97;
|
TolRatioMaxH = 1.03;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.04;
|
TolRatioMinE = 0.0;
|
break;
|
case eToleranceGrade.ISO9906_2012_1B:
|
TolRatioMinQ = 0.95;
|
TolRatioMaxQ = 1.05;
|
TolRatioMinH = 0.97;
|
TolRatioMaxH = 1.03;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.04;
|
TolRatioMinE = 0.03;
|
break;
|
case eToleranceGrade.ISO9906_2012_2B:
|
TolRatioMinQ = 0.92;
|
TolRatioMaxQ = 1.08;
|
TolRatioMinH = 0.95;
|
TolRatioMaxH = 1.05;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.08;
|
TolRatioMinE = 0.05;
|
break;
|
case eToleranceGrade.ISO9906_2012_2U:
|
TolRatioMinQ = 0.84;
|
TolRatioMaxQ = 1.16;
|
TolRatioMinH = 0.9;
|
TolRatioMaxH = 1.1;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.16;
|
TolRatioMinE = 0.05;
|
break;
|
case eToleranceGrade.ISO9906_2012_3B:
|
TolRatioMinQ = 0.91;
|
TolRatioMaxQ = 1.09;
|
TolRatioMinH = 0.93;
|
TolRatioMaxH = 1.07;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.09;
|
TolRatioMinE = 0.07;
|
break;
|
case eToleranceGrade.API685_2020:
|
TolRatioMinQ = 1.0;
|
TolRatioMaxQ = 1.0;
|
TolRatioMinH = 1.0;
|
TolRatioMaxH = 1.04;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 0.0;
|
TolRatioMinE = 0.0;
|
break;
|
case eToleranceGrade.企业标准1:
|
if (PointToleranceParasHepler.CorpToleranceParas1 == null)
|
{
|
TolRatioMinQ = 0.92;
|
TolRatioMaxQ = 1.08;
|
TolRatioMinH = 0.99;
|
TolRatioMaxH = 1.1;
|
TolRatioMinP = 0.0;
|
TolRatioMaxP = 1.16;
|
TolRatioMinE = 0.05;
|
}
|
else
|
{
|
TolRatioMinQ = PointToleranceParasHepler.CorpToleranceParas1.TolRatioMinQ;
|
TolRatioMaxQ = PointToleranceParasHepler.CorpToleranceParas1.TolRatioMaxQ;
|
TolRatioMinH = PointToleranceParasHepler.CorpToleranceParas1.TolRatioMinH;
|
TolRatioMaxH = PointToleranceParasHepler.CorpToleranceParas1.TolRatioMaxH;
|
TolRatioMinP = PointToleranceParasHepler.CorpToleranceParas1.TolRatioMinP;
|
TolRatioMaxP = PointToleranceParasHepler.CorpToleranceParas1.TolRatioMaxP;
|
TolRatioMinE = PointToleranceParasHepler.CorpToleranceParas1.TolRatioMinE;
|
}
|
|
break;
|
default:
|
TolRatioMinQ = 0.92;
|
TolRatioMaxQ = 1.08;
|
TolRatioMinH = 0.95;
|
TolRatioMaxH = 1.05;
|
break;
|
}
|
}
|
|
public static double GetTolerance4Eta(eToleranceGrade grand)
|
{
|
switch (grand)
|
{
|
case eToleranceGrade.GB3216_2005_1:
|
return 0.03;
|
case eToleranceGrade.GB3216_2005_2:
|
return 0.05;
|
case eToleranceGrade.GB3216_2016_1U:
|
return 0.0;
|
case eToleranceGrade.GB3216_2016_1E:
|
return 0.0;
|
case eToleranceGrade.GB3216_2016_1B:
|
return 0.03;
|
case eToleranceGrade.GB3216_2016_2B:
|
return 0.05;
|
case eToleranceGrade.GB3216_2016_2U:
|
return 0.05;
|
case eToleranceGrade.GB3216_2016_3B:
|
return 0.07;
|
case eToleranceGrade.ISO9906_2012_1U:
|
return 0.0;
|
case eToleranceGrade.ISO9906_2012_1E:
|
return 0.0;
|
case eToleranceGrade.ISO9906_2012_1B:
|
return 0.03;
|
case eToleranceGrade.ISO9906_2012_2B:
|
return 0.05;
|
case eToleranceGrade.ISO9906_2012_2U:
|
return 0.05;
|
case eToleranceGrade.ISO9906_2012_3B:
|
return 0.07;
|
default:
|
return 0.07;
|
}
|
}
|
|
public bool IsReasonable(bool isEqualAble)
|
{
|
if (isEqualAble)
|
{
|
if (TolRatioMaxQ < TolRatioMinQ)
|
{
|
return false;
|
}
|
|
if (TolRatioMaxH < TolRatioMinH)
|
{
|
return false;
|
}
|
|
return true;
|
}
|
|
if (TolRatioMaxQ <= TolRatioMinQ)
|
{
|
return false;
|
}
|
|
if (TolRatioMaxH <= TolRatioMinH)
|
{
|
return false;
|
}
|
|
return true;
|
}
|
|
public static string ToDsString(PointToleranceParas point)
|
{
|
return point?.ToDsString();
|
}
|
|
public string ToDsString()
|
{
|
return $"{_toleranceGrade},{TolRatioMinQ},{TolRatioMaxQ},{TolRatioMinH},{TolRatioMaxH},{TolRatioMinP},{TolRatioMaxP},{TolRatioMinE}";
|
}
|
}
|
}
|