| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Diagnostics; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Text.Json.Nodes; |
| | | using System.Threading.Tasks; |
| | | using System.Windows.Forms; |
| | | |
| | | namespace DPumpHydr.WinFrmUI.Volute.ViewModel |
| | | { |
| | |
| | | /// </summary> |
| | | public class SectionShapePara |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public int Index { get; set; }//æé¢åºå· 第8æé¢å°±æ¯8 ç¬¬ä¸æé¢å°±æ¯1 |
| | | public double Gama_Left { get; set; }//è§åº¦1 |
| | | public double Gama_Right { get; set; }//è§åº¦2 |
| | |
| | | public double SectionArea { get; set; }//é¢ç§¯:ç±occè®¡ç® |
| | | public double BaseWidth { get; set; }//åºé¨å®½åº¦ å°±æ¯B3 |
| | | public double BaseCircleRadius { get; set; }//åºé¨ååå¾ å°±æ¯D3/2 |
| | | public eSectionShapeType ShapeType { get; set; } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®é¢ç§¯è®¡ç®é«åº¦ |
| | | /// </summary> |
| | | public double CalcHeightByArea(eSectionShapeType SectionType) |
| | | { |
| | | { |
| | | double a = (Math.Tan(Gama_Left * Math.PI / 180) + Math.Tan(Gama_Right * Math.PI / 180)) / 2; |
| | | double b = BaseWidth; |
| | | double c = (90 + Gama_Right) / 360 * Math.PI * R_Left * R_Left + (90 + Gama_Left) / 360 * Math.PI * R_Right * R_Right |
| | | - R_Left * R_Left * Math.Tan((45 + Gama_Right / 2) * Math.PI / 180) - R_Right * R_Right * Math.Tan((45 + Gama_Left / 2) * Math.PI / 180) - SectionArea; |
| | | double delta = b * b - 4 * a * c; |
| | | if (delta < 0) return -1; |
| | | if ( SectionType == eSectionShapeType.ç©å½¢ )//ç©å½¢ |
| | | if (delta < 0) return -1; |
| | | if (SectionType == eSectionShapeType.ç©å½¢)//ç©å½¢ |
| | | { |
| | | return -c / b; |
| | | return -c / b; |
| | | } |
| | | else |
| | | { |
| | | if (delta < 0) return -1; |
| | | return (-b + Math.Sqrt(delta)) / (2 * a); |
| | | if (delta < 0) return -1; |
| | | return (-b + Math.Sqrt(delta)) / (2 * a); |
| | | } |
| | | } |
| | | |
| | | private double DecreaseR = 0.5; |
| | | public bool CalculateR(eSectionShapeType SectionType, HdrBaseInfo BaseInfo, bool isFirst) |
| | | { |
| | | if (!isFirst) |
| | | { |
| | | R_Left = R_Left - DecreaseR; |
| | | R_Right = R_Right - DecreaseR; |
| | | |
| | | if (R_Left > (H - 1)) |
| | | R_Left = Math.Round(H * 0.85 - 1,0); |
| | | if (R_Right > (H - 1)) |
| | | R_Right = Math.Round(H * 0.85 - 1,0); |
| | | |
| | | if (R_Left < 2) |
| | | R_Left = 2; |
| | | if (R_Right < 2) |
| | | R_Right = 2; |
| | | } |
| | | else//æ¯ç¬¬ä¸æ¬¡è®¡ç® |
| | | { |
| | | //èµå¼ï¼R1 R2 R3 R4 |
| | | if (SectionType == eSectionShapeType.对称) //typeï¼0ï¼å¯¹ç§°æ¢¯å½¢ |
| | | R_Left = Math.Round(BaseWidth * 0.55 + 0.5 - 4,0); |
| | | else if (SectionType == eSectionShapeType.ä¸å¯¹ç§°)//typeï¼1ï¼ä¸å¯¹ç§°æ¢¯å½¢ |
| | | R_Left = Math.Round(BaseWidth * 0.55 + 0.5 - 4,0); |
| | | else if (SectionType == eSectionShapeType.ç©å½¢)//typeï¼2ï¼ç©å½¢ |
| | | R_Left = Math.Round(BaseWidth * 0.4 + 0.5 - 2,0); |
| | | |
| | | |
| | | if (BaseInfo.IsSXB) |
| | | R_Left = Math.Round(R_Left / 2,0); |
| | | //if (DesignMode == YSSnxOpen::DesignMode::AssPawuQnshQw1) |
| | | //{ |
| | | // R_Left = int(R_Left * 0.7); |
| | | //} |
| | | double m_R3 = 0; |
| | | double t = 0; |
| | | if (BaseWidth <= 35) |
| | | m_R3 = 5; |
| | | else if (BaseWidth <= 60 && BaseWidth > 35) |
| | | { |
| | | t = Math.Round(BaseWidth * 0.6, 0) - Math.Round(BaseWidth * 0.6 / 10.0, 0) * 10; |
| | | if (t <= 2) |
| | | m_R3 = Math.Round(BaseWidth * 0.6 / 10.0, 0) * 10; |
| | | else if (t > 2 && t <= 7) |
| | | m_R3 = Math.Round(BaseWidth * 0.6 / 10.0, 0) * 10 + 5; |
| | | else if (t > 7) |
| | | m_R3 = Math.Round(BaseWidth * 0.6 / 10.0, 0) * 10 + 10; |
| | | } |
| | | else if (BaseWidth > 60 && BaseWidth <= 90) |
| | | { |
| | | t = Math.Round(BaseWidth * 0.9, 0) - Math.Round(BaseWidth * 0.9 / 10.0, 0) * 10; |
| | | if (t <= 2) |
| | | m_R3 = Math.Round(BaseWidth * 0.9 / 10.0, 0) * 10; |
| | | else if (t > 2 && t <= 7) |
| | | m_R3 = Math.Round(BaseWidth * 0.9 / 10.0, 0) * 10 + 5; |
| | | else if (t > 7) |
| | | m_R3 = Math.Round(BaseWidth * 0.9 / 10.0, 0) * 10 + 10; |
| | | } |
| | | else if (BaseWidth > 90) |
| | | { |
| | | t = Math.Round(BaseWidth * 0.3, 0) - Math.Round(BaseWidth * 0.3 / 10.0, 0) * 10; |
| | | if (t <= 2) |
| | | m_R3 = Math.Round(BaseWidth * 0.3 / 10.0, 0) * 10; |
| | | else if (t > 2 && t <= 7) |
| | | m_R3 = Math.Round(BaseWidth * 0.3 / 10.0, 0) * 10 + 5; |
| | | else if (t > 7) |
| | | m_R3 = Math.Round(BaseWidth * 0.3 / 10.0, 0) * 10 + 10; |
| | | } |
| | | |
| | | R_Right = R_Left; |
| | | R_out = 1000.0; |
| | | |
| | | //æªé¢R1 å R4çåå°è§åº¦ DecreaseR |
| | | if (BaseWidth < 15) |
| | | { |
| | | DecreaseR = 0.5; |
| | | } |
| | | else if (BaseWidth >= 15 && BaseWidth < 25) |
| | | { |
| | | DecreaseR = 1; |
| | | } |
| | | else if (BaseWidth >= 25 && BaseWidth < 45) |
| | | { |
| | | DecreaseR = 1.5; |
| | | } |
| | | else if (BaseWidth >= 45) |
| | | { |
| | | DecreaseR = 2; |
| | | } |
| | | |
| | | if (BaseInfo.IsSXB) |
| | | DecreaseR = 1; |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | /// <summary> |
| | | /// éªè¯æ¯å¦åç |
| | | /// </summary> |
| | | /// <param name="sectionShapePara"></param> |
| | | /// <param name="index"></param>ã |
| | | //public bool Verify(out string error) |
| | | //{ |
| | | // error = ""; |
| | | // bool isverify = true; |
| | | // if ((this.H - this.R_Left) * Math.Tan(this.Gama_Left)+(this.H - this.R_Right) * Math.Tan(this.R_Right)+this.BaseWidth >= this.R_Right + this.R_Left) |
| | | // { |
| | | // error = "è¾å
¥çç´å¾éæ³ï¼"; |
| | | // isverify = false; |
| | | // } |
| | | // if(this.Gama_Left > 45 || this.Gama_Right > 45) |
| | | // { |
| | | // error = "è¾å
¥çè§åº¦éæ³ï¼"; |
| | | // isverify = false; |
| | | // } |
| | | // return isverify; |
| | | //} |
| | | |
| | | } |
| | | } |