public void Set_Refuerzo_Seccion(int[] Refuerzos_temp, double Recubrimiento) { double Long_arco = 0; double Theta = 0; double Radio_interno = 0; double Perimetro_interno = 0; double[] Coord = new double[2]; int id = 0; CRefuerzo refuerzoi = null; Refuerzos.Clear(); Radio_interno = ((2 * radio * 100) - 2 * Recubrimiento - 2) / 2; Perimetro_interno = 2 * Math.PI * Radio_interno; Long_arco = Perimetro_interno / Refuerzos_temp.Count(); foreach (int Diametroi in Refuerzos_temp) { Coord[0] = Radio_interno * Math.Cos((Math.PI / 2) - Theta); Coord[1] = Radio_interno * Math.Sin((Math.PI / 2) - Theta); refuerzoi = FunctionsProject.DeepClone(new CRefuerzo(id, "#" + Diametroi, Coord, TipodeRefuerzo.longitudinal)); refuerzoi.Alzado = 1; Refuerzos.Add(refuerzoi); id++; Theta += Long_arco / Radio_interno; } }
public void Refuerzo_Base(double recub) { int Num_Barras = 0; int Barra_aux = 0; int Diametro1 = 0; int Diametro2 = 0; double As_min; double As_i; double p_error; int Cont_Aux1 = 0; int Cont_Aux2 = 0; int X1 = 0; //Cantidad de barras para diametro1 int X2 = 0; //Cantida de barras para diametro2 Refuerzos.Clear(); Num_Barras = 4; As_min = 0.01 * Area; As_i = As_min / Num_Barras; while (As_i > FunctionsProject.Find_As(6)) { Num_Barras += 2; As_i = (As_min / Num_Barras); } //Asociar As_i a un diametro de barra Barra_aux = FunctionsProject.Find_Barra(As_i); //Encontrar Combinatoria optima para el acero base mas aproximado al 1% p_error = Math.Abs(((FunctionsProject.Find_As(Barra_aux) * Num_Barras) - As_min) / As_min) * 100; if (p_error >= 1.05) { if (FunctionsProject.Find_As(Barra_aux) * Num_Barras > As_min) { Diametro1 = Barra_aux; if (Diametro1 == 4) { Diametro2 = 0; } else { Diametro2 = Barra_aux - 1; } } else { Diametro1 = Barra_aux; Diametro2 = Barra_aux + 1; } if (Diametro2 > 0) { X2 = Convert.ToInt32((As_min - FunctionsProject.Find_As(Diametro1) * Num_Barras) / (FunctionsProject.Find_As(Diametro2) - FunctionsProject.Find_As(Diametro1))); } else { X2 = 0; } if (X2 % 2 != 0) { X2 = FunctionsProject.Redondear_Entero(X2, 4, true); } X1 = Num_Barras - X2; } else { Diametro1 = Barra_aux; Diametro2 = 0; X1 = Num_Barras; X2 = 0; } int[] Aux_Refuerzos = new int[Num_Barras]; int Aux_num_barras = Num_Barras; int i = 0; Cont_Aux1 = X1; Cont_Aux2 = X2; while (Aux_num_barras > 0) { if (X2 > 0) { if (Cont_Aux1 > 0) { if (Cont_Aux1 > 0) { Aux_Refuerzos[i] = Diametro1; Cont_Aux1 -= 1; Aux_num_barras -= 1; } if (Cont_Aux1 > 0) { Aux_Refuerzos[i + (Num_Barras / 2) - 1] = Diametro1; Cont_Aux1 -= 1; Aux_num_barras -= 1; } } else { if (Aux_Refuerzos[i] == 0) { Aux_Refuerzos[i] = Diametro2; Cont_Aux2 -= 1; Aux_num_barras -= 1; } } } else { Aux_Refuerzos[i] = Diametro1; Cont_Aux1 -= 1; Aux_num_barras -= 1; } i++; } Set_Refuerzo_Seccion(Aux_Refuerzos, recub); }