From DigitalCraft_Wiki
Jump to navigation Jump to search

Course Intro

From Mimicking Machines to Modifying Machines

Many of today’s Digital-Fabrication tools share a common underlying framework. Pen plotters, CNC routers and mills, and 3D printers all use similar techniques for controlling precise movement in an automated way. Understanding the basics of the components, electronics, and software that control these machines can give the possibility to modify and design machines toward new processes and outputs. Mimicking Machines will explore the interplay between the output a machine can produce, and the process of making the machine itself.

During the initial working sessions, we will as a group build two CNC Drawing machines, and go through the process of translating a vector drawing into a “tool-path” that the machine can follow.

After building the machines, we will work in small groups to create add-ons, modifications, and new machine-made results. The machines we will be building are low cost and easily repaired, they can quickly become a platform for experimentation: What can we do with a machine that can be placed on any surface, and draw with any tool?

Jumping into the technical production of a simple CNC machine will give the skills and knowledge to reposition what is typically considered a “digital-fabrication machine” into a flexible tool to be experimented with, modified, and repurposed. Ultimately, this interplay between understanding the machine’s capabilities and creating it’s ‘tooling’ will lead to unique and varied machine-made artifacts.

Methods and Meetings

The course will be divided into two phases:

  • Phase 1: Building the machine.
  • Phase 2: Using the machine.

During the first phase, we will work together to produce two copies of the 4xi-draw pen plotter (an open source variant of the commercial AxiDraw). This phase will give a basic technical understanding of CNC manufacturing, and the opportunity to work together in a hands-on workshop format with digital fabrication tools and electronics.

In the second phase, the machines will be used, modified, and experimented with to create new processes and results. Supported by your knowledge from phase one, you will work in small teams to define and realize a modification and result produced from the machine. This could range from designing a typeface for a specific pen or marker, to developing a new tool for digital-drawing (See Examples and References below).


Week Date Time Location Subject
1 11 May 2017 10:30 - 12:10 (+ optional mentoring till 13:00) Prototyping space Intro and 3D printing
2 18 May 2017 10:30 - 12:10 (+ optional mentoring till 13:00) Prototyping space Machine Building: Movement and Mechanics / Modification Concepts
3 24 May 2017 No Class - School Holiday
4 1 June 2017 10:30 - 12:10 (+ optional mentoring till 13:00) Prototyping space Machine Building: Electronics and Software
5 8 June 2017 10:30 - 12:10 (+ optional mentoring till 13:00) Prototyping space Production
6 15 June 2017 10:30 - 12:10 (+ optional mentoring till 13:00) Prototyping space Production
7 20 June 2017 18:00 - 20:00 Prototyping space Demo Evening


  • ‘Blank-Slate’ Plotting Machines

During the first Phase of the course, the group will produce two working pen-plotters based on the open-source “4xi Draw” project. The production will be distributed amongst the group, so it is essential that each component is created with precision and care, and that steps taken are clearly documented. The resulting documentation, produced for the course wiki should be a vast improvement over the current documentation for the ‘4xi-Draw’.

  • Modification Concept and Realization

The second Phase will require producing an add-on or modification to the machine that introduces a new drawing-process. You will work in small groups to create proposals for how these add-ons can be created, and what results they can generate. The physical add-on will be well-crafted, and suited to the process and results it is intended to produce.

  • Machine-Created Outcomes

Based on the add-on created in your group, you will each produce samples, tests, etc. which demonstrate the potential of the tool you have developed. Process and outcome should be clearly documented.

  • Documentation

Technical realization, conceptual development, and production process well documented on your personal Wiki - clear documentation of the build-process steps of the plotter - concepts and ideas for machine modification and add-ons, and production of the (group) add-on - testing and designing for the add-on - final samples

Assessment Criteria

  • Concept Development and Realization : The student has demonstrated the ability to develop a clear concept proposal and is able to translate the concept into a well executed physical outcome.
  • Experimentation: The student has demonstrated a thorough experimentation process including documentation of failures and successful developments.
  • Attendance / Participation: The student has constituently attended group meetings and contributed to group assignments.
  • Documentation: The student has created high quality documentation of all project phases, from development to final outcome.


Drawing Machine And Software Documentation:

Examples and References:

Getting Started With the Machine

Installing Software

Install Inkscape

  • go to: https://inkscape.org/en/download/mac-os/ and follow the instructions to install.
  • To run, inkscape requires XQuartz: you will need to install this as well. Details are in the instructions on the inkscape download pate.

Install Universal Gcode Sender

  • go to: https://winder.github.io/ugs_website/download/ and select the newest version under “Releases”
  • UGS is built as a cross-platform executable java application (.jar).
  • Double-clicking the “UniversalGcodeSender.jar” file will open the application

Install the Inkscape plugin for exporting Gcode files.

  • go to: https://github.com/misan/laser-gcode-exporter-inkscape-plugin
  • Download the files by clicking the green “Clone or Download” button.
  • Navigate to the folder where you installed inkscale, and right-click on the application.
  • Select “Show Package Contents”
  • Then, navigate to: Content > Resources > share > inkscape > extensions
  • copy these two files into the extensions folder:
    • turnkeylaser.inx
    • turnkeylaser.py

Preparing Drawing and Exporting Gcode

Inkscape Inkscape is an open source vector graphics editing program, similar to Adobe Illustrator. Vector graphics can be created directly in Inkscape with drawing tools, or imported.

  • To Start:
    • Open a new document
    • in File>Document Properties, set the page size to A4 (landscape) and the units to px.
    • Create your drawing.
  • To Import from Adobe Illustrator:
    • In illustrator, save your files as .svg
    • In your inkscape document, select File>import and navigate to your saved .svg
  • Prepare file:
    • Before exporting the Gcode, make sure that:
      • the document units are set to px (can be changed in “File” > “Document Properties”.
      • the drawing is composed of strokes with no fill (by default the stroke and fill for selected objects is shown at the bottom left of the screen)
      • that objects, such as text, are expanded to paths (for example, select text, then choose from the menu “Path” > “Object To Path”
  • Exporting the Gcode
    • Select the paths to be drawn.
    • From the menus, choose “Extensions” > “Export” > “Turnkey Laser Exporter...”
  • In the popup:
    • Set “Y Axis Origin” to Bottom Left
    • Enter a name for the file
    • Uncheck “Home X and Y Before” and “Home X and Y After”
    • Set units to “mm”
    • Click Apply

If all goes well, a popup should appear with a list of vectors to be cut.

Operating The Machine

Zero Position / Paper

  • Place the paper such that the long edge is parallel to bars between the motors of the machine.
  • While the machine is still off, move the pen carriage to the far left, and extended as far away from the motors as far as possible.

(the pen should be over the lower left corner of your paper.)

  • Secure the paper in place with some tape, pins, etc.


  • Connect the USB cable from the Arduino to your computer
  • Connect the 12v power supply to the arduino.


  • Open the universal G Code Sender app, and connect to the machine:
    • Select the Arduino from the port menu (It should be something like “/dev/tty.usbmodel1421”
    • Selecting the Baud “115200” from the dropdown list
    • press “Open”

Set Zero Position

  • Select the “Machine Control” Tab: You can now control the position of the machine with the X+ / X-, Y+ / Y- buttons.
  • Make sure the cartridge is at the zero position (lower left corner of paper).
  • Click “ Reset Zero”

Load and Send File

  • Go to the “File Mode” tab and click “Browse”
  • Select the gcode file you generated from inkscape.
  • Optionally, click the visualize button to see the paths the machine will trace - the Yellow line represents the tool.
  • Click “Send” to start the machine.
  • After the drawing has finished, click “Return to Zero” in the “Machine Control” Tab.

Some things to Keep in Mind

No endstops

  • There are no end-stop switches to tell the machine when it has reached the boundry of its movement area. If the drawing in the g-code is outside of the machine dimensions, the machine will still try to travel to that point (and run into its limitations). If this happens, just click “Pause” and “Cancel” on the File Mode tab. Or press the reset Button.
  • If this happens, Be sure to re set the zero position by placing the pen at the home position and clicking “Reset Zero” from the “Machine Control” tab

Reset Button

  • There is a physical reset button on the top corner of the electronics. Pushing it will instantly stop the machine.
  • To start again, you must Close and re-Open the connection to the machine, and reset the Zero position.

Pen Controls

  • There are special gCode commands for moving the Pen up and down. You can enter commands in the “Command” tab:
    • “M3S0” Moves the pen all the way down
    • “M3S90” Moves the pen all the way up.
    • The number after the S is the angle of the servo, so any value between 0 and 90 will adjust the pen accordingly.

Additional Info (from MMModule 2016)

3D printing


3D printing is a widely used additive manufacturing technique. In this block you learn about the different 3D printing techniques, the advantages and disadvantages. We will also look at the language used to control many 3D printing (and many other computer controlled machines). You will see this is actually a very simple technique, however making a good 3D print is not necessarily easy. As for all techniques, experimenting is key in learning how get the most out of 3D printing


Fused Deposition Modeling (FDM)

FDM is, due to the consumer 3D printers of this type, the most widely known 3D printing technique. With FDM a layers of material are stacked on top of each other. In this way the object is build up layer by layer. This technique can be used with almost any material that can be extruded. This holds for most plastics when heated to just below the melting point. But also other materials like clay, chocolate, bee wax etc. can be used.

Stereo Litography (SLA)

SLA uses a UV laser to harden a special resin at specific points. The 3D object, in a way, grows out of the resin.

Selective Laser Sintering (SLS)

Laser sintering uses a laser to melt/sinter particles together. This technique can be used to print in metals.

Powder bed and inkjet 3D printing (binder-jetting)

Inkjet 3D printing is a technique very similar to SLS where a laser melts small particles of material together. With inkjet 3D printing a binder is used instead of a laser. The material can be metal particles but also some type of plaster. The printer uses standard inkjet printing cardridges for printing in full colour. After printing the part is very brittle and usually needs to be impregnated with a solidifying material like epoxy or cyanoacrylate.

3D Modeling

To use a 3D printer you'll need a 3D model to print. For this you can use almost any 3D program. Choose the one you are most familiar with and see if it can export STL, OBJ, DAE or AMF files. If you just get started with 3D modeling starting with Sketchup or Tinkercad is a good starting point. Other, more advanced programs like Solidworks, Inventor, Maya, Blender, Rhino etc. can of course be used as well.

If you don't want to go into 3D modeling yourself there are also places where you can download 3D models. The two most widely known are:


After you have your 3D model you will need to prepare it for printing. This means you need to slice the model into very thin slice. You can imagine this as slicing a cucumber in very thin slices of e.g. 0.1mm thick, and stack each slice back on top of each other somewhere else. The 3D printers we have at the WdKA are Ultimakers. The program to slice and print your 3D model with these Ultimakers is Cura. You can download this program for OSX, Windows and Linux here: https://ultimaker.com/en/products/cura-software

The Cura program also has the option to save the output of the slicer to a file. This file is called a GCode file or sometimes and nc file. This file contains a list of all the steps the 3D printer is going to do in order to print the model. You can open this gcode file in any text editor and have a look and even change it. This may sometimes be necessary if, for example, you have a very complex print. It may be needed that at some point the print speed needs to go down or the temperature up. This can not be done directly from within the Cura program (without using a plugin) but by adding the appropriate gcode at the right place you can make this work.


From Wikipedia on G-Code:

G-code (also RS-274), which has many variants, is the common name for the most widely used numerical control (NC) programming language. It is used mainly in computer-aided manufacturing to control automated machine tools. G-code is sometimes called G programming language, not to be confused with LabVIEW's G programming language.

G-code is a language in which people tell computerized machine tools how to make something. The "how" is defined by instructions on where to move, how fast to move, and what path to move. The most common situation is that, within a machine tool, a cutting tool is moved according to these instructions through a toolpath and cuts away material to leave only the finished workpiece. The same concept also extends to noncutting tools such as forming or burnishing tools, photoplotting, additive methods such as 3D printing, and measuring instruments.

Simply put, G-Code is the language that tells the machine what to do, which movements to make, when to deposit material, when to stop etc. etc.. For example, a simple G-Code line that tells the machine to move to position X:10mm, Y:10mm could be:

G1 X10 Y10

Here the code G1 is the code for move to. To draw a square with the 3D printer would require four such movements. Assuming we start from location X0 Y0 Z0 and want to draw a square of 10 by 10 mm:

G1 X0 Y10
G1 X10 Y10
G1 X10 Y0
G1 X0 Y0

For a list of G-Code commands an Ultimaker 3D printer understands (or a printer running Marlin) see: https://github.com/ErikZalm/Marlin/blob/Stable/Marlin/Marlin_main.cpp Scrolling down will reveal the G-Code list.

An easy way to manually control your printer and send G-Codes by hand is Pronterface/Printrun: http://www.pronterface.com



The cut or pen plotter is a fun and easy machine to work with. It either cuts out material with a small knife or it draws with a stylus. In many ways it is pretty much like a 3D printer without the Z-axis (height). It can lift up and down the knife or stylus of course. Some plotters can also adjust how hard the blade or stylus pushes onto the surface.

Talking to your plotter (HPGL)

You can of course use your standard software to plot or cut out things. But it gets a lot more fun when you actually can control what the plotter is doing. Many plotters talk a language that looks a lot like the GCode we saw for the 3D printer (and CNC mills etc.). The plotters we have a the WdKA you can use talk a language that is call HPGL. It was used mostly by HP plotters but became a standard for most plotters later on.

The language is very simple. Just like GCode you have a simple few letter command and some parameters. For example, to draw a straight line starting at the current position you would send the following text to the plotter:

PD 100,100;

PD stands for Pen DOWN. The two numbers are the X and Y coordinates on your paper.

If you would first want to move to position X100 and Y100 and want to draw a square afterwards you would send this:

PU 100,100;
PD 100,200;
PD 200,200;
PD 200,100;
PD 100,100;

PU of course stands for Pen UP.

HPGL has more commands that make drawing easier, like commands for drawing rectangles, circles and arcs. It also has commands for drawing text. Have a look at the reference: File:HPGL.pdf for all commands.

Connecting to the plotter to send commands

An easy way to connect to your plotter is using a terminal.

For OSX Zterm
For Windows putty

It is also possible to use [Processing] or any other language you like to control the plotter.

Some examples using Processing to control the plotters you can find here:
https://github.com/mywdka/plotter_examples some examples showing basic HPGL commands
https://github.com/mywdka/mouserPlotter/tree/master using the mouse to plot on multiple plotters

Plotter inspiration