-
Notifications
You must be signed in to change notification settings - Fork 16
Design Overview
MonkeyCAM is a Computer Aided Machining (CAM) system which generates G-Code programs to cut materials and parts for skis and snowboards. G-Code programs describe toolpaths: the path through 3D space that the tip of the cutting head follows on its way to producing a finished part. Toolpaths are ultimately just a simple list of 3D coordinates. Forming these lists of coordinates accurately and quickly is the heart of MonkeyCAM, and is what this guide will describe.
This guide is intended for people who want to modify and enhance MonkeyCAM. It assumes a familiarity with the following:
- Basic geometry; how to graph equations for lines, arcs, etc.
- Basic G-Code. MonkeyCAM uses mostly straight lines, not arcs or other advanced G-Code features.
- Basic machining practices: cutters and their capabilities, speeds and feeds, work holding, etc.
- The fundamentals of ski and snowboard construction; the major parts involved, the kinds of materials used, how they fit together.
- C++11
- Git and GitHub
The input to MonkeyCAM is a set of parameters describing the shape of the board and the machine and tool definitions. From these parameters we do the following:
- Generate the Overall Shape of the board. This is the true, final shape of the ski or snowboard when completely finished. This shape is represented by a 2D Path which represents the ordered list of coordinates forming the outline of the Overall Shape.
- Transform the Overall Shape into a Core Shape, which represents the final 2D shape of the wood core of the board. This is done using offsetting operations to make portions of the Overall Shape larger or smaller by a fixed amount, and using boolean operations to trim or extend portions of the shape.
- Form a variety of 2D paths which represent various parts. E.g., the base material needs to be 2cm narrower all the way around than the Overall Shape to allow for 2cm wide steel edges, so the Overall Shape is offset inward by 2cm to form the Base Shape.
- Further form 2D paths which become toolpaths. If the base material will be cut with a .250" diameter cutter, then the Base Shape is offset outward by 0.125" to account for the radius of the cutter.
- Turn 2D paths into 3D paths by deforming or offsetting the Z value of the points in the path. If the base material is 2cm thick, then we would set the Z value of the nascent base toolpath to -2cm plus some allowance for machining error, say another 0.010".
- Turn 3D paths of raw points into 3D G-Code toolpaths, wrapped with reasonable start and stop blocks to form a complete G-Code program.
The final output consists of a set of G-Code files on disk, plus a HTML overview file which shows many of the shapes and G-Code programs graphically, in 2D.
This guide will go into details of how the shapes are formed via basic geometry, offsetting, and boolean operations on polygons, how we turn those into G-Code, and how some of the major parts are formed and why.
The MonkeyCAM Wiki is licensed under a Creative Commons Attribution 4.0 International License.