Exemple #1
0
        private void OrganizarFiguras(List <DXFItem> figuras)
        {
            Bitmap bitmapOcupacao = PlacaGravacao.GetBitmap();

            foreach (var figura in figuras)
            {
                int x = 0, y = 0;
                if (EncontrarPosicaoFiguraNoPlano(figura, out x, out y, bitmapOcupacao))
                {
                    log.Enqueue("Alocado a figura " + figura.nome + " na posicao X: " + x.ToString() + " e Y: " + y.ToString());
                    //Adiciona o item na lista de itens organizado
                    ItemOrganizado item = new ItemOrganizado(figura);
                    item.X = x + espacamentoX;
                    item.Y = y + espacamentoY;
                    item.FiguraPosicionada = true;
                    itemOrganizados.Add(item);

                    //Ocupa a area do bitmap
                    PreencherAreaPosicionamento(item, ref bitmapOcupacao);
                }
                else
                {
                    log.Enqueue("Nao foi possivel encontrar espaco para alocar a figura " + figura.nome);
                }
            }
        }
Exemple #2
0
 private void ReposicionarFiguraGeometrica(List <ItemOrganizado> itemOrganizados)
 {
     figurasPosicionadas          = new DXFItem();
     figurasPosicionadas.entities = new netDxf.Collections.EntityCollection();
     figurasPosicionadas.entities.AddRange(PlacaGravacao.entities);
     foreach (var item in itemOrganizados)
     {
         ItemOrganizado itemPosicionar  = item;
         DXFItem        itemPosicionado = AtualizarPosicaoEntidades(itemPosicionar);
         figurasPosicionadas.entities.AddRange(itemPosicionado.entities);
         sucessoOrganizador = true;
     }
     figurasPosicionadas.AtualizarInformacoes();
 }
Exemple #3
0
        private void PreencherAreaPosicionamento(ItemOrganizado item, ref Bitmap bitmapOcupacao)
        {
            int largura = (int)item.Figura.Largura;
            int altura  = (int)item.Figura.Altura;


            for (int x = item.X; x < item.X + largura; x++)
            {
                for (int y = item.Y; y < item.Y + altura; y++)
                {
                    bitmapOcupacao.SetPixel(x, (int)PlacaGravacao.Altura - y - 1, Color.Red);
                }
            }
        }
Exemple #4
0
        private DXFItem AtualizarPosicaoEntidades(ItemOrganizado item)
        {
            DXFItem figura = item.Figura;

            //Circulos
            List <Circle> circles = figura.entities.OfType <Circle>().ToList();

            foreach (var circle in circles)
            {
                figura.entities.Remove(circle);
                Circle circleAtualizado = new Circle(
                    new Vector2(circle.Center.X + item.X - figura.Origem[0], circle.Center.Y + item.Y - figura.Origem[1]), //Centro
                    circle.Radius);                                                                                        //Raio
                figura.entities.Add(circleAtualizado);
            }

            //Linhas
            List <Line> lines = figura.entities.OfType <Line>().ToList();

            foreach (var line in lines)
            {
                figura.entities.Remove(line);
                Line linha = new Line(
                    new Vector2(line.StartPoint.X + item.X - figura.Origem[0], line.StartPoint.Y + item.Y - figura.Origem[1]), //Start
                    new Vector2(line.EndPoint.X + item.X - figura.Origem[0], line.EndPoint.Y + item.Y - figura.Origem[1])      //End
                    );
                figura.entities.Add(linha);
            }

            //Elipses
            List <Ellipse> ellipses = figura.entities.OfType <Ellipse>().ToList();

            foreach (var ellipse in ellipses)
            {
                figura.entities.Remove(ellipse);
                Ellipse ellipseAtualizado = new Ellipse(
                    new Vector2(ellipse.Center.X + item.X, ellipse.Center.Y + item.Y),
                    ellipse.MajorAxis,
                    ellipse.MinorAxis
                    );
                figura.entities.Add(ellipseAtualizado);
            }

            //LwPolilinhas
            List <LwPolyline> lwPolylines = figura.entities.OfType <LwPolyline>().ToList();

            foreach (var lwPolyline in lwPolylines)
            {
                figura.entities.Remove(lwPolyline);
                LwPolyline polyline = new LwPolyline();
                foreach (var vertex in lwPolyline.Vertexes)
                {
                    polyline.Vertexes.Add(new LwPolylineVertex(new Vector2(vertex.Position.X + item.X, vertex.Position.Y + item.Y), vertex.Bulge));
                }

                figura.entities.Add(polyline);
            }

            //Arcos(entities.OfType<Arc>());
            List <Arc> arcs = figura.entities.OfType <Arc>().ToList();

            foreach (var arc in arcs)
            {
                figura.entities.Remove(arc);
                Arc arco = new Arc(new Vector2(arc.Center.X + item.X, arc.Center.X + item.X), arc.Radius, arc.StartAngle, arc.EndAngle);
                figura.entities.Add(arco);
            }

            return(figura);
        }