| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Text; |
| | |
| | | this.R_Right.Add(0); |
| | | } |
| | | } |
| | | public SectionBundleInfo Copy() |
| | | { |
| | | return new SectionBundleInfo |
| | | { |
| | | GaMa_Left = this.GaMa_Left != null ? new List<double>(this.GaMa_Left) : null, |
| | | GaMa_Right = this.GaMa_Right != null ? new List<double>(this.GaMa_Right) : null, |
| | | Area = this.Area != null ? new List<double>(this.Area) : null, |
| | | H = this.H != null ? new List<double>(this.H) : null, |
| | | R_Left = this.R_Left != null ? new List<double>(this.R_Left) : null, |
| | | R_Right = this.R_Right != null ? new List<double>(this.R_Right) : null, |
| | | BaseWidth = this.BaseWidth, |
| | | ShapeType = this.ShapeType, |
| | | V3 = this.V3, |
| | | K3 = this.K3, |
| | | StartSectionNumber = this.StartSectionNumber, |
| | | BaseCircleRadius = this.BaseCircleRadius, |
| | | R_out = this.R_out |
| | | |
| | | }; |
| | | } |
| | | /// <summary> |
| | | /// æªé¢å½¢ç¶ç±»å |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public double V3 { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éåº¦ç³»æ° |
| | | /// </summary> |
| | | public double K3 { get; set; } |
| | | /// <summary> |
| | | /// å¼å§æªé¢ç¼å· |
| | | /// </summary> |
| | |
| | | model.R_Right = this.R_Right[index]; |
| | | model.ShapeType = this.ShapeType; |
| | | model.BaseWidth = this.BaseWidth; |
| | | model.SectionArea = this.Area[index]; |
| | | model.BaseCircleRadius = this.BaseCircleRadius; |
| | | return model; |
| | | } |
| | |
| | | /// <returns></returns> |
| | | public void FromSectionShapePara(SectionShapePara model) |
| | | { |
| | | |
| | | var index = model.Index ; |
| | | this.GaMa_Left[index] = model.Gama_Left ; |
| | | this.GaMa_Right[index] = model.Gama_Right ; |
| | | this.H[index] = model.H; |
| | | this.R_Left[index]= model.R_Left ; |
| | | this.R_Right[index] = model.R_Right ; |
| | | |
| | | |
| | | var index = model.Index; |
| | | this.GaMa_Left[index] = model.Gama_Left; |
| | | this.GaMa_Right[index] = model.Gama_Right; |
| | | this.H[index] = model.H; |
| | | this.R_Left[index] = model.R_Left; |
| | | this.R_Right[index] = model.R_Right; |
| | | } |
| | | public void InitialK3(HdrBaseInfo hdr_info, GeomBaseInfo gemo_info) |
| | | { |
| | | //计ç®å¹¶è®¾ç½®K3 |
| | | if (hdr_info.ns < 170) |
| | | K3 = Math.Round((69.1549 - 0.446605 * hdr_info.ns + 0.0014497 * hdr_info.ns * hdr_info.ns) / 100, 3); |
| | | else |
| | | K3 = 0.35;//0.347; |
| | | |
| | | if (hdr_info.ShapeType == 2) |
| | | K3 = Math.Round(K3 * 0.9, 3);//0.8 ç¯å½¢ |
| | | |
| | | //èªå·±æ·»å çï¼é²æ¢å叿³µæªé¢è¿å° |
| | | if (hdr_info.IsSXB) |
| | | K3 = Math.Round(K3 * 0.85, 3);// å叿³µ |
| | | //ææ±¡æ³µ |
| | | //if (DesignMode == YSSnxOpen::DesignMode::AssPawuQnshQw1) |
| | | //{ |
| | | // K3 = K3 * 0.75; |
| | | //} |
| | | |
| | | |
| | | |
| | | |
| | | var g = 9.81; |
| | | this.V3 = Math.Round(K3 * Math.Sqrt(2 * g * hdr_info.H), 2); // 计ç®å¹³åæµé |
| | | } |
| | | /// <summary> |
| | | /// |
| | |
| | | this.R_Left[index] = sectionShapePara.R_Left; |
| | | this.R_Right[index] = sectionShapePara.R_Right; |
| | | } |
| | | /// <summary> |
| | | /// 计ç®å¹³åæµé |
| | | /// </summary> |
| | | /// <param name="hdr_info"></param> |
| | | /// <param name="geom_info"></param> |
| | | public static double CalcV3(HdrBaseInfo hdr_info, GeomBaseInfo geom_info) |
| | | { |
| | | //UGéé¢ç¨çæ¯ m_Håºè¯¥éäº |
| | | var g = 9.81; |
| | | return Math.Round(geom_info.K3 * Math.Sqrt(2 * g * hdr_info.Q), 2); |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 计ç®åå§åææåæ° |
| | | /// </summary> |
| | | /// <param name="hdr_info"></param> |
| | | /// <param name="geom_info"></param> |
| | | /// <param name="v3"></param> |
| | | public void ResetAllParas(HdrBaseInfo hdr_info, GeomBaseInfo geom_info, double v3) |
| | | public void ResetAllParas(HdrBaseInfo hdr_info, GeomBaseInfo geom_info ) |
| | | { |
| | | this.R_out = 1500.0; |
| | | if (geom_info.D3 > 1000) |
| | | this.R_out = 6000.0; |
| | | else if (geom_info.D3 > 500) |
| | | this.R_out = 3000.0; |
| | | else if (geom_info.D3 > 300) |
| | | this.R_out = 2000.0; |
| | | else |
| | | this.R_out = 1500.0; |
| | | |
| | | InitialK3(hdr_info, geom_info); |
| | | |
| | | this.BaseWidth = geom_info.B3; |
| | | this.BaseCircleRadius = geom_info.D3 / 2; |
| | | |
| | |
| | | InitialGama(hdr_info, geom_info); |
| | | |
| | | // |
| | | CalcParaV3(hdr_info, geom_info, v3); |
| | | CalcParaV3(hdr_info, geom_info ); |
| | | |
| | | // |
| | | CheckChamferR(); |
| | | } |
| | | |
| | | |
| | | public void RecalculateArea(HdrBaseInfo hdr_info, GeomBaseInfo geom_info) |
| | | { |
| | | CalcAllArea(hdr_info, geom_info); |
| | | } |
| | | /// <summary> |
| | | /// V3æ¹äº, éæ°è®¡ç®é¢ç§¯åé«åº¦ |
| | | /// </summary> |
| | | /// <param name="hdr_info"></param> |
| | | /// <param name="geom_info"></param> |
| | | /// <param name="v3"></param> |
| | | public void CalcParaV3(HdrBaseInfo hdr_info, GeomBaseInfo geom_info, double v3) |
| | | { |
| | | this.V3 = v3; |
| | | public void CalcParaV3(HdrBaseInfo hdr_info, GeomBaseInfo geom_info ) |
| | | { |
| | | this.BaseWidth = geom_info.B3; |
| | | this.BaseCircleRadius = geom_info.D3 / 2; |
| | | |
| | |
| | | this.Area[8] = area8; |
| | | int i = 0; |
| | | // |
| | | if (geom_info.IsQieYuJiYuan) |
| | | {//éèåäºåºå |
| | | for (i = StartSectionNumber; i < 8; i++) |
| | | Area[i] = Math.Round(area8 * (45 * i - geom_info.FAI0) / (360 - geom_info.FAI0), 1); |
| | | } |
| | | else |
| | | //if (geom_info.IsQieYuJiYuan) |
| | | //{//éèåäºåºå |
| | | // for (i = StartSectionNumber; i < 8; i++) |
| | | // Area[i] = Math.Round(area8 * (45 * i - geom_info.FAI0) / (360 - geom_info.FAI0), 1); |
| | | //} |
| | | //else |
| | | {//éç¨æ£å¸¸åé¢ |
| | | for (i = StartSectionNumber; i < 8; i++) |
| | | Area[i] = Math.Round(area8 * 45 * i / 360, 1); |
| | |
| | | this.GaMa_Right[1] = m_gama82 - 7; |
| | | |
| | | |
| | | if (geom_info.FAI0 > 45)//没æç¬¬ä¸ç«¯é¢ |
| | | { |
| | | this.GaMa_Left[1] = 0; |
| | | this.GaMa_Right[1] = 0; |
| | | } |
| | | //if (geom_info.FAI0 > 45)//没æç¬¬ä¸ç«¯é¢ |
| | | //{ |
| | | // this.GaMa_Left[1] = 0; |
| | | // this.GaMa_Right[1] = 0; |
| | | //} |
| | | |
| | | return null; |
| | | } |
| | |
| | | { |
| | | //èµå¼ï¼R1 R2 R3 R4 |
| | | if (this.ShapeType == eSectionShapeType.对称) //typeï¼0ï¼å¯¹ç§°æ¢¯å½¢ |
| | | this.R_Left[8] = Math.Round(geom_info.B3 * 0.55 + 0.5 - 4, 0); |
| | | this.R_Left[8] = Math.Round(geom_info.B3 * 0.55 + 0.5 - 5, 0); |
| | | else if (this.ShapeType == eSectionShapeType.ä¸å¯¹ç§°)//typeï¼1ï¼ä¸å¯¹ç§°æ¢¯å½¢ |
| | | this.R_Left[8] = Math.Round(geom_info.B3 * 0.55 + 0.5 - 4, 0); |
| | | this.R_Left[8] = Math.Round(geom_info.B3 * 0.55 + 0.5 - 5, 0); |
| | | else if (this.ShapeType == eSectionShapeType.ç©å½¢)//typeï¼2ï¼ç©å½¢ |
| | | this.R_Left[8] = Math.Round(geom_info.B3 * 0.4 + 0.5 - 2, 0); |
| | | this.R_Left[8] = Math.Round(geom_info.B3 * 0.4 + 0.5 - 3, 0); |
| | | |
| | | |
| | | if (base_info.IsSXB) |
| | |
| | | //} |
| | | |
| | | this.R_Right[8] = this.R_Left[8]; |
| | | this.R_out = 1000.0; |
| | | |
| | | |
| | | //æªé¢R1 å R4çåå°è§åº¦ DecreaseR |
| | | double DecreaseR = 0.5; |
| | |
| | | for (int index = 7; index >= 1; index--) |
| | | { |
| | | this.R_Left[index] = this.R_Left[index + 1] - DecreaseR; |
| | | if (this.R_Left[index] < 1) |
| | | this.R_Left[index] = 1; |
| | | this.R_Right[index] = this.R_Right[index + 1] - DecreaseR; |
| | | if (this.R_Right[index] < 1) |
| | | this.R_Right[index] = 1; |
| | | } |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | private void CheckChamferR() |
| | | { |
| | | for (int index = 7; index >= 1; index--) |
| | | for (int index = 8; index >= 1; index--) |
| | | { |
| | | if (this.R_Left[index] > (this.H[index] + 1)) |
| | | this.R_Left[index] = Math.Round(this.H[index] * 0.85 - 1, 0); |
| | | if (this.R_Right[index] > (this.H[index] + 1)) |
| | | this.R_Right[index] = Math.Round(this.H[index] * 0.85 - 1, 0); |
| | | |
| | | if (this.R_Left[index] < 2) |
| | | this.R_Left[index] = 2; |
| | | if (this.R_Right[index] < 2) |
| | | this.R_Right[index] = 2; |
| | | |
| | | for (int k = 0; k < 10; k++) |
| | | { |
| | | bool isChange = false; |
| | | if (this.R_Left[index] * (1+Math.Sin(this.GaMa_Left[index]*Math.PI/180)) > this.H[index] - 3) |
| | | { |
| | | isChange = true; |
| | | this.R_Left[index] = (this.H[index] - 3 )/(1 + Math.Sin(this.GaMa_Left[index] * Math.PI / 180)); |
| | | } |
| | | if (this.R_Right[index] * (1 + Math.Sin(this.GaMa_Right[index] * Math.PI / 180)) > this.H[index] - 3) |
| | | { |
| | | isChange = true; |
| | | this.R_Right[index] = (this.H[index] - 3) / (1 + Math.Sin(this.GaMa_Right[index] * Math.PI / 180)); |
| | | } |
| | | if (isChange) |
| | | continue; |
| | | else |
| | | break; |
| | | } |
| | | |
| | | |
| | | if (this.R_Left[index] < 1) |
| | | this.R_Left[index] = 1; |
| | | if (this.R_Right[index] < 1) |
| | | this.R_Right[index] = 1; |
| | | } |
| | | } |
| | | |