I created this fork & branch to make the gcode output compatible to big CNC mills with Siemens Sinumerik controls. I want to mill my PCBs at work and there we have such machines.
This is still work in progress, so not everything is functional yet.
Only the gcode output functionality is changed, everything else is the same as in the original project.
Because pcb2gcode lacks some functionality, like setting tool names and using those to select the tool instead of a number, it is still necessary to edit the gcode in an editor afterwards. Also some axis/channel names might be different between machines so you might have to change those in the source code before compiling, or replace them every time in the resulting gcode files.
My target machine has a Sinumerik 828D control from ~2018 with touch screen (yes, the model numbers of Siemens controls aren't unique, the same model can be 3-4-5 different controls, from equally many generations; yes, this sucks).
pcb2gcode is a command-line software for the isolation, routing and drilling of PCBs. It takes Gerber files as input and it outputs gcode files, suitable for the milling of PCBs. It also includes an Autoleveller, useful for the automatic dynamic calibration of the milling depth.
pcb2gcodeGUI, the official GUI for pcb2gcode, is available here.
If you find this project useful, consider donating money to charity.
This development version of pcb2gcode does not get into repositories of distros. If you want to test this version, you will have to go to the section below (installation from GIT).
- pcb2gcode stable ->
https://aur.archlinux.org/packages/pcb2gcode/
- pcb2gcode git ->
https://aur.archlinux.org/packages/pcb2gcode-git/
-
Download the latest tarball from https://github.com/pcb2gcode/pcb2gcode/releases
-
Open a terminal and cd to the extracted tarball
-
type the following:
su <the root password> yum groupinstall "Development Tools" yum install automake autoconf libtool boost-devel gtkmm24-devel gerbv-devel exit ./configure make su -c 'make install'
-
done.
There are pcb2gcode packages in the official repositories. You can install the with
sudo apt-get install pcb2gcode
Unfortunately, these packages are seriously outdated. If you want to download the latest development version, go to "Installation from GIT".
Windows prebuilt binaries (with all the required DLLs) are available in the release page.
pcb2gcode is available in Homebrew. To install it open the "Terminal" app and run the following commands; pcb2gcode and the required dependencies will be automatically downloaded and installed:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install pcb2gcode
If you want to install the latest version from git you'll need the autotools, Boost with the program_options library (dev, >= 1.56), gtkmm2.4 (dev) and libgerbv (dev).
Unfortunately pcb2gcode requires a rather new version of Boost (1.56), often not included in the oldest distros (like Ubuntu < 15.10 or Debian Stable). Moreover Boost 1.56 sometimes freezes pcb2gcode, while Boost 1.59, 1.60 and 1.61 are affected by a program options bug. You can download a working version of Boost (1.57 and 1.58 work well) and build it manually with:
$ ./bootstrap.sh --with-libraries=program_options --prefix=<somewhere>
$ ./b2 variant=release link=static
$ ./b2 install
Then add --with-boost=<boost install directory> --enable-static-boost
to the ./configure
command.
To build with coverage outputs, add --enable-code-coverage
to ./configure
and then later run make check-code-coverage
to run unit tests to collect coverage. The last line of the output will include a URL to view the coverage.
Ubuntu 12.04 does not include gcc 4.8 (needed for the C++11 support); you can install it with:
$ sudo apt-get update
$ sudo apt-get install software-properties-common python-software-properties
$ sudo add-apt-repository "ppa:ubuntu-toolchain-r/test"
$ sudo apt-get update
$ sudo apt-get install g++-4.8
$ export CXX=g++-4.8
$ sudo apt-get update
$ sudo apt-get install build-essential automake autoconf autoconf-archive libtool libboost-program-options-dev libgtkmm-2.4-dev gerbv git librsvg2-dev
$ git clone https://github.com/pcb2gcode/pcb2gcode.git
$ cd pcb2gcode
Then follow the common build steps
su
<the root password>
yum groupinstall "Development Tools"
yum install automake autoconf libtool boost-devel gtkmm24-devel gerbv-devel git
exit
Then follow the common build steps
$ autoreconf -fvi
$ ./configure
$ make
$ sudo make install
You can easily build pcb2gcode for Windows with MSYS2 (http://sourceforge.net/projects/msys2/). Download MSYS2 and install it somewhere, then run "MinGW-w64 Win32 Shell" (if you want a i686 binary) or "MinGW-w64 Win64 Shell" (if you want a x86_64 binary). The following commands are for the i686 binary, if you want the x86_64 binary replace all the "/mingw32" with "/mingw64" and all the mingw-w64-i686-* packages with mingw-w64-x86_64-*
$ pacman -Sy
$ pacman --needed -S bash pacman pacman-mirrors msys2-runtime
Close and reopen the shell
$ pacman -Su
$ pacman --needed -S base-devel git mingw-w64-i686-gcc mingw-w64-i686-boost mingw-w64-i686-gtkmm
Now let's download, build and install gerbv (version 2.6.1 is broken, don't use it)
$ wget downloads.sourceforge.net/gerbv/gerbv-2.6.0.tar.gz
$ tar -xzf gerbv-2.6.0.tar.gz
$ cd gerbv-2.6.0/
$ ./configure --prefix=/mingw32 --disable-update-desktop-database
$ make
$ make install
Finally, download and build pcb2gcode
$ cd ..
$ git clone https://github.com/pcb2gcode/pcb2gcode.git
$ cd pcb2gcode/
$ autoreconf -fvi
$ ./configure --prefix=/mingw32
$ make LDFLAGS='-s'
The dynamically linked binary is <msys2 installation folder>/home/<user>/pcb2gcode/.libs/pcb2gcode.exe. You can find all the DLLs in <msys2 installation folder>/mingw32/bin; copy them in the same folder of pcb2gcode. The required DLLs are:
- libatk-1.0-0.dll
- libboost_program_options-mt.dll
- libbz2-1.dll
- libcairo-2.dll
- libcairomm-1.0-1.dll
- libexpat-1.dll
- libffi-6.dll
- libfontconfig-1.dll
- libfreetype-6.dll
- libgcc_s_dw2-1.dll (for the i686 binary)
- libgcc_s_seh-1.dll (for the x86_64 binary)
- libgdkmm-2.4-1.dll
- libgdk_pixbuf-2.0-0.dll
- libgdk-win32-2.0-0.dll
- libgerbv-1.dll
- libgio-2.0-0.dll
- libglib-2.0-0.dll
- libglibmm-2.4-1.dll
- libgmodule-2.0-0.dll
- libgobject-2.0-0.dll
- libgtk-win32-2.0-0.dll
- libharfbuzz-0.dll
- libiconv-2.dll
- libintl-8.dll
- libpango-1.0-0.dll
- libpangocairo-1.0-0.dll
- libpangoft2-1.0-0.dll
- libpangomm-1.4-1.dll
- libpangowin32-1.0-0.dll
- libpixman-1-0.dll
- libpng16-16.dll
- libsigc-2.0-0.dll
- libstdc++-6.dll
- libwinpthread-1.dll
- zlib1.dll
You can build the latest pcb2gcode version with Homebrew. If Homebrew is not installed yet, install it with the following command:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
You might need some build tools that typically are not present:
$ brew install autoconf automake libtool
Then you can download and build the git version with
$ brew install --HEAD pcb2gcode
or (if pcb2gcode is already installed)
$ brew upgrade --HEAD pcb2gcode
For further details, see INSTALL.
You can use the insolante docker image to use this tool throught a web interface. This project is under active development and need your feedback but give it a try and let us know.
You can find it in dockerhub for arm and x64 architecture. The current embedded version of pcb2gcode is 2.1.0.