예제 #1
0
 public Recorte(double tamanhoX, double tamanhoY, PosicaoItem posicaoItem, TipoRecorte tipoRecorte, Posicao posicao)
 {
     TamanhoX    = tamanhoX;
     TamanhoY    = tamanhoY;
     PosicaoItem = posicaoItem;
     TipoRecorte = tipoRecorte;
     Posicao     = posicao;
 }
예제 #2
0
        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);
        }