OpenSCAD is an application that allows you to define parts in 3D based on programming.
It is a very useful tool for anyone who designs and prints 3D parts and can be combined with other tools to make 3D models based on 2D models.

This software is available at

Last March the version 2015.03 was released, which presents a set of changes and corrections that allow to make this tool even more powerful.
These changes include the text() _ modules for 2D text, the _offset() _ module for _offsets 2D as well as the optimization/improvement of several functions such as surface(), _min() _ and _max() among others.
At the application level the aspect was greatly improved and ways of exporting to SVG and MFA were introduced. It also allows the editing of multiple files on all platforms.

This tool is very useful for accurately describing an object.

Let us assume that it is intended to describe a lever with 8mm diameter and a round handle 15mm in diameter. It should be 10cm long.

union() {
cylinder(d=8, h=100);
    sphere(d= 15);

A large set of libraries are already available to help us use OpenSCAD even faster. Examples are the nutsnbolts libraries and MCAD
The first allows you to easily create nuts and bolts with thread. The second allows, among other things, to create gears.

On the other hand and with some limitations there is also an online version written in JavaScript called OpenJSCAD that allows you to build the online models and download the object produced in various formats.
Also the Thingiverse - platform of provision of 3D objects - allows the creation of configurable objects through a program written in openscad.

Useful links: