public Recorte(double tamanhoX, double tamanhoY, PosicaoItem posicaoItem, TipoRecorte tipoRecorte, Posicao posicao) { TamanhoX = tamanhoX; TamanhoY = tamanhoY; PosicaoItem = posicaoItem; TipoRecorte = tipoRecorte; Posicao = posicao; }
public List <Recorte> ObterRecortesPorLado(double lado, double altura, double sobra, double comprimento, PosicaoItem posicaoItem, Posicao posicao) { var retorno = new List <Recorte>(); if (sobra == 0) { return(retorno); } var qtdLado = (int)comprimento / (int)lado; double restoLado = comprimento - (qtdLado * lado); var qtdAltura = (int)sobra / (int)altura; double restoAltura = sobra - (qtdAltura * altura); var valorAltura = qtdAltura > 0 ? altura : restoAltura; var valorLado = qtdLado > 0 ? lado : restoLado; if (qtdAltura == 0 && restoAltura > 0 && qtdLado == 0 && restoLado > 0) { var recorte = new Recorte(restoAltura, restoLado, posicaoItem, TipoRecorte.CortePrincipal, posicao); retorno.Add(recorte); return(retorno); } else if (qtdAltura > 0 && qtdLado > 0) { for (int i = 0; i < qtdLado; i++) { for (int j = 0; j < qtdAltura; j++) { var recorte = new Recorte(valorAltura, valorLado, posicaoItem, TipoRecorte.CortePrincipal, posicao); retorno.Add(recorte); } } if (restoAltura > 0) { for (int j = 0; j < qtdAltura; j++) { var recorteComplementar = new Recorte(restoAltura, valorLado, posicaoItem, TipoRecorte.CorteComplementar, posicao); retorno.Add(recorteComplementar); } } if (restoLado > 0) { for (int j = 0; j < qtdLado; j++) { var recorteComplementar = new Recorte(valorAltura, restoLado, posicaoItem, TipoRecorte.CorteComplementar, posicao); retorno.Add(recorteComplementar); } } } else if (qtdAltura > 0 && qtdLado == 0) { for (int j = 0; j < qtdAltura; j++) { var recorte = new Recorte(valorAltura, valorLado, posicaoItem, TipoRecorte.CortePrincipal, posicao); retorno.Add(recorte); if (restoAltura > 0) { var recorteComplementar = new Recorte(restoAltura, valorLado, posicaoItem, TipoRecorte.CorteComplementar, posicao); retorno.Add(recorteComplementar); } } } else if (qtdAltura == 0 && qtdLado > 0) { for (int i = 0; i < qtdLado; i++) { var recorte = new Recorte(valorAltura, valorLado, posicaoItem, TipoRecorte.CortePrincipal, posicao); retorno.Add(recorte); if (restoLado > 0) { var recorteComplementar = new Recorte(valorAltura, restoLado, posicaoItem, TipoRecorte.CorteComplementar, posicao); retorno.Add(recorteComplementar); } } } return(retorno); }