Como Exportar SVG do Inkscape para CNC Laser

Exportando Desenhos 2D
do Inkscape para o CNC Laser

Este artigo apresenta o processo de conversão de desenhos vetoriais do Inkscape, em formato SVG, para GRBL, aplicado à gravação a laser por CNC, usando o plugin Ferramentas Gcode.

Atenção:

Este conteúdo não tem caráter de tutorial definitivo e pode conter imprecisões. Trata-se apenas de um registro pessoal do processo que utilizei para converter arquivos SVG em GRBL e operá-los em meu CNC, conforme a configuração do meu equipamento que usa uma controladora Arduino. As anotações aqui apresentadas não devem ser usadas como manual técnico. E mais, o uso de equipamentos a laser exige conhecimento específico e o rigoroso cumprimento das normas de segurança.

CNC disponível:

Para quem tem acompanhado a evolução do CNC ao longo do tempo, sabe que o CNC utilizado vem passando por upgrades desde a sua montagem inicial. Esse CNC utiliza uma placa controladora baseada no Arduino, com este firmware open source .

Após a etapa de construção, descrita neste <link> e neste <link>, foram realizadas várias modificações com o objetivo de ampliar sua capacidade e desempenho.

Entre essas alterações, destaca-se o upgrade do eixo Z do modelo CNC 3018, bem como a substituição do spindle original de 12 V por um motor de 500 W com refrigeração a ar, conforme ilustrado na imagem a seguir.:

A parte eletrônica também passou por uma reformulação completa, com a adoção de uma fonte de alimentação de maior capacidade para suportar o motor do spindle, além de outras melhorias.

Entre elas estão a instalação de sensores ópticos em todos os eixos, a atualização do firmware, a implementação de um seletor CNC– laser (a placa vermelha) e, atualmente, a integração do próprio módulo laser.

Essas alterações completam a proposta de uma CNC híbrida, capaz tanto de usinar peças quanto de operar como uma máquina a laser.

Inkscape:

Uma vez apresentada a máquina CNC Laser disponível, vamos focar nas configurações do Inkscape.

Configurando a área de trabalho no Inkscape:

Para garantir que os desenhos criados no Inkscape respeitem os limites operacionais do CNC a laser, recomenda-se a configuração no Inkscape de um modelo de página com as dimensões exatas da área útil do equipamento, que, neste caso, correspondem a 228 mm no eixo X e 125 mm no eixo Y.

Ao adotar uma página com as mesmas dimensões da área de trabalho do CNC a laser, torna-se mais simples desenvolver desenhos compatíveis com a capacidade do equipamento, além de facilitar os ajustes necessários durante a geração do arquivo GRBL utilizado na produção das peças.

Criando um modelo de página no Inkscape
228 × 125 mm – Landscape:

  1. Abra o Inkscape e crie um novo documento.
  2. No menu superior, acesse:
    Arquivo → Propriedades do Documento (atalho: Shift + Ctrl + D)
  3. Na aba Exibição, ajuste:
    • Unidade: mm
    • Largura (Width): 228
    • Altura (Height): 125
  4. Certifique-se de que a página está em modo paisagem (landscape).
    Como a largura é maior que a altura (228 > 125), o modo landscape já estará correto automaticamente.
  5. Ainda em Propriedades do Documento:
    • Defina Escala = 1.0000
    • Verifique se os checkbox “Borda” e “Sempre por cima” estejam selecionados.
  6. Feche a janela de propriedades.
    A área branca da página agora representa exatamente a área útil do CNC a laser.
  7. Clique em Arquivo → Salvar Modelo…
    • Vai abrir a janela “Salvar Documento como Modelo”
    • De um nome sugestivo ao modelo como “CNC_228_125mm”
    • Clique em salvar e o modelo estará criado.

Usando o modelo criado

  1. Clique em Arquivo → Novo de Modelo…
    • Vai abrir a janela “Novo de Modelo”
    • Selecione a aba “Personalizado”
    • Escolha o modelo de documento “CNC_228_125mm” criado acima.
    • Crie a arte dentro da área demarcada, de acordo com o tamanho da mesa do CNC.
    • Assegure que todas dimensões estão em milímetros.
    • Para ajudar a criação do desenho, clique em Visualizar e marque a opção Grade da Página.

A figura SVG para testes:

Vou considerar a seguinte figura SVG, gerada no Inkscape:

Clique na imagem para visualizar e ou baixar o arquivo SVG limpo.

Preparando o SVG para conversão:

Conforme ilustrado a seguir, com a figura aberta no Inkscape,

  • Selecione todos elementos da figura.
  • Clicando em Caminho → Converter em Caminho, converta em caminho todos os elementos da figura.

Definindo a ferramenta:

O próximo passo é definir uma ferramenta para o software.

  • Proceda clicando em Extensões → Ferramentas Gcode → Biblioteca de Ferramentas…
  • Vai abrir a janela Biblioteca de Ferramentas.
  • Na janela Biblioteca de Ferramentas → Tipos de Ferramentas, selecione o checkbox da ferramenta cilindro, conforme indicado acima.
  • Clique em Aplicar e Fechar.
  • Será adicionado no desenho, um quadro com os parâmetros para configuração da ferramenta cilindro.
  • Redimensione esse quadro conforme a necessidade.
  • Utilizando a ferramenta Texto do Inkscape, modifique o parâmetro “diameter” para que seja 0.1(mm) e depth step dever ser 1, conforme indicado na figura abaixo:

Definindo o Ponto de Orientação:

Nesta etapa é definido o ponto de orientação da imagem, que serve como referência para que o plugin converta corretamente o tamanho do desenho do Inkscape para o tamanho real no CNC.

O ponto de orientação é representado por duas setas (A e B) e suas respectivas coordenadas

  • Deve-se clicar em Extensões → Ferramentas Gcode → Pontos de orientação, conforme abaixo
  • Vai abrir a janela Pontos de Orientação. Como trata-se de uma figura de duas dimensões, selecione o tipo de orientação “Modo de 2 pontos (mover e rotacionar, relação de aspecto mantida X/Y)
  • Clique em Aplicar e Fechar.
  • Em seguida a tela do desenho irá mostar onde será a coordenada X=0, Y=0 da figura.
  • Segurando a tecla CTRL, redimensione os pontos de orientação, conforme indicado abaixo.
  • Considerando que a folha representa a mesa do CNC, mova o ponto de orientação para o canto inferior esquerdo, que corresponde à coordenada X=0, Y=0 do CNC.
  • Salve o arquivo.

Ajuste de escala do Ponto de Orientação:

Após a criação do Ponto de Orientação (composto por duas setas), a posição padrão das setas A e B não garantem que o desenho será exportado para o CNC na escala correta. Se esse ajuste não for realizado, o G-code gerado poderá resultar em um desenho no CNC com dimensões diferentes do esperado.

Para o desenho feito no Inkscape ficar do mesmo tamanho neste CNC, a seta B do Ponto de Orientação teve de ser reposicionada para a posição 10mm, conforme indicado a seguir.

  • Para facilitar esta etapa, ligue a grade e a régua clicando em Visualizar e selecionando o check box Grade de Página e assegure que as dimensões estão configuradas para milímetros.
  • Em hipótese alguma use o recurso de desagrupar objetos enquanto estiver ajustando as setas do Ponto de Orientação.
  • Abra o gerenciador de camadas e objetos clicando em Objetos → Camada e Objetos.
  • Selecione na área de trabalho do inkscape o objeto Ponto de orientação criado anteriormente.
  • Note que o Ponto de Orientação irá ficar destacado no painel do gerenciador de camadas e objetos que nesse caso é a pasta g23 (o nome da pasta pode variar).
  • Expanda essa pasta e teremos mais duas pastas, sendo que cada pasta possui um dos pontos de referência.
  • Expanda novamente as duas pastas e selecione o path da segunda seta, mais à esquerda, que é a seta B.
  • Note que na barra de ferramentas do Inkscape, a coordenada X da seta B está com valor próximo a 50mm.
  • Acerte o valor da coordenada X da seta B para 10mm conforme indicado abaixo.
    • A seta B irá se mover para a posição 10mm, coincidindo com a marcação da grade (esse é o ajuste principal).
  • Ainda no gerenciador de camadas e objetos, selecione o texto da seta B e edite ele de (100.0; 0.0; -1.00000) para (10.0; 0.0; -1.00000).
  • Sem desagrupar o objeto criado em Pontos de Orientação, utilizando o gerenciador de camadas e objetos, as setas e o mouse, reposicione o texto da seta B, conforme desejado.
  • Salve o arquivo.

Não está nos livros: Conforme explicado logo no início, Depois de verificar que todas as proporções estão corretas, também é possível salvar esse desenho como modelo para novos projetos, em Arquivo → Salvar Modelo.
Utilize um nome sugestivo, por exemplo CNC_228_125_mm, assim ele fica salvo como um modelo pré configurado, com as proporções corretas, para futuros projetos.
Para usar o modelo, basta abrir o Inkscape, clicar em Arquivo → Novo de Modelo e ir na aba Personalizado para encontrar e carregar o modelo previamente salvo.

Gerando o código Gcode:

Nesta etapa será gerado o código Gcode.

  • Selecione todos elementos (todos os caminhos) da figura a ser impressa
  • Clique em Extensões → Ferramentas Gcode → Caminho para G-code.
  • Irá abrir a janela Caminho para Gcode.
  • Na aba Preferências da janela Caminho para Gcode, defina o nome do arquivo que será gerado, saida.nc (por exemplo).
  • Como se trata de uma gravação a laser, não precisa se importar com parâmetros para o eixo Z, ou seja, pode deixar zerado.
  • Ainda na aba Preferências, defina a pasta onde será gerado o arquivo. Conforme na figura abaixo, foi escolhida a pasta Downloads.
  • Selecione a aba Opções.
  • O parâmetro Escala ao longo do eixo Z deve ficar com o valor 1, caso contrário o software irá dar erro.
  • Marque o checkbox Selecionar todos os caminhos se nada estiver selecionado (opcional, só por segurança).
  • Deixe os parâmetros restantes com seus valores padrão, conforme indicado abaixo:
  • Selecione a aba Caminho para Gcode.
  • Ajuste Tolerância à interpolação de Biarc para 1.
  • Profundidade máxima de divisão é 4.
  • Assinale o checkbox Classificar caminhos para reduzir a distância rápida.
  • Conforme indicado abaixo, para gerar o arquivo Gcode e somente na aba Caminho para Gcode, clique em Aplicar, para que o arquivo seja gerado.
  • Depois de clicar em aplicar, será gerada uma tela como a seguir e o arquivo será gerado no diretório especificado:

A tela do Inkscape deve ficar semelhante ao print abaixo e o arquivo Gcode será criado na pasta, conforme previamente configurado.

Ajustando o código gerado:

Não está nos livros: Caso essa etapa se torne rotineira, é uma boa prática criar uma macro no Notepad++ para automatizar os passos a seguir. Criar uma macro vai facilitar a preparação dos arquivos de forma rápida e confiável. Pesquise como criar macros no Notepad++ ou no editor de sua preferência, é bem fácil.

Voltando ao tópico “Ajustando o código gerado”, esse plugin do Inkscape gera um arquivo Grbl genérico. Como nesse caso é utilizada uma controladora de CNC Arduino, é necessário fazer manualmente uma série de ajustes, conforme a seguir.

  1. Abra o arquivo gerado em um editor de texto como o Notepad++ e salve uma cópia de backup.
  2. Remova do código todos os posicionamentos relativos ao eixo Z. Isso é necessário porque a gravação laser, nesse caso, não usa o eixo Z.
    • Utilizando a função procurar e substituir, delete todas as ocorrências de movimentação “G00 Z0.000000” do arquivo – são cerca de 82 ocorrências.
  3. Remova do código todos os posicionamentos do eixo Z da coordenada XYZ.
    • Utlizando a função procurar e substituir, exclua todas as ocorrências “Z-1.000000” – são cerca de 536 ocorrências.

Analisando o código gerado, da para ver que no início do processo temos o comando M3 para ligar o laser e ele permanece ligado até o fim do processo, quando é desligado pelo comando M2, tudo bem por aqui.

E em nenhum momento é controlada a potencia do laser pelo comando S0 – 0% ~ S1000 – 100% e isso precisa ser resolvido.

  1. Para garantir, ajuste a potência do laser para 0% assim que ele é ligado, trocando todas ocorrências M3 para M3S0 – apenas uma ocorrência.
  2. Dica para programadores: Se estiver utilizando o Notepad++, dá para fazer direto as próximas alterações usando a função de Expressão regular da janela Substituir.
    • No campo Localizar, coloque a string ^(G00 X.*)$
    • No campo Substituir por, coloque a string S0\r\n$1\r\nS500
    • Ainda na janela Substituir, selecione a opção Expressão Regular
    • Clique em Substituir todos – cerca de 42 pares de substituições.
  3. Se você não entendeu como proceder o passo anterior, faça manualmente os dois passos a seguir.
    • Antes de cada linha contendo o comando G00 X…, adicione o comando S0 para apagar o laser antes de ele se movimentar para a nova posição.
    • Depois de cada linha contendo o comando G00 X…, adicione o comando S500 para ajustar a potencia do laser em 50%. – são cerca de 42 pares de substituições S0 / S500 nesse caso.

Finalizando, o controlador Grbl da placa Arduino não lida muito bem com o sinal de % e parenteses. Para resolver isso, adicione um ; antes de cada sinal de % e antes de cada sinal de abertura de parenteses, assim essas linhas serão entendidas como comentários – cerca de 174 edições se utilizar o Notepad++.

Para referência, segue um print do Gcode após a limpeza do arquivo:

Enviando ao CNC:

Salve e o arquivo e ele está pronto para ser enviado ao CNC, conforme indicado abaixo:

CNC trabalhando:

Resultado final:

Teste de potência, mantendo a mesma velocidade F 600. Note que a resolução desse teste está com 14 linhas na área de teste:

Deslocamento vetorial: F 600.000000

Teste de velocidade, mantendo a potência do laser em 100%. Note que foi triplicada a resolução do teste, ele está utilizando 42 linhas.

Deslocamento vetorial variando entre F 400.000000 e F 2200.000000

Finalizando:

Para a configuração adotada, o papel de teste acabou sendo cortado. Nesse caso, basta reduzir levemente a potência do laser ou aumentar a velocidade vetorial para que o material seja apenas marcado, sem o corte completo.

Outro ponto importante a destacar é que estamos extraindo o máximo de uma ferramenta originalmente 2D.

O Inkscape, em conjunto com a extensão Gcodetools, gera o código CNC exclusivamente a partir de caminhos, isto é, linhas bidimensionais que representam as trajetórias a serem executadas pela ferramenta da máquina.

Como não há um controle simples e preciso do eixo Z nesse fluxo de trabalho, optou-se por remover todas as movimentações associadas a esse eixo.

Por essa razão, textos e formas não possuem preenchimento automático, sendo considerados apenas os seus contornos durante a geração do G-code.

Quando se deseja obter um preenchimento com padrão em letras ou objetos, é necessário criar previamente esse padrão, convertê-lo em caminho e, em seguida, aplicar a operação Interseção de caminhos, obtendo o efeito visual de preenchimento, conforme ilustrado no exemplo a seguir.

Lado esquerdo – Gcode gerado no Inkscape | Lado direito, Gcode renderizado no CNCjs

O procedimento completo para a criação e aplicação desses padrões será abordado mais adiante, em um artigo exclusivo, dedicado a esse tema.

Last updated by at .