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:
- Shapeoko 3 Hello World --- this gets one started w/ writing out the machine's name using pre-generated G-code --- Shapeoko 2: Hello World
- First Job --- milling a first object, a coaster out of cork, after drawing it up in MakerCAM, cf., Run Your Second Job
Regardless of which software toolchain you are planning to use, please read and review the above tutorials, since they cover the basics of the processes involved and introduce the relevant terminology. If anything is unclear, please refer to the Glossary.
In addition, you may wish to try these alternative tutorials which show the usage of various other programs:
- 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 instead of a special-purpose CAD program.
- Inkscape is the typical choice for beginning CAD and vector drawing.
A number of different file formats are used for exchanging 2D and 2.5D part files:
- DXF --- data exchange format, a CAD-specific format, feature support varies by version
- SVG --- while scalable vector graphics were intended for web / on-screen usage, their RGB nature does not limit their usage for CAD/CAM as it does for print. A useful utility for them is: https://jakearchibald.github.io/svgomg/
3D CAD programs will define geometry in one of three ways:
- Point Clouds --- typically these are generated by 3D scanning and are difficult to edit.
- Polygon Meshes --- triangles connected so as to define a polygonal 3D area. Typically stored as .stl files and often used for 3D printing.
- Surfaces/NURBS --- shaped defined by curves. Resolution independent and easily edited.
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. G-code is provided for your first job, so you don't need to worry about CAM while setting up your machine. It is also possible to programmatically generate G-code or to generate it using an interactive system.
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.
Some communication / control program (see below) include previewing functionality --- it is recommended that one utilize that function in Universal G-Code Sender to begin.
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.
- Carbide Motion, a QT program that will run on Windows and Mac OS X will be the communication / control software for Shapeoko 3.
- Universal-G-Code-Sender, a Java program that will run on Windows, Linux and Mac OS X is the typical communication / control software choice.
Note: some programs directly control the machine rather than sending G-code to an interpreting controller, so are listed on the Communication / Control page.
Communication / Control is at the heart of how a CNC operates, as described in this 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.
Another alternative as noted above is to use a previously written program which is interactive. This style of usage is also termed “conversational” programming and is featured on some commercial machines.
There are a number of utility programs for various tasks, such as scaling, rotating, and various other sorts of post-processing.
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 (and other) Conversion programs
- http://sourceforge.net/projects/dxf-svg-convert/ --- A dxf to svg converter. Can be used to create pure svg files or Inkscape svg files with extra information like layers.
- http://kyllikki.github.io/png23d/ 3d mesh generation tool will convert a PNG to a .stl or OpenSCAD
One interesting option is to chain utilities together to create a virtual printer which will convert to a .dxf under user control: http://gpl.coulmann.de/cnc/dxf-printer.html
Mac OS X
While all of the above works on Mac OS X, there aren't many documented OS X-centric workflows. One such was written up here: Re: Linux vs OSX to TinyG.
Please note that commercial software, as well as otherwise free programs, which have significant licensing limitations have been moved to their own page.