Blender : Python :

The GPL, open-source Python program generates spherical and hyperbolic surfaces (open, one-sided) and lenses (closed, two-sided) according to user-provided options. Here's a list of the options:

Option Description
--rings Imagine a world globe. A "ring" would be a line of latitude. The same terminology is used in the Blender UV sphere dialog. Default: 32.
--segments Continuing with the globe analogy, segments would be lines of longitude. Default: 32.
--radius Lens major radius — distance from lens center to edge, 1/2 the lens' diameter. Default 1.
--depth Lens minor radius — distance from lens center to surface, 1/2 the lens' thickness. Default 0.25.
--axis Blender spatial axis along which the lens or surface will be aligned, valid arguments are x,y and z. Default is x.
--z Hperbolic curvature factor, default 11.8. See the main article for a full explanation.
--spherical No argument, the presence of this option produces a spherical curve instead of hyperbolic.
--onesided No argument, the presence of this argument produces an open, one-sided mesh, used for example to create a parabolic mirror.
--help This command may be issued from the progam run alone, without being linked with Blender. It shows a list of options much like this one.