Jindra Fučík

Plugin mogul do Inkscape pro export gcode optimalizovaného pro laserové gravírky a řezačky

Úvod

Vytvořil jsem si vlastní mini laserovou řezačku a gravírku. Toto zařízení interpretuje G-kód ve variantě grbl s podvariantou Laser. To umožňuje dynamicky měnit intenzitu laseru v průběhu řezání. Je tedy možné gravírovat a současně řezat, nebo dokonce gravírovat do různé "hloubky".

Bohužel žádný plugin nedokázal z jednoho Inkscape obrázku vygenerovat soubor, který by dokázal pracovat s intenzitou laseru. Celkem tomu rozumím, protože se těžko určuje, který atribut má vlastně intenzitu popisovat. Setkal jsem se s tím, že některé programy používají vrstvy (každá vrstva má přidělenou svojí intenzitu), ale to se mi nezdá úplně praktické. Proto jsem si zvolil atribut "neprůhlednost" (je to zvláštní, ale čeština asi nemá takové slovo, anglicky je to opacity).
Pojetí je takové: při exportu se zvolí základní intenzita, která odpovídá řezanému materiálu. Pokud je čára nakreslena s "neprůhledností" 100%, pak je i na obrázku úplně černá a znamená to, že se použije 100% definované intenzity. Nejčastěji tak dojde k řezání. Pokud si však definujeme menší "neprůhlednost" (například 30%), bude čára částečně průhledná a její obraz tedy bude spíše šedý. Pro takovou čáru se pak použije jen 30% původní intenzity, takže se materiál v daném místě neprořízne, ale jen se gravíruje.

Software

Součástí instalace Inkscape je Gcode Tools založené na práci Nicka Drobchenko z cnc-club.ru. Tento nástroj mi však moc nevyhovuje, je připravený spíše pro frézovací stroje než pro laser.
Nicméně jsem našel klon, který postupně upravoval Adam Polák a Jay Johnson. Tento software je lépe upravený pro práci s laserem, má však několik drobných nedostatků. Především se v něm stále táhne pozůstatek knihovny dxf-import, která je velmi stará. Tato knihovna předpokládá, že je Inkscape přepnutý do režimu práce v jednotkách pixel (px) s pevným rozlišením 90 DPI. Pracovat v pixelech je trochu nepraktické, pokud chcete vytvořit něco, co má rozměry v jednotkách které máte napsané na pravítku (mm, cm, nebo snad inch). Druhý předpoklad už také dávno není naplněn. Při vývoji formátu SVG (nativní pro Inkscape) bylo později stanoveno rozlišení 96 DPI. Pochopitelně platí jedna intenzita paprsku pro celý soubor, takže není možné kombinovat gravírování a řezání.

Proto jsem si vytvořil tento vlastní klon, nazvaný "JFU Laser Tool", který tyto nedostatky odstraňuje. Pracuje s "user units", takže si můžete připravit kresbu s použitím oblíbených délkových jednotek (milimetry, centimetry, palce, stopy, ...) a také kombinovat řezání a gravírování.

Jay Johnson vypracoval několik pěkných příkladů jak si připravit podklady pro řezání textu nebo dalších objektů.
Rozhraní upraveného pluginu je v zásadě stejné.

Inkscape plugin module for export gcode files optimized for laser engravers and cuters

Introduction

I build my own Mini Laser Engraver and Cuter. This device interpret G-code in grbl variant and Laser sub-variant. This combination allow to dynamic change of laser intensity during cutting. Then it is possible to engrave and cut together, or engrave various depth.

Unfortunately no one plugin allow generate file from one Inkscape drawing that allow to work with laser intensity. I guess I understand it, because it is not easy to decide, what attribute has to describe intensity. I saw programs, that using layers. Every layer have its own intensity. But it seems like not that practical. Then I decided to use attribute opacity.
Meaning is, that at begin of export you can chose basic intensity that comply with material. It mean that material will be cut. Once we have lower opacity (for example 30%), then line will be partially transparent and will be displayed in grey colour. For this line will be used only 30% of original intensity. Then material will not be cut, but remain engraved.

Software

Part of Inkscape installation is Gcode Tools based on work of Nick Drobchenko from cnc-club.ru. This tool is not suitable for me. It is designed for milling machines not for laser.
But I found clone, that is modified by Adam Polák and Jay Johnson. This software is better prepared for work with laser. But it have few imperfections. Primary problem is residue of df-import library in code. That library is very old fashion. This library expect, that drawing use pixels (px) as measurement units with fixed resolution 90 DPI. Of course with one intensity per all drawing. Then it is not possible to combine engrave and cut.

Then I decided to make my own clone called "JFU Laser Tool". This one solve previous problems. It work with "user units", then you can prepare drawing in your favourite units (millimetre, centimetre, inch, feet, ...). You can also combine engrave and cut.

Jay Johnson prepared few nice examples how to prepare materials for cut of text or other objects.
Interface of modified plugin is more/less same.
  • Laser ON Command:  Příkaz, kterým se spustí laser. Například M03, nebo M04.
  • Laser OFF Command: Příkaz, kterým se vypne laser. Například M05.
  • Travel Speed:  Rychlost přesunu v případě, že je laser vypnutý v mm/min.
  • Laser Speed:   Rychlost přesunu v případě, že je laser zapnutý v mm/min.
  • Laser Power: Nominální intenzita pro 100% řezu. Intenzita může být snížena neprůhledností.
  • Power On Delay: Doba čekání od spuštění laseru před započetím řezu. Tato doba se používá, pokud je potřeba předehřát řezaný materiál
  • Passes:  Počet průchodů každého řezu. Pokud gravírujete, ponechte hodnotu 1.
  • Pass Depth:  Tento parametr posune osu Z dolů po každém průchodu. Například, pokud řežeme materiál tlustý 3 mm na 3 průchody, pak je posun o 1 mm na každý průchod.
  • Directory:  Složka, do které se uloží soubor.
  • Filename:  Jméno pro každý soubor.
  • Add numeric suffix to filename: Přidá číslo ke jménu každého souboru v případě, že ve složce již existuje soubor stejného jména.
  • Suppress all messages: Skryje vytvářený varovných a chybových zpráv.
  • All Units:  Zméní výstupní jednotky na metrické mm nebo imperiální in.
  • Live preview:  Ukazuje cesty během vytváření.
  • Apply:  Stiskni pro spuštění konverze.

Řezání a gravírování

Jak již bylo řečeno, intenzita laseru se snižuje poměrem neprůhlednosti. Neprůhlednost najdete na kartě "Fill and Stroke", kterou vyvoláte stiskem Shift+Ctrl+F. Nebo, pokud hledáte rychlejší řešení, tak v levém spodním rohu najdete ovládací prvek pro výplň a obrys, který má u sebe políčko označené O:.

Pokud chceme současně řezat a gravírovat, je dobré znát několik drobností, které mohou zjednodušit práci.

Je dobré vědět, že tento plugin zpracovává křivky v pořadí "zepředu" "dozadu". Objekty, které jsou v obrázku nahoře se budou řezat jako první, objekty, které jsou v obrázku vespod se budou řezat jako poslední. Je poměrně praktické si gravírování zařadit dopředu a až za něj umístit řezání.

Velmi důležité je vědět, k čemu se vztahuje neprůhlednost. Objekt může být neprůhledný sám o sobě, ale také může být součástí skupiny, která má svou neprůhlednost. POZOR: Neprůhlednost skupiny se nebere v úvahu. Celkem často dochází k chybám při práci s textem. Uvedeme si malý případ, jak připravit text pro gravírování.

Nejprve si vytvoříme text, umístíme jej na správné místo a dáme mu správné rozměry. Všimněte si, že se jedná o objekt typu "Text".
  • Laser ON Command:  The command for turning ON the laser. For example, M03 or M04.
  • Laser OFF Command: The command for turning OFF the laser. For example, M05.
  • Travel Speed:  The speed of the machine when the laser is OFF in mm/min.
  • Laser Speed:  The speed of the machine when the laser is ON in mm/min.
  • Laser Power: Normal intensity of laser for 100% cut. Intensity can be decreased by opacity.
  • Power On Delay:  This will turn on the laser and wait to move until the delay is complete.  It is used to heat up the material and initiate the burning process.
  • Passes:  If cutting, this will repeat the entire path by the number of passes.  If engraving leave as 1.
  • Pass Depth:  This will move Z axis down by this amount for each pass.  For example, 3mm piece of material with 3 passes might use 1mm per pass to cut all the way through.
  • Directory:  The directory to store the file.
  • Filename:  Name of the file.
  • Add numeric suffix to filename:  Adds a number to the name in case there already is a file with the same name in the directory.
  • Suppress all messages: hide all warning or error messages during processing.
  • All Units: Change the units to either mm or inches.  This will make everything in inches or mm.
  • Live preview:  Shows the path being generated.
  • Apply:  Click to run the converter.

Engrave and cut

It was already stated, that laser intensity can be decreased by opacity level. Opacity can be modified on card "Fill and Stroke". It can be displayed by pressing Shift+Ctrl+F. Or, if you are looking for faster method, then in left down corner is control element "Fill and Stroke". It contain field marked O:.

Once you would like to cut and engrave together, here is few hints, that can help you make your work more easy.

It is good to know, that this plugin read cures in order from "front" to "back". Objects, that are in figure in front will be cut first; objects, that are located in back, will be cutted as last. It is really practical to order engrave to front and cut to back.

It is very crucial to know, in what object opacity apply. Object can have its own opacity, but it can be also part of group with group opacity. WARNING: Plugin not accept group opacity. It is usual mistake during work with text. Here is small example, how to prepare text for engrave.

First of all we have to prepare text. Place it to correct position and set correct size. Take a look, that it is still "Text" type object.
Nyní si v menu "křivka" převedeme "objekt na křivku". Nyní si můžeme všimnout, že celý text se převedl na skupinu čtyř objektů. Pokud bychom nyní nastavili neprůhlednost, pak by se vztahovala ke skupině a nikoli k jednotlivým křivkám. Proto musíme zrušit seskupení Shift+Ctrl+G. Now in menu "Path" convert "Object to path". Then you can found, that all text is converted to group of four objects. Once we set opacity now, then it will become valid for group and not to paths in this group. Than we have to dissolve group Shift+Ctrl+G.
Po zrušení seskupení již máme vybrané 4 samostatné objekty. After dissolveng of group we have selected 4 individual objects.
Těmto objektům již jednoduše změníme neprůhlednost. We can simply change opacity of those objects.
Pokud bychom chtěli nějakým způsobem sloučit čtyři objekty, pak se nabízí možnost sloučení křivek v menu "Křivka" / "Sloučit" nebo Ctrl+K.

Při gravírování pozor na jednu drobnost - pokud laser prochází nějakým místem několikrát, tak se neustále zvětšuje hloubka gravírování. Když budete pozorně sledovat obrázek Inkscapu, tak si můžete všimnout, že dva objekty s neprůhledností 30% v místě svého překryvu vytvářejí prostor s neprůhledností 60%.
Once we would like to merge somehow those four objects, we can utilise for example path collection in menu "Path" / "Combine" or Ctrl+K.

Do nont forget one small thing during engrave. Once laser moving more times through same path, it periodically increase engrave depth. Once you look to Inkscape drawing with attention, you can find, that to objects with opacity 30% have in place with overlap opacity 60%.
Na následující ukázce si popíšeme kroky potřebné pro gravírování a vyříznutí nápisu.
Vlastní nápis vytvoříme s neprůhledností například 20% (záleží na materiálu ze kterého budeme řezat, pro kartony častěji používáme 30%, pro hlazené lepenky stačí méně).
Following example describe steps for engrave and cut of sign.
We prepare text for sign for example with opacity 20% (it depends on material we use for cut, for cartons is usual 30%, for glazed cardboard can be used less).
Rámeček kolem nápisu je již vytvořen s neprůhledností 100% (Pochopitelně je posunut úplně dospod). Sign frame is created with opacity 100% (of course it is moved to back).
Nyní si jen v menu "Extensions" vybereme "Generate Laser Gcode" / "JFU Laser Tool". Now chose in menu "Extensions" submenu "Generate Laser Gcode" / "JFU Laser Tool".
Pokud je potřeba, změníme parametry podle řezaného materiálu a necháme vytvořit soubor. Once necessary, we can change parameters depend on cuted material. And then prepare file.
Ukázkové video gravírování a řezání tohoto souboru. Example video of engrave and cut of this file.

Instalace

Nejprve potřebujeme nainstalovat Inkscape. Prostě si stáhneme instalační balíček a nainstalujeme běžným způsobem.
Po instalaci Inkscape nakopírujeme do adresáře kde je Inkscape nainstalovaný podadresáře share/extensions (výchozí pro Windows je C:\Program Files\Inkscape\share\extensions) soubory gcode generátoru laser.inx a laser.py které jsou obsaženy v zip souboru dostupném na konci této stránky. (poznámka: soubor laser.inx.debug není podstatný, slouží jen pro případ, kdy si potřebujeme zapnout logování a zkoumat kód generátoru, pak jej přejmenujeme na laser.inx). A to je vše. Pokud byl Inkscape spuštěný, tak jej ukončíme a při dalším spuštění již bude k dispozici volba pro vytváření gcode souborů.
Poznámka: podle uživatelů firewallu comodo je potřeba nastavit auto-containment aby povolil spouštění pluginu.

Install

First of all you need to install Inkscape. Simply download installation package and install it as usual.
When Inkscape installation is done, copy files laser.inx and laser.py from zip archive located bottom on this page into Inkscape share/exensions directory (Windows default is C:\Program Files\Inkscape\share\extensions) (Note: file laser.inx.debug is not necessary. It is only for case, you need to enable extra logs and examine code of generator. Then you have to rename it as laser.inx). And taht is all. Once inkscape already running, you have to exit it. Next start gcode generator menu will be available.
Note: comodo firewall users reported, that it is needed to configure auto-containment rules to allow execution.
Nezapomínejte při práci používat ochranné brýle. Laserový paprsek může být poměrně zákeřný a dokáže značně nepříjemně poškodit zrak. Zejména v případě, že máte k nějakému poškození sklony, pak jej dokáže opravdu hodně zhoršit. To platí i pro odražený paprsek. Pamatujte, že nejvíce úrazů v laserových laboratořích je poškození oka paprskem odraženým od láhve limonády. Do not forget to use protection glasses when working with laser. Laser beam can be dangerous and can damage your eyes. Especially once you have some eye sickness. It is valid also for reflected beam. Remember that most of injury in laser laboratories is eye damage by beam reflected on glass bottle.

Download: verze pro bohaté / rich people version   verze pro chudé / needy people version
Alpha verze pro Inkscape 1.0 Vzhledem k množství změn zatím exortuje jen rovné úseky. Ale kdo by chtěl, může mi pomoci to dopsat.