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();
                }
            }
        }
Esempio n. 2
0
        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();
        }