lignumCAD is a tool for designing furniture. Its primary features will be:
A notebook metaphor where each page is a view of an aspect of the design.
A sketching mode which allows rapid development of different views of a design.
2D and 3D representations can be created from a single solid geometry model.
Parametric relations between dimensions allow changes to be propagated from either the 3D solid model, 2D drawing representations or sketch views.
Joint Wizard for easily creating joints based on standard woodworking techniques.
Extensive library of easily applied molding and edge treatments.
Visualization of final design using realistic material and environment details.
Optimal layout of bill of materials on existing or recommended stock.
Full API access via a scripting language to the geometry engine and graphical user interface.
All source code available under either the GNU General Public License or the GNU Lesser General Public License.
Cross-platform compatibility based on Qt, OpenCASCADE, and OpenGL.
The following sections describe each of the major features of lignumCAD in more detail.
As of lignumCAD Version 0.2, the Sketch, Part and Assembly capabilities have been partially implemented.
When you start a piece of furniture from scratch, the best place to begin is by making some simple sketches. Sketches let you define the major dimensions of the model in a series of 2D views. My usual approach is to consider where the furniture is going to be placed and use the dimensions of the space to determine the overall size of the piece. Alternatively, you may have found a plan in a magazine and want to modify its dimensions for a particular application. The sketchbook can be used as a simple mechanical drawing aid to resize the design.
A sketch is a simple 2D drawing. It supports functions like most drawing programs, but with an emphasis on engineering drawing, including automatic dimension lines, reference lines, centerlines, and text annotation. You can define as many sketches as desired to represent multiple views of the geometry.
After laying out the major dimensions of the model, you must construct solid geometry for each of the separate parts, for example a leg or drawer front. In general, a part is anything which can be milled from a single piece of stock. The collection of parts which make up a model is usually called the bill of materials, so we want to make a solid model for each item in the bill of materials.
When you create a part, lignumCAD will offer you a library of predefined solids. You can either select a blank (such as a board or a turning) or you can select a prefabricated shape (such as a turned knob or a tapered leg). You can then adjust the overall size of the part to suit your model. You can either type in the dimensions or you can import dimensions from your sketches. Importing dimensions from the sketches reveals the power of parametric modeling. If you are consistent in your definitions of dimensions, then you will be able to modify the shape of the model from any view of it; for example, change the height of a leg on a sketch and the solid model will be recompute the size and shape of the solid part. Conversely, if you change the length of the leg in the solid part view, the sketch will adjust itself accordingly.
After creating the basic shape of the part, you can apply typical woodworking "milling" operations to it: taper a leg, drill a hole, or make a freehand cut. There will also be a library of standard edge treatments which can be applied: round-overs, chamfers, ogees.
Finally, you can assign a material to the part. Various woods and other synthetic materials will be available. With respect to wood, you can even assign a grain direction to the part. In general, the material assignment is cosmetic; the program will not do anything other display a reasonable approximation of the material texture.
Once you have constructed all the parts in the bill of materials, the next step is to collect all the parts into an assembly. For example, if you've constructed the front, sides, back and bottom of a drawer, you can assemble them into the 3D representation of the drawer. You then might take the (single) leg you've defined and replicate it three times and connect them with skirts to form another assembly. You could then collect the drawer, the leg assembly and the top together to form the complete table assembly. (The drawer and leg assemblies would then be properly called sub-assemblies.)
The next step in lignumCAD is one that I expect to be most useful: the Joint Wizard. Say you've created your drawer model by simply abutting the front, sides and back. When you build the drawer, however, you intend to use half-blind dovetails for the front and through dovetails for the back. The joint wizard will let you select two (adjacent) parts and define the joint which connects them in a general way. For example, you might say, "I want a half-blind dovetail with three tails at 9°." lignumCAD will compute the layout of the dovetails and automatically "remove" the material from the parts (i.e., it will recompute the solid geometry such that the parts' mathematical representations are similar to the final jointed pieces).
After the assembly is defined, you have a complete three-dimensional solid geometry model of the piece of furniture. The next step is to create construction drawings. A construction drawing usually consists of three orthographic (two-dimensional) views of each part in the bill of materials with sufficient dimensions to construct the object.
Construction drawings will look similar to the sketches you created initially, except for the following differences:
The relationships between parts are usually not shown. Each drawing is of a single part (of course, lignumCAD will let you show whatever you want).
In sketch mode, you cannot create redundant dimensions: for example, in a typical table design, you cannot define all three of the following simultaneously: the length of a leg, the thickness of the top and the overall height of the table. In the construction drawing, you can display each of these dimensions, however, one will be purely cosmetic.
The drawing will display details of the geometry which are not defined in the sketch. For example, if you have a table skirt and a leg connected by a mortise and tenon joint, the actual width of the skirt part will be longer (by the length of the two tenons, obviously) than was shown in the sketch.
Another useful feature of lignumCAD will be the ability to layout the parts from the bill of materials on a given set of stock. In theory, it can use existing stock or it can generate an optimal set of requirements. Needless-to-say, real lumber (and real life) are rarely so neat.
Sometimes it's helpful to understand the interaction of an object with its surroundings. lignumCAD will provide the ability to do high-quality three-dimensional rendering of models and their surroundings. You can image taking a digital photograph of the intended location of the piece and using the images to create a “virtual reality” image of the piece in place.