Tworzymy plik gcode dla lasera

Aplikacja do konwersji pliku svg do gcode. Wiele kodów tu utworzonych zostało testowanych na laserze optycznym Creative Laser Falcon 10W Luxury Combo. Producent urządzenia podaje dwa oprogramowania, które z nim współpracują: LightBurn oraz LaserGRBL. W tym ostatnim, wczytanie pliku svg jest aktualnie traktowane eksperymentalnie. Innym sposobem symulacyjnego sprawdzianu poprawności utworzonego tutaj kodu jest skorzystanie z programu CAMotics. Plik svg musi posiadać niżej omówioną budowę i możemy go utworzyć bezpośrednio na tej stronie.

Plik SVG

TagOpis
<svg ...>Musi rozpoczynać plik svg
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg"
width="50" height="30">
<g ...>Przeskalowujemy oś Y aby odpowiadała układowi kartezjańskiemu oraz ustawiamy brak wypełnienia i czarny kolor konturu.
<g id="myGroup" transform="translate(0,30) scale(1, -1)" stroke="#000"
fill="none">
Identyfikator id="myGroup" jest niezbędny. Z niego zostaną odczytane koordynaty położenia i wymiary zewnętrzne wycinanego detalu.
Pamiętajmy, że po wykorzystaniu, dopuszczalnych i niżej wymienionych, kolejnych znaczników w pliku svg, należy naszą grupę oraz cały plik zamknąć (</g></svg>).
<line ... />Linia prosta od punktu (x1,y1) do punktu (x2,y2)
<line x1="0" y1="0" x2="40" y2="30" />
<rect ... />Prostokąt z lewym dolnym narożnikiem w punkcie (x,y) oraz szerokości (width) i wysokości (height) i opcjonalnie z wymiarem zaokrąglenia narożników
<rect x="0" y="0" width="40" height="30" />
// lub z promieniem zaokrąglenia narożników
<rect x="0" y="0" width="40" height="30" rx="3" />
<circle ... />Okrąg o środku w punkcie (cx,cy) i promieniu (r)
<circle cx="12" cy="15" r="6" />
<polyline ... />Linia łamana prowadzona przez kolejne punkty
<polyline points="0,0 10,10 30,10 40,0" />
<polygon ... />Jak wyżej ale jest automatycznie domykana
<polygon points="0,0 10,10 30,10 40,0" />
<path ... />Kontur prowadzony zgodnie z kodem w parametrze d. Pozwala na odwzorowanie dowolnego kształtu z dużą dokładnością.
<path d="M0,0 H5 A5,5 0 0 0 15,0 H35 A5,5 0 0 0 45,0
H50 V20 A10,10 0 0 1 40,30 H15 L0,15 Z" />
W parametrze d dopuszcza się stosowanie poniższych elementów:
  • M - wymagany punkt startowy ścieżki
  • L - odcinek prosty do punktu
  • H - odcinek poziomy do punktu
  • V - odcinek pionowy do punktu
  • A - łuk do punktu
  • C - krzywa kubiczna Beziera z dwoma punktami kontrolnymi
  • Q - krzywa kwadratowa Beziera z jednym punktem kontrolnym
  • Z - domknięcie ścieżki

GCODE

G-codeOpis
G0, G00Szybki ruch do pozycji X...Y... (stosować dla ruchów ustawczych)
G90użyj koordynat bezwzględnych
G91użyj koordynat przyrostowych
G1Ruch roboczy do pozycji X...Y...
G2praca po łuku w kierunku CW
G3praca po łuku w kierunku CCW
G0X11.113Y34.708
M3
G3X11.113Y34.708I-3.175J0F1000
M5
  • X i Y - koordynaty punktu docelowego na łuku
  • I określa odsunięcie środka łuku po osi X.
  • J określa odsunięcie środka łuku po osi Y. Wymagany jest co najmniej jeden z tych parametrów.
  • F - prędkość robocza
G17wybór płaszczyzny XY (LaserGRBL ustawienie to pomija)
G40anulowanie kompensacji promienia narzędzia
G21dane w milimetrach (LaserGRBL - 3 miejsca po przecinku)
G54przesunięcie układu współrzędnych
M-codeOpis
M5wyłącz laser
M3włącz laser
M8włącz chłodzenie
M9wyłącz chłodzenie
M2kończy wykonywanie programu
test gcode
Zrzut ekranu z programu CAMotics z symulacją kodu wygenerowanego z danych wejściowych
test gcode
Ten sam program w symulatorze online Xandera Luciano NC Viewer

Ograniczenia aplikacji

  1. W pliku svg nie rozpatrujemy transformacji poszczególnych elementów oprócz transformacji globalnej, która skaluje koordynaty do układu kartezjańskiego, czyli osi X od lewej do prawej i osi Y od dołu do góry. Aby zobaczyć całą grafikę, która może wychodzić poza pierwszą ćwiartkę układu współrzędnych, należy to uwzględnić w translate transformacji elementu g.
  2. Wszystkie koordynaty w pliku svg muszą być podawane w formacie bezwzględnym.
  3. Każdy element musi być zapisany w pliku svg w osobnym wierszu.
  4. Nie jest implementowany element typu ellipse.
  5. Nie jest implementowany element typu text.
  6. W elemencie arcus ścieżki nie jest implementowane pochylenie łuku oraz przyjmuje się, że łuk posiada identyczne promienie w osiach X i Y.
  7. Jeżeli potrzebujesz zaprogramować łuk o różnych promieniach rx i ry to jest to nadal możliwe ale musisz przekształcić ten fragment ścieżki w krzywą lub krzywe Beziera, jak pokazano to dla przykładowych danych wejściowych.
  8. W elemencie ścieżki typu krzywa jest implementowana krzywa kubiczna (C) i kwadratowa (Q) Beziera.
  9. W elemencie rect jest zaimplementowany promień zaokrąglenia wierzchołków (o ile występuje) jako identyczny dla osi X i Y.