rcad
Solid CAD programming with Ruby
Example:
require 'rcad'
require 'gears'
# overloaded ~ operator adds stuff to the shape
# you're working on
~sub do
~SpurGear.new(1.cm, 4.8.cm)
# make a hole for an M3 screw
~cylinder(1.cm, 3.mm)
end
# STL is written automatically on exit