Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        /// <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;
            }
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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;
        }
Esempio n. 5
0
        /// <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;
            }
        }
Esempio n. 6
0
        /// <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();
        }