The ADG cairo canvas
The ADG library (Automatic Drawing Generation) is a set of functions focused on automating the drawing of mechanical parts.
It is not a CAD system but a software library providing a non-interactive canvas where a custom application can put common CAD entities such as paths, hatches and dimensions, to automatically create technical drawings.
When different parts share a similar shape, a custom application can be much more effective than the traditional way of manually drawing every part with a CAD. In some production factories, such as the automotive sector, this is quite common. Nozzles, elements, nuts, valves, needles and a lot of other parts fall into this category.
You can reach similar targets by using parametric CADs, but a custom application provides the following benefits:
you are not tied to a single interface nor forced to interact with the user: you have a lot of ways for feeding the same application logic;
if you have to create an application from the ground: you can do whatever you want;
not so bloated as a parametric CAD
this honestly depends on the application but, talking in general, ADG doesn't have a lot of stuff a CAD system must have (such as the interaction with the user);
can be easily connected to a database
the model-view separation greatly improves the connectivity of the application;
the drawings can be generated on the fly
the canvas does not enforce user interaction: this feature can be used in a dynamic site or in a web-based application by automatically generating the drawing only when the page is accessed, giving an always up to date website.
Although ADG is developed in C using an object-oriented approach, the applications based on it are expected to be developed using higher-level languages.
Its components (such as model handling, user interface support and drawing customization) are fully decoupled, making possible for instance to build the project on a headless server for web applications support. Check out the Technical details page for further information.
The project is cross-platform. It is known to build on various flavour of GNU/Linux systems (Arch linux, Slackware and Ubuntu), FreeBSD, OpenSolaris and Windows XP (either by cross-compiling or by natively building it on a MinGW32 system).