GerbMerge -- A Gerber-file merging program
Rugged Circuits LLC
|Top-Level | The Configuration File | The Layout File | Automatic Placement||Version 1.8|
|June 8, 2011|
|Requirements | Installation | Running GerbMerge | Verifying the Output | Limitations | Program Options | Copyright | To Do | Credits | History|
In release 1.8:
In release 1.7:
GerbMerge is a program for combining (panelizing) the CAM data from multiple printed circuit board designs into a single set of CAM files. The purpose of doing so is to submit a single job to a board manufacturer, thereby saving on manufacturing costs.
GerbMerge currently works with:
GerbMerge is written in pure Python. It depends upon the following packages for operation:
All of the above packages come with easy installation programs for both Windows, Mac OS X, and Linux.
First, install all of the packages listed above in the Requirements section.
Run the gerbmerge1.8.exe installation program. I will assume you choose all of the default installation options. The installer will create and populate the following directories:
The above assumes you have Python installed in C:\Python24. The first directory is where the actual program resides. The second directory contains the documentation, example files, etc. In the C:\Python24 directory is a sample batch file GERBMERGE.BAT which shows you how to run the GerbMerge program.
Extract the gerbmerge1.8.tar.gz file then install as follows:
The installer will create and populate the following directories/files:
/usr/local/lib/python2.4/site-packages/gerbmerge /usr/local/lib/python2.4/gerbmerge /usr/local/bin/gerbmerge
The above assumes your Python library directory is as indicated (it may be elsewhere but the installer should be able to find it, so don't worry about it). The first directory is where the actual program resides. The second directory contains the documentation, example files, etc. A sample program for invoking GerbMerge is installed as /usr/local/bin/gerbmerge...feel free to move it somewhere else.
Not all Linux distributions are the same, however. If you have trouble, there is a useful set of instructions from Chetan Bhargava for installing GerbMerge on Ubuntu distributions.
Open a DOS box and invoke the Python interpreter on the gerbmerge.py file. Have a look at GERBMERGE.BAT (and put this on your Path somewhere) for an example.
You run GerbMerge by invoking the Python interpreter on the gerbmerge.py file of the gerbmerge package. For example:
The gerbmerge shell script that comes with this software contains an example for running GerbMerge, modelled on the above. By default, this shell script is installed in /usr/local/bin so you should just be able to type gerbmerge from a shell prompt.
The configuration file specifies global options and defines the jobs to be panelized
The layout file specifies how the jobs are to be laid out.
The names of these files are the two required parameters to GerbMerge:
gerbmerge file.cfg file.def
The following links describe the contents of the configuration file and layout file.
For the manual absolute placement approach, GerbMerge also needs the configuration file as well as another text file that specifies where each job is located on the panel and whether or not it is rotated:
gerbmerge --place-file=place.txt file.cfg
The place.txt file looks something like:
job1 0.100 0.100 cpu 0.756 0.100 cpu*rotated 1.35 1.50
This method of placement is not meant for normal use. It can be used to recreate a previous invocation of GerbMerge, since GerbMerge saves its results in a text file (whose name is set in the [MergeOutputFiles] section of the configuration file) after every run. Thus, you can experiment with different parameters, save a placement you like, do some more experimentation, then return to the saved placement if necessary.
Alternatively, this method of placement can be used with third-party back ends that implement intelligent auto-placement algorithms, using GerbMerge only for doing the actual panelization.
For the automatic placement approach, GerbMerge only needs the configuration file:
Command-line options can be used to modify the search algorithm. See the Automatic Placement page for more information.
Each job must have a Gerber file describing the board outline, which is assumed rectangular. In Eagle, a board outline is usually generated from the Dimension layer. This board outline is a width-0 line describing the physical extents of the board. If you're not using Eagle, you don't have to generate a width-0 rectangle, but GerbMerge does need to use some Gerber layer to determine the extents of the board. GerbMerge will take the maximum extents of all drawn objects in this layer as the extents of the board.
Each job must have an Excellon drill file.
Each job can have any number of optional Gerber files describing copper layers, silkscreen, solder masks, etc.
All files must have the same offset and must be shown looking from the top of the board, i.e., not mirrored.
Each job may have an optional tool list file indicating the tool names used in the Excellon file and the diameter of each tool. This file is not necessary if tool sizes are embedded in the Excellon file. A typical tool list file looks like:
T01 0.025in T02 0.032in T03 0.045in
Before sending your job to be manufactured, it is imperative that you verify the correctness of the output. Remember that GerbMerge comes with NO WARRANTY. Manufacturing circuit boards costs real money and a single mistake can render an entire lot of boards unusable.
I recommend the following programs for viewing the final output data. Take the time to become very familiar with at least one of these tools and to use it before every job you send out for manufacture.
gerbv merged.*.ger merged.*.xln
For Windows, GC-Prevue is a good program that I have used often. It is a free program. GraphiCode makes lots of other, more powerful Gerber manipulation and viewing programs but they are quite pricey ($495 and up).
Another free Windows program, ViewMate is similar to GC-Prevue. I have not used ViewMate much, but that is mostly due to familiarity with GC-Prevue. The two programs are comparable, although I'm sure that someone who is much more familiar with both could point out some differences.
If you have the need/motivation to adapt GerbMerge to other CAD programs, have a look at the gerber2pdf program. It is written in Python and implements a much more complete RS274-X input file parser. Combining GerbMerge with gerber2pdf should be a fairly simple exercise. Also, feel free to send us samples of Gerber/Excellon output of your CAD tool and we'll see if we can add support for it.
This program handles apertures that are rectangles, ovals, circles, macros without parameters or operators, and Eagle octagons (which are defined using a macro with a single parameter, hence currently handled as a special case).
The panelizing capabilities of this program do not allow for arbitrary placement of jobs, although there is a fair amount of flexibility.
All jobs are assumed to be rectangular in shape. Non-rectangular jobs can be handled but will lead to wasted space in the final panel.
A maximum of 26 different drill sizes is supported for generating a fabrication drawing.
The --octagons=normal option is the default (22.5 degrees) and need not be specified. A rotation of 0.0 degrees can be achieved by specifying --octagons=rotate.
Copyright © 2011 Rugged Circuits LLC. All Rights Reserved. mailto: email@example.com
GerbMerge comes with ABSOLUTELY NO WARRANTY. This is free software licensed under the terms of the GNU General Public License Version 3. You are welcome to redistribute this software under certain conditions. For more details, see the previous link or visit The Free Software Foundation.
Thanks to Jace Browning for major contributions to this code. This help file is based on a template for the help file for mxTools by M.A. Lemburg. This software was created with VIM; thanks to the authors of this program and special thanks for the Python syntax support. Thanks to M.A. Lemburg for his mxBase package, Mike Fletcher for his SimpleParse package, and the authors of gerbv, a great Gerber file viewer for Linux/Mac OS X, and, of course, to the Python developers and support community.
Thanks to Joe Pighetti for making me start writing this program, and to the Grand Valley State University Firefighting Robot Team for making me finish it.
Thanks to Matt Kavalauskas for identifying Eagle's annulus and thermal macros and supporting the development of the aperture macro code.
Thanks to Bohdan Zograf for the Belorussian translation of this documentation.
Thanks to Agnessa Petrova for the Ukrainian translation of this documentation.