private void ConfirmarCambios() { F_Base.EnviarEstadoVacio(); foreach (cPiso Piso in F_Base.Proyecto.Edificio.Lista_Pisos) { List <cNervio> NerviosOrdenados = Piso.Nervios.OrderBy(y => !y.SimilitudNervioCompleto.IsMaestro).ToList(); foreach (cNervio Nervio in NerviosOrdenados) { List <IElemento> Subtramos = Nervio.Lista_Elementos.FindAll(x => x is cSubTramo).ToList(); for (int i = 0; i < DGV_1.Rows.Count; i++) { Subtramos.ForEach(subtramo => { cSubTramo SubTramoAux = (cSubTramo)subtramo; SubTramoAux.Estaciones.ForEach(x => { cSolicitacion solicitacionFind = x.Lista_Solicitaciones.Find(y => y.Nombre == (string)DGV_1.Rows[i].Cells[C_NombreCombinacion.Index].Value); if (solicitacionFind != null) { solicitacionFind.SelectEnvolvente = (bool)DGV_1.Rows[i].Cells[C_CheckCombinacion.Index].Value; } }); }); } Nervio.CrearEnvolvente(); Nervio.CrearAceroAsignadoRefuerzoLongitudinal(); Nervio.CrearAceroAsignadoRefuerzoTransversal(); } } }
private void CrearEnvolventeConSimilitud() { cNervio NervioOrigen = CalculosOrigen.SubtramoOrigen.TramoOrigen.NervioOrigen; cEstacion EstacionOrigen = CalculosOrigen.EstacionOrigen; List <cSolicitacion> Lista_Solici2 = new List <cSolicitacion>(); Lista_Solici2.AddRange(lista_solicitaciones); if (NervioOrigen.SimilitudNervioCompleto.IsMaestro) { foreach (cNervio N in NervioOrigen.SimilitudNervioCompleto.NerviosSimilares) { cSubTramo SubTramo = (cSubTramo)N.Lista_Elementos.Find(y => y.Indice == CalculosOrigen.SubtramoOrigen.Indice); cEstacion EstacionFind = EstacionOrigen.EstacionMasCercana(SubTramo.Estaciones); Lista_Solici2.AddRange(EstacionFind.Lista_Solicitaciones); } } else if (NervioOrigen.SimilitudNervioCompleto.BoolSoySimiarA) { cNervio NervioQueEs = NervioOrigen.SimilitudNervioCompleto.SoySimiarA.FindNervio(); cSubTramo SubTramo = (cSubTramo)NervioQueEs.Lista_Elementos.Find(y => y.Indice == CalculosOrigen.SubtramoOrigen.Indice); cEstacion EstacionFind = EstacionOrigen.EstacionMasCercana(SubTramo.Estaciones); cSolicitacion cSolicitacion1 = new cSolicitacion("ENV", 0, -EstacionFind.Calculos.Envolvente.V2[0], 0, 0, EstacionFind.Calculos.Envolvente.M3[0], 0); cSolicitacion cSolicitacion2 = new cSolicitacion("ENV2", 0, -EstacionFind.Calculos.Envolvente.V2[1], 0, 0, EstacionFind.Calculos.Envolvente.M3[1], 0); Lista_Solici2.Add(cSolicitacion1); Lista_Solici2.Add(cSolicitacion2); } float M3MaxPositivo = Lista_Solici2.FindAll(x => x.SelectEnvolvente).Max(x => x.M3); float M3MaxNegativo = Lista_Solici2.FindAll(x => x.SelectEnvolvente).Min(x => x.M3); float V2MaxPositivo = Lista_Solici2.FindAll(x => x.SelectEnvolvente).Max(x => x.V2); float V2MaxNegativo = Lista_Solici2.FindAll(x => x.SelectEnvolvente).Min(x => x.V2); if (M3MaxPositivo < 0) { M3MaxPositivo = 0; } if (M3MaxNegativo > 0) { M3MaxNegativo = 0; } if (V2MaxPositivo < 0) { V2MaxPositivo = 0; } if (V2MaxNegativo > 0) { V2MaxNegativo = 0; } M3 = new float[] { M3MaxPositivo, M3MaxNegativo }; V2 = new float[] { -V2MaxPositivo, -V2MaxNegativo }; Envolvente_CambioCrearEnvolvente(); }