Ejemplo n.º 1
0
        /// <summary>
        /// Esse cálculo serve para indicar o melhor local para colocação de pilares de sustentação. Dada
        /// a distância total de uma reta, o sistema deverá calcular a cada quantos metros deverá ter um pilar,
        /// com base na configuração de distância máxima de vãos, de forma que os pilares fiquem equidistantes
        /// na reta.
        /// Exemplo: Imagine que o arquiteto irá desenvolver o projeto de um barracão que tenha a
        /// distância total de 11 metros, se a distância máxima para pilares seja de 3 metros, para que os pilares
        /// fiquem equidistantes o projetista deverá colocar um pilar a cada 2,75 metros.
        /// </summary>
        private void InserirPilares(RetaPilares barracao)
        {
            int qtdVaos = (int)Math.Ceiling(barracao.TamanhoMetros / _configuracao.DistanciaMaximaEntrePilaresMetros);

            int qtdPilares = qtdVaos + 1;

            double tamanhoVao = barracao.TamanhoMetros / qtdVaos;

            barracao.TamanhoVaoMetros = tamanhoVao;

            for (int i = 0; i < qtdPilares; i++)
            {
                Pilar pilar = new Pilar(i + 1, i * tamanhoVao);
                barracao.Pilares.Add(pilar);
            }
        }
        public static List <Pilar> SetPilarReinforced(double distMax, List <Pilar> pilars)
        {
            List <Pilar> auxpilar = new List <Pilar>(pilars);

            foreach (Pilar item in pilars)
            {
                if (!item.Reinforced && item.Distance % distMax == 0)
                {
                    Pilar aux = new Pilar
                    {
                        Distance   = item.Distance,
                        Position   = item.Position,
                        Reinforced = true
                    };
                    auxpilar.RemoveAt(item.Position - 1);
                    auxpilar.Insert(item.Position - 1, aux);
                }
            }
            return(auxpilar);
        }
        public static List <Pilar> GetPilars(int number, double distane)
        {
            List <Pilar> pilars = new List <Pilar>();

            pilars.Add(new Pilar {
                Position = 1, Reinforced = true
            });
            for (int i = 0; i < number - 1; i++)
            {
                pilars.Add(new Pilar {
                    Distance = distane * (i + 1), Position = i + 2
                });
            }
            Pilar last = pilars.LastOrDefault();

            pilars.Add(new Pilar {
                Position = last.Position + 1, Distance = last.Distance + distane, Reinforced = true
            });

            return(pilars);
        }