Step 7: Getting the software ready.

Picture of Getting the software ready.
I will just go through the basics here. What software you need, how to set it up and the basic tool chain. I will only talk about windows based systems, all you Linux people will have to do some digging around (even if Inkscape and the extension should work fine on Linux as well). First you will have to download three files:

Inkscape - this is open source vector editing software. (download )
Laser engraver extension - This generates the g-code needed to control the laser. (download )
G-code sender - A small windows program I wrote to communicate with Grbl. (download )(source )

Install Inkscape by following their instructions. This should be a pretty painless process. And any help on the subject should be easy to find in the documentation on their web page. Next up is the extension; this is a little harder but not much. Open the .zip file in your favorite unpacker and copy all the files to "c:\Program Files\Inkscape\share\extensions". You have to restart Inkscape for the extension to show up. The extension is a heavily modified version of "Gcodetools ". That is it for setting up Inkscape. You can leave the "G-code sender" on your desktop or any other place where you will find it later. It does not need to be installed.

One important word about the extension, I am not a python programmer and there might be some kinks in the code.

I assume you have everything installed and ready to use by now. Here is a quick screencast of the work flow.

I hope this was not too quick. There are loads of guides on how to use Inkscape out there. I will not go into any details on how to use it.

The G-code sender is another story; there is no documentation as I just made the program. All the documentation is in this instructable, but feel free to ask if you have any questions. When you open the program it should be pretty self explanatory. The only strange thing is the radio buttons "\n\r" and "\r\n". Depending on what version of Grbl you are using the line ending are different. If the one doesn't work try the other one. Choose your serial port, and if you do forget to plug in your laser engraver, plug it in and hit the refresh button and your serial port should show up. Hit the "open" button to open hailing frequencies. Once the port is open you can type in commands like any terminal software in the text box above the open button. To start engraving a file you can ether type in the file path or click on the browse button and select a file.
When you click on "print" your file transfer will begin. The file will be transferred until the buffer on the Arduino is full, about 20 rows or so. When the buffer is ready for more data another row will be transferred. When you hit stop the transfer will end but the Arduino will not stop until the buffer is empty. When you hit the "close" button or exit the program the serial port will be closed and any transfer will be stopped.

Sometimes there will be a G-code that Grbl can’t interpret and will return an error. Most of the times these errors can be ignored but they will show up in the sender. This can be comments or the start and end "%" sign. If there is a comment after a command there will be an error but the command will still be executed. For example "G21 (All units in mm)" the G21 command will be executed but the comment will give an error.
FredL22 months ago

I am having a weird problem. I created a file. Using a program called All To G-Code Converter, I created G-Code. Then, sending the file to the engraver, it moves in X-Y axis but later doesn't engrave. I ca't make it work using Laser Engraver software at all. Help!

you need to edit file "laserengraver.py" probably located "C:\Program Files\Inkscape\share\extensions" and change starting and ending (M04, M05) command to M03, M04. It should look like this:

"gcode before path": "\nM04",

"gcode after path": "M03\n",

RobertWa1 year ago

I am having problems with circles being boxy (flat) on the top and sides. Have you run into this problem?



beardy4 months ago

Cheers Groover for the inspiration!

My laser arrived today so it's all systems go now!

Does anyone know if the compatibility problem with Laser Engraver Extension Inkscape v 0.91 is an Inkscape problem or an extension problem? It would be handy to get it fixed.

For now it seems to be playing ball with Inkscape 0.48.5 on OS X.

kyacker6 months ago

I'm getting this error from inkscape when trying to export the .nc Any Ideas?

Traceback (most recent call last):

File "laserengraver.py", line 3188, in <module>


File "C:\Program Files\Inkscape\share\extensions\inkex.py", line 268, in affect


File "laserengraver.py", line 3156, in effect

self.orientation( self.layers[min(0,len(self.layers)-1)] )

File "laserengraver.py", line 3080, in orientation

doc_height = inkex.unittouu(self.document.getroot().get('height'))

AttributeError: 'module' object has no attribute 'unittouu'

cbarran kyacker6 months ago

Same error i got, any fix ?

glsf91 cbarran6 months ago

Yes, use the previous version of Inkscape 0.48.5 !

mjain24 years ago
Just Awesome !!! Very innovative.
I was trying out a simple square with the laser engraver extension in Inkscape 0.48 and encountered the following error:

Inkscape has received additional data from the script executed. The script did not return an error, but this may indicate the results will not be as expected.
Select the active tab - Laser.

And no output file is being generated. Is the laser engraver specific to any particular version of inkscape? Please guide.

Thanks & regards
cbarran mjain26 months ago

I have this same problem , Did you ever find a fix ?

richlang7 months ago

I have everything working thinks to your software suggestions thanks, but have a question. It seems when I print it will go to the extreme X position and click for a while then appear to go through the motions of the image, then the laser comes on and it starts engraving. It does print some pretty cool images but just wondering if it is trying to set 0,0 or what is going on? Also tried PIC engrave and it did not work, have you tried that for photos? I have not been successful at doing any photos yet just what I have drawn in Inkscape.

arnab3211 year ago

can i use L293D instead of easydrivers (cause they are damn expensive)?

DBender2 years ago
Hello friend, first I would like to congratulate you on an excellent project.
Well I am Brazilian and I have difficulty understanding English, would aid her.
I'm struggling to understand how to download the files to the arduino, control the motors, which files should I download?
You could pass them to me by email?
Thank you.

olá amigo Dbender você conseguiu construir o projeto quero muito consegui faze esse projeto, voce poderia me dar algunas dicas,desde já grato

Yes my friend.... My questions in email: Deivesdb2@gmail.com

Thanks groover for a great ible, I have a question about dxf files. Inkscape and the laser extension all work perfect for me if I draw something in inkscape, but if I import a dxf the "object to path" command doesn't work. The laser command appears to work but it only outputs 5 lines of code. as I mostly work with dxfs its quite fustating, do you have any ideas? Im using the latest version on xp

G0 X0.000 Y0.000

kvanscoy4 years ago
Okay, I have been trying for a long time to get this to work I am having a hard time getting the g-code sender to work. Each time I try to connect to my machine I get nothing on the g-code sender. I send out $ and the computer beeps at me, Please help to solve this problem?
I want to know if the L298N can be used as the driven IC of the motor!
jbrodie4 years ago
Thanks groover!

You wrote the front end that grbl is missing.

I did want to point out that it seems to require Microsoft .net 3.5, So if anyone is having issues try installing it first.

Good job, and awesome project you deserve the epilog laser.
Genomique4 years ago
Hello Groover !

We really enjoy your instructable ! But experience some bad events.
Everything is ready now. Unfortunately, we would like to translate it to organize workshop for some students with a cool project.

While we run print with GcodeSender on the right COM only one motor is turning and we need to throw 6V to make them move. This is not due to the motors themselves. After, we can't use the circuit anymore.after a Bad error format.

Do have any clue ? Can we send you some pictures ?
Hi! I'm one of the developpers of Gcodetools.
Pleased to hear that Gcodetools now has a fork :)!
( http://en.wikipedia.org/wiki/Fork_(software_development) )

If you got any questions, I'll be glad to answer!

PS I'm not sure but possible Gcodetools can fit your needs with out modification. For example you can add arbitrary code to turn on/off the laser just before/after cutting each path. Just modify Gcode before path and Gcode after path in the tool's definition.
Groover (author)  ндробченко4 years ago
Hi, I'm really happy that you are here. I'm in no way a phyton programmer. :)

I think you can use the original Gcodetools without to much of a hassle. I just stripped it down to make it easier and more "to the point" when generating output for laser engravers. And also removing the Z axis save a little time when engraving.
That's cool! I've always said that the specialized tools is better than universal!

Just in case, according removing Z moves in new dev version we have postprocessor function which allows to remove it automatically using regular expressions. ( regex("G0\d\s*Z.*","(z motion removed)"); ).

Hello Nick, nice of you to stop by. There is one feature that's very important for cutting yet not in GCodetools (as far as I can tell). I'm wondering what may be involved in implementing it.

I'm talking about sequencing of enclosed shapes.  Meaning, if there is a shape within a shape, you really want to cut the smaller one, the one that's inside, first. Otherwise the larger shape gets separated from the sheet and can move around and then the position of the smaller shape is wrong (or it wouldn't cut at all).

I'm new to GCodetools (only used it after visiting Groover's project) and was trying to make something like that in DXF2GCODE but failed to make anything reliable (also made difficult for me because the comments in DXF2GCODE are in German). I tried to sort the shapes based on the number of lines of G-Code each consists of (outer shapes are often rather complex) but that backfires spectacularly when you have a complex shape, like a gear, inside a simple shape like a square. I contemplated a more complex sorting based on the length of the perimeter of the shape but the gear inside a square would still fail to sort properly.

In any case, do you have any idea about approaching this issue and would you be interested in solving it ? It would make any GCodetools user that cuts with laser, plasma or water jet (and that includes Groover's pocket engraver) happy.
There are several things being involved in the Gcodetools-dev.

One of them could fill your needs. It changes ordering behavior.

So you can choose between cutting:
Path by path - will reorder all paths in the layer and cut them in the order they appear (subpaths are not reordered)
Subpath by subpath - will break all paths appart so cutting goes subpath by subpath
And pass by pass - for multi pass cutting cuts first pass for all paths, then next pass ...

Also there's an option to cancel reordering, so the paths will be cut in the order they appear in the drawing.
frankbsad4 years ago
I keep getting an error saying "error: expected command letter"

any idea what that means?
Groover (author)  frankbsad4 years ago
Yes, this is whenever a line in the G-code can't be understood by Grbl. Most of the times it is things like comment and the start and ending %. Usually they can be ignored.

If you open the G-code in a text editor you can see the rows.

I tried a simple output from the Inkscape extension and got a couple of errors. First there are a % in the beginning that can be ignored. The next error are G49 "Tool length offset compensation cancel" this would not mater much to a laser anyway. Third error comes from a comment, G21 (All units in mm). The G21 command will be executed but the comment will give an error. Then everything runs smooth until the final % sign.

I will make some changes in the Inkscape extension during the day to minimize the errors.
thanks for clearing that up
You can specify your own header and footer for the gcode files which will replace default header and footer.

All you need to do it is create "header" and "footer" files in the output directory.
j0hn_d0e4 years ago
awsome project!!!

Is there anyway to get the source codes of the:
Laser engraver extension
G-code sender

I would like to see it work on OS X or Ubuntu...