/// <summary> /// 查附录表C-5中的三个系数 /// </summary> /// <param name="Cat">截面类别</param> /// <param name="lemda_n">正则长细比</param> /// <param name="alph1">参数</param> /// <param name="alph2">参数</param> /// <param name="alph3">参数</param> public static void TableC_5(SecCategory Cat, double lemda_n, out double alph1, out double alph2, out double alph3) { switch (Cat) { case SecCategory.a: alph1 = 0.41; alph2 = 0.986; alph3 = 0.152; break; case SecCategory.b: alph1 = 0.65; alph2 = 0.965; alph3 = 0.3; break; case SecCategory.c: if (lemda_n <= 1.05) { alph1 = 0.73; alph2 = 0.906; alph3 = 0.595; break; } else { alph1 = 0.73; alph2 = 1.216; alph3 = 0.302; break; } case SecCategory.d: if (lemda_n <= 1.05) { alph1 = 1.35; alph2 = 0.868; alph3 = 0.915; break; } else { alph1 = 1.35; alph2 = 1.375; alph3 = 0.432; break; } default: alph1 = 0.65; alph2 = 0.965; alph3 = 0.3; break; } }
/// <summary> /// 查询现在设计数据库,并在控件上显示 /// </summary> private void freshParaControl(int num) { MainForm mmf = this.Owner as MainForm; BCheckModel cm = mmf.ModelForm.CheckModel; if (cm.SecDP.ContainsKey(num)) { double r1 = cm.SecDP[num].RatioNet; _CurSecPara.RatioNet = r1; tb_ratioNet.Text = r1.ToString(); bool r2 = cm.SecDP[num].IsClosed; _CurSecPara.IsClosed = r2; cb_Closed.Checked = r2; SecCategory r3 = cm.SecDP[num].SecCat_y; _CurSecPara.SecCat_y = r3; cb_SecCat_y.SelectedIndex = (int)r3; SecCategory r33 = cm.SecDP[num].SecCat_z; _CurSecPara.SecCat_z = r33; cb_SecCat_z.SelectedIndex = (int)r33; double r4 = cm.SecDP[num].Gama_x; double r5 = cm.SecDP[num].Gama_y; _CurSecPara.Gama_x = r4; _CurSecPara.Gama_y = r5; tb_Gamax.Text = r4.ToString(); tb_Gamay.Text = r5.ToString(); gb_Para.BackColor = Color.PowderBlue; } else { gb_Para.BackColor = Color.FromKnownColor(KnownColor.Control); cb_SecCat_y.SelectedIndex = 1; cb_SecCat_z.SelectedIndex = 2; } }
/// <summary> /// 按单元更新截面设计参数 /// </summary> /// <param name="iEle">单元号</param> public void UpdataDesignPara(int iEle) { Bmodel MM = CurModel; CheckRes CR = CheckTable; int num = iEle;//单元号 double len_y = Convert.ToDouble(tb_leng1.Text); double len_z = Convert.ToDouble(tb_leng2.Text); double Net_r = Convert.ToDouble(tb_Net_r.Text); double Gamma_y = Convert.ToDouble(tb_gamma1.Text); double Gamma_z = Convert.ToDouble(tb_gamma2.Text); double Betla_my = Convert.ToDouble(tb_betla1.Text); double Betal_mz = Convert.ToDouble(tb_betla2.Text); double Betal_ty = Convert.ToDouble(tb_betla3.Text); double Betal_tz = Convert.ToDouble(tb_betla4.Text); double Phi_by = Convert.ToDouble(tb_phibx.Text); double Phi_bz = Convert.ToDouble(tb_phiby.Text); double F = Convert.ToDouble(tb_f.Text); //强度设计值 double Gamma_re = Convert.ToDouble(tb_GammaRe.Text); //承载力调整系数 double Xita = Convert.ToDouble(tb_Xita.Text); //截面影响系数 SecCategory cat = SecCategory.b; switch (comboBox1.SelectedIndex) { case 0: cat = SecCategory.a; break; case 1: cat = SecCategory.b; break; case 2: cat = SecCategory.c; break; case 3: cat = SecCategory.d; break; default: break; } //更新其它参数 FrameElement fele = CurModel.elements[num] as FrameElement; fele.DPs.SecCat_y = cat;//截面类别 fele.DPs.SecCat_z = cat; fele.DPs.Ratio_Anet = Net_r; fele.DPs.Gamma_y = Gamma_y; fele.DPs.Gamma_z = Gamma_z; fele.DPs.Belta_my = Betla_my; fele.DPs.Belta_mz = Betal_mz; fele.DPs.Belta_ty = Betal_ty; fele.DPs.Belta_tz = Betal_tz; fele.DPs.fy = F;//强度设计值 fele.DPs.Gamma_re_1 = Gamma_re; fele.DPs.Gamma_re_2 = Gamma_re; fele.DPs.Yita = Xita;//截面影响系数 //更新长细比 CodeCheck.CalDesignPara_lemda(ref MM, num, len_y, len_z); //更新受压稳定系数 CodeCheck.CalDesignPara_phi(ref MM, num, 1); CodeCheck.CalDesignPara_phi(ref MM, num, 2); }
/// <summary> /// 构造函数 /// </summary> public DesignParameters() { _Ratio_Anet = 0.85; _Gamma_y = 1.0; _Gamma_z = 1.0; _Belta_my = 1.0; _Belta_mz = 1.0; _Belta_ty = 1.0; _Belta_tz = 1.0; _Phi_by = 1; _Phi_bz = 1; _Phi_y = 1; _Phi_z = 1; _lemda_y = 50; _lemda_z = 50; _lemda_yz = 50; _lk_y = 1; _lk_z = 1; _fy = 310e6; _Yita = 1.0; _Gamma_re = 0.75; _SecCat = SecCategory.b; }
/// <summary> /// 计算受压构件的稳定系数phi /// GB50017 附表C公式 /// </summary> /// <param name="mm">模型对像</param> /// <param name="iElem">单元号</param> /// <param name="iYZ">指示计算当前截面哪个方向的稳定系数 1:phi_y;2:phi_z</param> /// <param name="Cat">截面类别</param> public static void CalDesignPara_phi(ref Bmodel mm, int iElem, int iYZ, SecCategory Cat) { FrameElement ele = mm.elements[iElem] as FrameElement; int iSec = ele.iPRO; //截面号 double E = mm.mats[ele.iMAT].Elast; //弹性模量 double Fy = mm.mats[ele.iMAT].Fy; //屈服强度 double lemda = 0; double a1 = 0; double a2 = 0; double a3 = 0; double phi = 1;//稳定系数 if (iYZ == 1) { //如果截面左右不对称 if (Math.Abs(mm.sections[iSec].CyM - mm.sections[iSec].CyP) > 0.002) { lemda = ele.DPs.Lemda_yz; } else { lemda = ele.DPs.Lemda_y; } } else if (iYZ == 2) { //如果截面上下不对称 if (Math.Abs(mm.sections[iSec].CzM - mm.sections[iSec].CzP) > 0.002) { lemda = ele.DPs.Lemda_yz; } else { lemda = ele.DPs.Lemda_z; } } double lemda_n = lemda * Math.Sqrt(Fy / E) / Math.PI; //正则长细比 TableC_5(Cat, lemda_n, out a1, out a2, out a3); //查表C-5 if (lemda_n <= 0.215) { phi = 1 - a1 * Math.Pow(lemda_n, 2); } else { double temp1 = a2 + a3 * lemda_n + Math.Pow(lemda_n, 2); double temp2 = Math.Pow(lemda_n, 2); phi = (temp1 - Math.Sqrt(Math.Pow(temp1, 2) - 4 * temp2)) / (2 * temp2); } //存储 if (iYZ == 1) { ele.DPs.Phi_y = phi; } else if (iYZ == 2) { ele.DPs.Phi_z = phi; } }
/// <summary> /// 读入截面验算的设置参数 /// </summary> /// <param name="mm"></param> /// <param name="cr"></param> /// <param name="FileIn"></param> public static void ReadCheckPara(ref Bmodel mm, ref CheckRes cr, string FileIn) { string line = null; //行文本 string[] curdata = null; //当前行数据变量 int curNum = 0; //当前截面号 FileStream stream = File.Open(FileIn, FileMode.Open, FileAccess.Read); StreamReader reader = new StreamReader(stream); line = reader.ReadLine(); for (line = reader.ReadLine(); line != null; line = reader.ReadLine()) { curdata = line.Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); //字符串分割 curNum = Convert.ToInt32(curdata[0]); //当前截面号 List <int> eles = mm.getElemBySec(curNum); //当前截面的单元集 foreach (int ele in eles) { if (!(mm.elements[ele] is FrameElement)) { continue; } FrameElement fe = mm.elements[ele] as FrameElement; double len_y = Convert.ToDouble(curdata[2]); double len_z = Convert.ToDouble(curdata[3]); double Net_r = Convert.ToDouble(curdata[5]); double Gamma_y = Convert.ToDouble(curdata[6]); double Gamma_z = Convert.ToDouble(curdata[7]); double Betla_my = Convert.ToDouble(curdata[8]); double Betal_mz = Convert.ToDouble(curdata[9]); double Betal_ty = Convert.ToDouble(curdata[10]); double Betal_tz = Convert.ToDouble(curdata[11]); double Phi_by = Convert.ToDouble(curdata[12]); double Phi_bz = Convert.ToDouble(curdata[13]); double F = Convert.ToDouble(curdata[4]); //强度设计值 double Gamma_re = Convert.ToDouble(curdata[17]); //承载力调整系数 SecCategory cat = SecCategory.b; switch (curdata[16]) { case "a": cat = SecCategory.a; break; case "b": cat = SecCategory.b; break; case "c": cat = SecCategory.c; break; case "d": cat = SecCategory.d; break; default: cat = SecCategory.b; break; } double Yita = Convert.ToDouble(curdata[18]);//截面影响系数 //更新长细比 CodeCheck.CalDesignPara_lemda(ref mm, ele, len_y, len_z); //更新受压稳定系数 CodeCheck.CalDesignPara_phi(ref mm, ele, 1, cat); CodeCheck.CalDesignPara_phi(ref mm, ele, 2, cat); fe.DPs.SecCat = cat; fe.DPs.Ratio_Anet = Net_r; fe.DPs.Gamma_y = Gamma_y; fe.DPs.Gamma_z = Gamma_z; fe.DPs.Belta_my = Betla_my; fe.DPs.Belta_mz = Betal_mz; fe.DPs.Belta_ty = Betal_ty; fe.DPs.Belta_tz = Betal_tz; fe.DPs.fy = F;//强度设计值 fe.DPs.Gamma_re = Gamma_re; fe.DPs.Yita = Yita; } } reader.Close(); }