Chips Project


The Chips project is a project to put together a usable CAD/CAM (Computer Aided Design/Computer Aided Manufacturing) system for the Linux platform.

When it comes to CAD/CAM, there are two basic strategies -- separate CAD and CAM tools and integrated CAD/CAM tools.

Separate CAD/CAM
When the CAD/CAM tools are separate, the first task is to design a part using a CAD system. The part design specifies all of the important characteristics of the part, its material, its demensions, positions of holes, thread pitches, surface smoothness, etc. It does not in any way specify how the part is to be manufactured. That is role of the CAM post processor, which takes the CAD part specifications and helps convert them into a sequence of manufacturing steps that will ultimately cause the specified part to be produced.
Integerated CAD/CAM
When the CAD/CAM tools are integrated, the manufacturing process is part of the design. Thus, the ultimate part includes as part of its design, the sequence of manufacturing steps required to manufacture the part.
The Chips project is definitely an integrated CAD/CAM system. The basic concept is that Chips consists of a library of relatively high level routines like, drill a hole, mill out a pocket, cut an outline, etc. The user specifies a sequence of these operations that when executed in order result in the finished part.

In greater detail, the user writes a program for each part. In preview mode, Chips allows the user to preview the part in 3D on the screen after each manufacturing step (i.e. drill a hole, mill a pocket, etc.) Once the user is satisfied with the 3D part, Chips is put into production mode where it either generates an industry standard (sort of) RS-274 (i.e. G code) file, or Chips can be made to produce a file called a timed position file that can be consumed by one of my table top CNC controllers.

Since the part is manufactured using high level routines, it is possible to use the same program to manufacture the same part on significantly different CNC machines. For example, both Bridgeport and a Sherline are capable of manufacturing small parts. However, the Bridgeport is a stiffer machine with signicantly stronger motors. Thus, the Bridgeport can "hog" out metal significantly faster than the CNC Sherline. By taking into account the different metal removal rates of the two different machines, the Chips high level routines can produce customized instructions for the two different machines. Hence, the CNC Bridgeport will make the part faster, than the CNC Sherline; ultimately the two produced parts should be interchangable.

More Details

{A lot more details need to go here.}


Chips is assembled out of the following pieces:

OpenGL/Mesa (C)
The OpenGL library is a library that was initially promoted by Silicon Graphic, Inc. The open source Mesa project has largely reproduced the functionality of OpenGL without having to pay for OpenGL certification.
The Graphics Library Utilities (GLU) library has a bunch of routines for doing triangle tessellation and the like. The GLU library is usually included with the OpenGL/Mesa library.
The Graphics Library User Toolkit (GLUT) is a platform independent window system for OpenGL/GLU. It is not clear whether or not I'm using the original implementation of GLUT or the FreeGLUT implementation.
GLUI (C++)
The Graphics Library User Interface (GLUI) is a platfrom independent set of widgets based on top of OpenGL/GLU/GLUT. It has labels, check boxes, radio buttons, entry fields, etc.
The Gnu Triangulated Surface library is a bunch of routines that allow people to represent solid objects as a bunch of interconnected triangles. In particular, the GTS provides so called Constructive Solid Geometry (CSG) boolean primitives such as union, intersection, and difference.


The RoboStrut Jig is an example of the Chips library in action.

Copyright (c) 2002-2003 by Wayne C. Gramlich. All rights reserved.