PerfectVector
Por Irene Kim

AxiDraw: confira a ordem dos caminhos antes de desenhar

Compare as visualizações SVG offline do AxiDraw para verificar a ordem do caminho, a reversão e o movimento com a caneta levantada do papel. Preserve a geometria do desenho e entenda o que o SVG salvo retém.

10 min de leitura
Nesta página

Para otimizar o deslocamento da caneta SVG no AxiDraw, primeiro confirme se os caminhos desenham as marcas desejadas. Em seguida, compare as visualizações off-line com a mesma geometria e configurações fixas. A reordenação pode encurtar o movimento da caneta com a caneta levantada sem reduzir o número de levantamentos ou alterar as formas desenhadas.

Mantenha seu SVG original. A visualização abaixo verifica a ordenação e a reversão opcional do caminho; ele não reconstrói linhas centrais, não repara contornos indesejados nem reorganiza permanentemente os objetos SVG originais. Nosso teste usa oito traços abertos de autoria, não um contorno vetorizado do PerfectVector ou um desenho físico de caneta.

Experimente com a sua própria imagem
Abrir a ferramenta completa
Teste grátis. Solte uma imagem e veja a prévia do seu vetor, sem precisar criar conta.

Diagnosticar os saltos antes de alterar a ordem

O movimento com a caneta tocando o papel é o percurso que faz marcas. O movimento com a caneta levantada do papel é o movimento entre as marcas com a caneta levantada. Um desenho curto pode ter movimentos longos com a caneta levantada do papel quando objetos sucessivos ficam distantes uns dos outros.

O que a visualização mostraO que abordar primeiro
Duas arestas ao redor de uma linha que deve ter um traçoConstrua a rota de linha única pretendida
Um perímetro vazio onde você queria uma área sombreadaCrie caminhos de caneta de preenchimento de hachura explícitos
Marcas corretas, mas saltos repetidos na páginaCompare as configurações de sequenciamento de caminho e reversão de direção de caminho abaixo
Linhas indesejadas desenhadas entre marcas separadasVerifique a geometria da caneta e a junção do caminho antes de aceitar qualquer rota mais curta

Medir o comprimento do caminho SVG responde ao comprimento da geometria do desenho. Por si só, não inclui o percurso da máquina entre esses caminhos.

A referência CLI do AxiDraw distingue estas configurações: 0 normalmente segue a ordem do documento com a junção disponível, 1 também reordena caminhos e 2 também permite a reversão de caminho. Conectar caminhos de desenho adjacentes é uma decisão separada. Para esta comparação, nós o desabilitamos com min_gap = -1 para que os traços adjacentes não possam se tornar uma marca contínua.

A reversão pode ser importante para trabalhos sensíveis à direção. Se o desenho deve seguir uma determinada sequência ou direção de escrita, uma rota de movimento mais curta com a caneta levantada não é motivo suficiente para aceitar a configuração 2. As camadas também restringem a classificação; não se deve presumir que grupos aninhados preservem uma sequência de desenho sob otimização. Inspecione a visualização real do seu documento.

Execute três visualizações offline em um SVG inalterado

Este exemplo requer Python e a API oficial AxiDraw Python. Testamos a API 3.9.6 com Python 3.9.6. Siga as instruções de instalação oficiais se o módulo não estiver instalado no ambiente Python que você usa.

A referência da API Python define a visualização como simulação offline. Defina preview = True depois plot_setup e antes plot_run. O script abaixo sempre define e afirma isso; não contém nenhuma chamada de conexão de dispositivo.

Salve este pequeno exemplo como eight-strokes.svg ou use uma cópia do seu próprio SVG:

<svg xmlns="http://www.w3.org/2000/svg" width="100mm" height="80mm" viewBox="0 0 100 80">
  <g fill="none" stroke="#152b3b" stroke-width="0.4">
    <path id="stroke-0" d="M 10 20 L 18 20"/>
    <path id="stroke-1" d="M 88 60 L 80 60"/>
    <path id="stroke-2" d="M 20 20 L 28 20"/>
    <path id="stroke-3" d="M 78 60 L 70 60"/>
    <path id="stroke-4" d="M 30 20 L 38 20"/>
    <path id="stroke-5" d="M 68 60 L 60 60"/>
    <path id="stroke-6" d="M 40 20 L 48 20"/>
    <path id="stroke-7" d="M 58 60 L 50 60"/>
  </g>
</svg>

O arquivo de teste tem uma janela de visualização 100 × 80 mm e dimensões correspondentes de viewBox. Isso mapeia cada unidade de coordenadas para 1 mm aqui, seguindo o mapeamento de viewport e viewBox do SVG. Cada um de seus oito traços tem 8 mm de comprimento.

Salve o seguinte como preview-orders.py:

from pathlib import Path
import json
import sys
from pyaxidraw import axidraw
 
source = Path(sys.argv[1]).resolve()
destination = Path(sys.argv[2])
destination.mkdir()  # Use a new directory; preserve previous results.
reports = []
for order in (0, 1, 2):
    ad = axidraw.AxiDraw()
    ad.plot_setup(str(source))
    ad.options.preview = True
    ad.options.rendering = 3
    ad.options.reordering = order
    ad.options.random_start = False
    ad.options.auto_rotate = False
    ad.options.report_time = False
    ad.params.min_gap = -1
    assert ad.options.preview is True
    output = ad.plot_run(True)
    if ad.errors.code:
        raise RuntimeError(f"Preview error: {ad.errors.code}")
    (destination / f"preview-order-{order}.svg").write_text(output)
    reports.append({
        "order": order,
        "pen_down_m": ad.distance_pendown,
        "pen_up_m": ad.distance_total - ad.distance_pendown,
        "pen_lifts": ad.pen_lifts,
    })
report = json.dumps(reports, indent=2)
(destination / "distances.json").write_text(report + "\n")
print(report)

Execute-o com o ambiente Python que contém a API oficial, usando um novo nome de diretório de saída:

python3 preview-orders.py eight-strokes.svg preview-check

Ele salva três SVGs de diagnóstico e distances.json. rendering = 3 inclui movimentos de relevo e de desenho. Partidas aleatórias e rotação automática estão desativadas; a junção de caminho está desativada. Mantenha essas opções fixas ao comparar seu próprio arquivo. Este script é um método de inspeção offline, não um comando para operar uma plotadora.

Compare o movimento com a caneta levantada e a geometria desenhada separadamente

Em nosso arquivo de teste de oito tempos, o script exato foi produzido:

ReordenandoMovimento estimado com a caneta levantada do papelMovimento com a caneta tocando o papelElevações relatadas
00.509749m0.064m8
10.223592m0.064m8
20.180919m0.064m8

Estas são estimativas de software nativo para este arquivo, incluindo viagens desde o início e de volta para casa. A distância da caneta permaneceu 64 mm e a contagem de elevação permaneceu oito. Movimentos mais curtos com a caneta levantada do papel não significam menos levantamentos. Não medimos um desenho físico a caneta, tempo decorrido de plotagem ou melhoria garantida para outro desenho.

As visualizações empilhadas do AxiDraw mostram oito traços de desenho azuis inalterados, enquanto as rotas de movimento magenta com a caneta levantada diferem entre a ordem zero e dois; o contraste da tela e as espessuras dos traços são aprimorados.
Captura real de Preview de cópias empilhadas de exibição do caminho do SDK nativo, renderizadas com resvg. Azul está com a caneta voltada para baixo; magenta é caneta. As cores e espessuras dos traços foram aprimoradas para maior legibilidade; as coordenadas do caminho nativo permanecem inalteradas. Nenhum plotter estava conectado.

A figura empilhada compara as configurações 0 e 2; a tabela também inclui 1. Ele exibe cópias dos caminhos de visualização do SDK nativo com cores azul e magenta mais fortes e traços mais grossos para maior legibilidade. Esses são estilos de exibição, não larguras físicas de caneta. As coordenadas e transformações do caminho nativo permanecem inalteradas; a janela de exibição corta o espaço não utilizado. Todas as três visualizações nativas foram inspecionadas e uma verificação de geometria independente encontrou os mesmos oito segmentos de desenho horizontais, permitindo a reversão de sua ordem final. Cada vértice amostrado permaneceu no segmento pretendido.

Para o seu arquivo, abra cada SVG de visualização e examine a camada de desenho separadamente da camada de deslocamento elevado. Confirme o tamanho e a localização pretendidos da página, todas as marcas esperadas, furos ou lacunas inalterados e nenhum novo conector desenhado. Verifique se qualquer curso invertido é aceitável. Rejeite uma rota que desenha marcas erradas, mesmo que o relatório de distância seja menor.

Entenda o que a visualização salva preserva

A reordenação da documentação do AxiDraw explica que a otimização acontece em uma cópia temporária. Os objetos originais em um SVG de saída salvo mantêm sua ordem original. Nossas saídas também mantiveram todos os caminhos stroke-* originais e sua sequência original.

Portanto, preview-order-2.svg é uma visualização de diagnóstico, não uma prova de que outro programa lerá um arquivo de arte reordenado permanentemente. Mantenha a fonte, a opção escolhida e o relatório de comparação juntos. Ao usar o original com o AxiDraw posteriormente, aplique novamente as configurações de ordenação pretendidas no fluxo de trabalho de plotagem apropriado.

Se o seu problema for geometria de desenho indesejada, retorne à etapa de construção de rota. Se apenas a rota de movimento com a caneta levantada for um desperdício, compare as visualizações de configuração fixa. O tamanho físico, o comportamento da caneta e a operação da máquina ainda exigem verificações próprias; este controle offline não os prova.

Onde PerfectVector se encaixa antes desta verificação

Se você ainda possui apenas arte raster e deseja suas formas contornadas visíveis com preenchimento de cor como formas vetoriais editáveis, o vetorizador de imagens do PerfectVector pode ser uma etapa inicial adequada. Inspecione sua visualização em relação aos contornos e furos da sua fonte. Ele não infere uma única linha central nem otimiza a ordem do caminho do AxiDraw; use o fluxo de trabalho de linha central ou hachura quando essas forem as rotas que você precisa.

Se você já possui as rotas SVG corretas, guarde-as e execute a verificação offline diretamente. Retraçar um SVG não adiciona informações de pedido ausentes. A visualização protegida do PerfectVector é somente visualização; editar e exportar um resultado exige desbloqueá-lo.

Perguntas frequentes

A reordenação do AxiDraw altera permanentemente a ordem dos objetos do meu SVG? Não. A otimização documentada usa uma cópia temporária. Uma visualização salva contém camadas de movimento de diagnóstico, enquanto os objetos de arte original mantêm sua ordem. Preservar a configuração escolhida separadamente.

Por que o movimento com a caneta levantada do papel diminuiu enquanto a contagem de levantamentos permaneceu a mesma? Os mesmos oito cursos separados podem ser visitados em uma sequência ou direção diferente. Em nossa referência de teste com junção de caminho desativada, todas as configurações relataram oito elevações e 64 mm de desenho, enquanto o movimento com a caneta levantada mudou.

O pedido pode corrigir um traço de contorno duplo ou gerar sombreamento? Não. Corrija primeiro as rotas do desenho. Use um fluxo de trabalho de linha central para um único traçado ou construa caminhos de hachura explícitos para sombreamento de área e compare a ordem nessa geometria aceita.

Fontes

  1. AxiDraw — Referência da API Python — Define visualização e renderização offline, com exemplos retornando SVGs de visualização.
  2. AxiDraw — Referência CLI — Abrange instalação, sequenciamento de caminho e configurações de reversão de direção de caminho, manipulação de camadas e otimização temporária.
  3. W3C — Sistemas de coordenadas, transformações e unidades SVG — Explica o mapeamento da janela de visualização usado pelo exemplo dimensionado.

Ainda partindo de um desenho raster cujas formas contornadas com preenchimento de cor você precisa? Comece gratuitamente com sua própria imagem e, em seguida, inspecione os contornos e buracos da visualização em relação à fonte. Assim que as rotas de caneta pretendidas existirem, verifique sua ordem separadamente com o método off-line acima.

Mais do blog

PerfectVector

Transforme sua imagem em um
SVG editável

Vetorize e confira a visualização grátis, sem limite diário.