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 { /// /// 单个端面参数 /// public class SectionShapePara { public int Index { get; set; }//断面序号 第8断面就是8 第一断面就是1 public double Gama_Left { get; set; }//角度1 public double Gama_Right { get; set; }//角度2 public double H { get; set; }//高度 public double R_out { get; set; }//外围的半径 UG中R4 public double R_Left { get; set; }//角度1边对应的圆角半径 UG中R1 public double R_Right { get; set; }//角度2边对应的圆角半径 UG中R2 public double SectionArea { get; set; }//面积:由occ计算 public double BaseWidth { get; set; }//底部宽度 就是B3 public double BaseCircleRadius { get; set; }//底部圆半径 就是D3/2 public eSectionShapeType ShapeType { get; set; } public string DeriveArgument(ViewModel.SectionBundleInfo sectionBaseInfo) { var jsonArray = new StringBuilder("[\n"); //for (int i = 1; i < sectionBaseInfo.GaMa1.Count - 1; i++) //{ // Initialparameters(i, sectionBaseInfo); // jsonArray.Append(" {\n"); // jsonArray.AppendFormat(" \"Index\":{0},\n", this.Index); // jsonArray.AppendFormat(" \"Gama_Left\":{0:F2},\n", this.Gama_Left); // jsonArray.AppendFormat(" \"Gama_Right\":{0:F2},\n", this.Gama_Right); // jsonArray.AppendFormat(" \"H\":{0:F2},\n", this.H); // jsonArray.AppendFormat(" \"R_out\":{0:F2},\n", this.R_out); // jsonArray.AppendFormat(" \"R_Left\":{0:F2},\n", this.R_Left); // jsonArray.AppendFormat(" \"R_Right\":{0:F2},\n", this.R_Right); // jsonArray.AppendFormat(" \"SectionArea\":{0:F2},\n", this.SectionArea); // jsonArray.AppendFormat(" \"BaseWidth\":{0:F2},\n", this.BaseWidth); // jsonArray.AppendFormat(" \"BaseCircleRadius\":{0:F2}\n", this.BaseCircleRadius); // jsonArray.Append(" },\n"); // 结束对象 //} //jsonArray.Length -= 2; //jsonArray.Append("\n"); //jsonArray.Append("]"); // 结束数组 return jsonArray.ToString(); } //public static void WriteToFile(string json, string filePath) //{ // File.WriteAllText(filePath, json); //} /// /// 根据面积计算高度 /// 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.矩形)//矩形 { return -c / b; } else { if (delta < 0) return -1; return (-b + Math.Sqrt(delta)) / (2 * a); } } /// /// 验证是否合理 /// /// /// 、 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; } //private double DecreaseR = 0.5; //public bool CalculateR(HdrBaseInfo BaseInfo, SectionBaseInfo sectionBaseInfo, GeomBaseInfo geomBaseInfo, 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 (sectionBaseInfo.ShapeType == eSectionShapeType.对称) //type=0:对称梯形 // R_Left = Math.Round(BaseWidth * 0.55 + 0.5 - 4,0); // else if (sectionBaseInfo.ShapeType == eSectionShapeType.不对称)//type=1:不对称梯形 // R_Left = Math.Round(BaseWidth * 0.55 + 0.5 - 4,0); // else if (sectionBaseInfo.ShapeType == 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; //} } }