You'll go through five steps in creating a part with your ShapeOko.
- Design the part in a CAD (Computer Aided Design) system.
- Generate the G-Code that will drive your ShapeOko using a CAM (Computer Aided Manufacturing) program.
- Check that g-code to ensure it does what you want in an efficient manner.
- Send the g-code from your PC to the controller for your ShapeOko.
- Interpret the g-code to drive the stepper motors (some systems combine these last two steps).
In order to keep things simple, we've moved most of the software information to specific sub-pages linked from the headers below. The basics are covered in:
- Run Your First Job --- this gets one started w/ writing out the machine's name using pre-generated G-code
- Run Your Second Job --- milling a first object, a coaster out of cork, using pre-generated G-code
- Basic workflow 2D --- Using Inkscape to set some text, HeeksCNC to convert it to G-code and OpenSCAM to preview it
- Basic workflow 3D --- Creating a part using an opensource CAD application, exporting it as an stp file and processing it using HeekSCNC and OpenSCAM
CAD programs are high precision drawing programs. They can be used to create diagrams, models, and circuits. Different programs are best suited for particular tasks, and it's also possible to use a general-purpose vector drawing program such as Inkscape instead of a special-purpose CAD program. Edward created the design for the first job, so no need to worry about CAD until after your machine is working and you're ready to design something.
CAM programs read files from a CAD program and create G-code from it. G-code is the standard way of specifying the movements of a CNC machine. Some programs combine CAD and CAM in a single program. There are also web sites which are able to provide CAM functionality from basic files such as MakerCAM. G-code is provided for your first and second jobs, so you don't need to worry about CAM while setting up your machine. It is also possible to programmatically generated G-code.
Verifying and optimizing your G-code is optional, but can be helpful. The verification step checks to be sure the G-code performs the right operations, does it in a logical order, and doesn't send the tool anywhere you don't want it (like through the piece you're making). The optimization step attempts to create G-code that gets the job done as quickly as possible, removing unnecessary steps and sequencing the movements in an order that minimizes extra movement.
At the minimum, a G-code sender program will send G-code commands from the PC to the Arduino. Some G-code sender programs can do a lot more, such as allowing you to "zero" the CNC machine and visualize the path of the tool. You will need a program to do this, either one listed below, or from the communication / control page.
- GcodeSender by Otto Hermansson is a simple to use application for Windows PCs.
- Grbl Controller by Kosme/Zapmaker is a GUI application for Mac, Windows and Linux to send G-code programs and adjust the machine. It is written in C++ using the Qt cross-platform framework.
- Universal-G-Code-Sender by Will Winder is a port of GcodeSender that will run on Windows, Linux and Mac.
Note: some programs directly control the machine rather than sending G-code to an interpreting controller, so are listed on the Communication / Control page.
This is the final step in the process. The standard G-code interpreter for ShapeOko is a program called GRBL that runs on the Arduino. GRBL takes the G-code instructions sent by a Communication / Control program, interprets them, and outputs electrical signals through the stepper shield to the stepper motors.
GRBL is a free, open source, high performance, CNC milling controller; written in optimized C that will run on a straight Arduino. The basic documents here assume you will need to have GRBL installed on your Arduino when running your first job.
Some users may find writing programs to achieve certain designs more efficient. In addition to the programs listed on the Programmatic G-Code Generators page, OpenSCAD is a CAD tool which uses a programming language as its interface.
Note: Please note that there are also conversion tools which may be useful. These are listed in various sections, depending upon their input--output. Of especial note are:
- ps2gc (programming) --- converts from PostScript to G-Code
- grecode (programming) --- converts G-Code to G-Code but allows shifting, rotation, mirroring, &c.
- DXF Conversion programs
Please note that commercial software, as well as otherwise free programs, which have significant licensing limitations have been moved to their own page.