RoboPaint for AxiDraw
RoboPaint for AxiDraw[edit]
RoboPaint is an additional program, in addition to Inkscape, that can be used to control the AxiDraw.
RoboPaint was designed for the WaterColorBot project, but is designed to work with other drawing and painting machines as well. Basic documentation about RoboPaint, including where to download the latest version, is available here.
In order to set up RoboPaint to work with AxiDraw, you will need to configure its settings. Open the Settings window within RoboPaint (you can get there by clicking the "three gears" symbol in the upper right corner of the screen. Select the "Advanced" pane (from the list on the left hand side of the screen), and scroll down until you see "type of printing bot connected". Select AxiDraw from that list. Then, quit and restart RoboPaint.
RoboPaint vs AxiDraw Control (the Inkscape extension)[edit]
How does RoboPaint compare with AxiDraw Control, the AxiDraw's primary user interface, which is integrated within Inkscape?
First, RoboPaint is a stand-alone application that runs on Mac, Windows, and Linux, whereas AxiDraw Control is built into Inkscape, a full-featured drawing program. RoboPaint includes some primitive drawing tools -- principally for moving around and resizing your artwork -- but generally requires that you create any complex artwork elsewhere.
Beyond this, in broad handwaving terms, one might say that RoboPaint tends to be a little more automatic, but less precise. For example, it can automatically fill closed shapes with ink and can detect occlusion. Suppose that your SVG drawing consisted of a white-filled circle partially overlapped with a black-filled circle, where neither circle has a visible stroke. In RoboPaint, that SVG file would draw a crescent shape. However, back in Inkscape, you would end up with two circles drawn -- The Inkscape extension follows only the paths that it is given, so you would need to subtract the two shapes (Path menu > Difference) and fill the result (Extensions > AxiDraw > Hatch Fill) in order to get the same result. On the other hand (and again, generally speaking) the Inkscape extension tends to follow the paths that you give it with greater precision, speed, and consistency.
There are many use cases where one program or the other is a better choice for a given application.
APIs in RoboPaint[edit]
An additional feature of RoboPaint is that it provides an easy interface to use several of the APIs (programming interfaces) that are available for people who wish to write programs to control the AxiDraw. (Most users do not need or use the APIs directly, but instead treat the AxiDraw as a printing device, to accept graphical data.)
The primary RESTful API for the AxiDraw is a program called cncserver. Cncserver can be run from the command line on your computer, but it is also the "engine" under the hood that interfaces between the RoboPaint GUI and the machine itself. This means that if you open RoboPaint on your computer and leave it running in the background, it automatically runs cncserver, so that you do not need to run the command line application in order to access the cncserver API. RoboPaint also has an additional "remote print" mode, which you can post a full SVG, in order to print. In addition to these two APIs, there is a third API made available by RoboPaint, which is the "Scratch" API-- a means of controlling the machine through http GET commands only.
In summary:
- The cncserver API: RESTful, provides low-level machine control. The cncserver API is documented here: https://github.com/techninja/cncserver/blob/master/API.md
- The RoboPaint remote print mode API: RESTful, provides high-level ("print") machine control. RoboPaint's remote paint API is documented here: https://github.com/evil-mad/robopaint-mode-remote/blob/master/API.md
- The "Scratch" API: uses GET only, provides an interface to low-level machine commands via web browser, or from simple programming languages (such as Scratch and Snap) that have very limited ability to interface with web APIs. The "Scratch" API is documented here: https://github.com/techninja/cncserver/blob/master/scratch/SCRATCH.API.md