/// <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); }