cad.py is a CAM program that can be used to generate g-code tool paths for milling 2D and 3D objects. It operates on images instead of vector formats like Gerber, DXF, or SVG, so you'll have to export your board/object as a PNG image first. For larger objects without very fine features 200-300 dpi is fine, but for circuit boards I use 1000 dpi.
This page describes the general process.
cad.py was written by Neil Gershenfeld of the MIT Center for Bits and Atoms. I've modified Neil's latest version to implement the "Original start, global optimization, original Z motion" algorithm described on this page. In some cases this optimization reduces the milling path length by 50% or more.