Today I wrote a multiplier of gerber/excellon files (250 lines of C-code)
Source code under GPL3 is available on the same place of SourceForge:
http://nedopc.cvs.sourceforge.net/viewvc/nedopc/src/grb2gif/
Usage:
grb_mul filename NX NY
The program takes these list of files:
filename.ovl - board dimension (Gerber)
filename.top or
filename.L1 - top layer (Gerber)
filename.L2 (optional) - middle upper layer (Gerber)
filename.L3 (optional) - middle lower layer (Gerber)
filename.bot or
filename.L4 - bottom layer (Gerber)
filename.smt - top solder mask (Gerber)
filename.smb - bottom solder mask (Gerber)
filename.slk - top silckscreen (Gerber)
filename.drd - drills (Excellon)
and creates for any existing files from that list multiplied version NX x NY - for example if NX=1 and NY=3 it will create 3 copies one above another with suffix
_1x3 (as filename_1x3.top etc.)