Visual Basic 2015 or 2017

It is what it is, free, fully-featured IDE for students, open-source and individual developers.

The files in the project.

Here a part of the user interface. The default values are:
Moving, laser off, speed 3600.
Moving, laser on, speed 1000.
Laser height at 32 mm above the PCB.
Generate Z-code. If you turn this on G-code will be generated to bring the Z-axis to zero and after that go to the 32 mm above the PCB. If you know your last laser project was PCB lasering, you can skip the Z-code generation, it will all be faster at start-up.
Offset X and Offset Y. If you want to laser more than one board you can shift the 0,0 origin.
Comm-port is the virtual port to use to communicate with the laser engraver. The baud-rate is fixed at 250000 or 115200, you will have to adapt that in the source code.
And the last option is for the Banggood (CE – Chinese Electronics 😉 ) laser engraver. It will skip messages M117 to the LCD-display and put the baud-rate on 9600.

There are 3 buttons, Convert, Send to laser and Quit. You can use GRBL controller software to check the input file, and after a convert, check the output file. When you hit Quit by mistake, not to worry, a confirm box will be displayed. And as an extra, the laser will be turned off when it was turned on, and after hitting NO in the confirm box lasering will continue without any problem, the software has remembered the status of the laser.

In the user interface a check if an input file exist. If it doesn’t exist, the Convert button will keep grayed-out. pcb_laser_input.nc is the name used while exporting a milling-file from Eagle. A pre-scan file is created but also deleted after use. It is called pcb_laser_output_pre.nc It is used to do some work ahead and also check the dimension of the PCB laser file (offset X as mentioned in earlier posts).

In the user interface a note about the output file and also the number of G-code lines. This will later be used to check to progress of lasering the board. Convert button will be grayed-out and the Send to laser will be enabled.