Creating with Code

The web is a powerful toolbox

Thing-a-Day 2011 #7 - 2-Color Baltimore Node Logo Plot

This post used to be on Posterous. I rescued my posts before Posterous shut down and am now sharing them here.

I’m on the road and away from my MakerBot, etc., but I’ve created a version of the Baltimore Node logo that should be plottable in 2 colors using either the MakerBot Unicorn or the EggBot! I also replaced the outline text we were using with a Hershey Font version using the SVGs I posted yesterday.

Another tweak - I played around with Inkscape’s XML editor to get these things into layers. It’s a neat trick, but kind of a pain. I also reordered several of the paths for better and/or more interesting drawing order. I’ll see how it turns out when I get back to my bot.

You can find it on Thingiverse:

And here’s what Posterous does with the SVG when I upload it. No promises that it will be useful for anything.


Thing-a-Day 2011 #6 - Hershey Fonts in SVG

This post used to be on Posterous. I rescued my posts before Posterous shut down and am now sharing them here.

I just posted these guys over on Thingiverse!

Making text for Unicorn plots isn’t always a fun process. Most tools (even my Inkscape plugin) require you to convert text into paths, and even then you get the outlines of shapes, which can often turn messy at small sizes.

mifga pointed me towards the Hershey fonts. They’re a set of fonts for vector plotters named after creator Dr. A. V. Hershey who made them for the U.S. National Bureau of Standards.

These files are in a weird, weird, format. But after some normalizing, wailing, and gnashing of teeth, I was able to write some code to parse them and spit them back out as SVG! Now you can use these fonts in your Unicorn drawings.

Hooray-math Music

To use these in Unicorn plots, you’ll want to grab my Unicorn G-Code extension for Inkscape.


To use these fonts in your Unicorn plots:

1. Download the SVG file containing the font of your choice, or grab the whole to get them all.
2. In your Inkscape drawing, use File | Import to load the font you want
3. Drag around and duplicate the characters that you want to use.
4. Delete the ones that you don’t.
5. Save your file and Save a Copy to get your .gcode!

Thing-a-Day 2011 #5 - Graffiti Markup Language (GML) to Unicorn!

This post used to be on Posterous. I rescued my posts before Posterous shut down and am now sharing them here.

When I first heard of Graffiti Markup Language (GML) I was like “An XML format for graffiti? Pfft!” Then yesterday I was like “Wait, I have a pen plotter.”

gml2unicorn is a Python script that will take GML files and convert them into G-Code compatible with the MakerBot Unicorn pen plotter.

Gml Gml-orig

Learn more on Thingiverse, or grab the code on GitHub.

Thing-a-Day 2011 #4 - Pen-Changing!

This post used to be on Posterous. I rescued my posts before Posterous shut down and am now sharing them here.

Once again, I’m work on the MakerBot Unicorn G-Code Output extension for Inkscape.

Today’s update is kind of a simple-but-clever hack, inspired by the code for EggBot.

It lets you create multi-color plots by putting paths of different colors on different layers. For example to create this image:


I put the text on a layer named “text” and the unicorn logo on a layer named “unicorn”.


And selected the new “Pause on layer change?” option!

When plotting, everything pauses before starting a new layer and I get the message “Plotting layer ‘[LAYERNAME]’”. I can use that pause as an opportunity to change out the pen, as I did in this example, using a black pen for the text layer and a blue pen for the unicorn layer.

Thing-a-Day 2011 #3 - Copies and Continuous Plotting for Inkscape-unicorn

This post used to be on Posterous. I rescued my posts before Posterous shut down and am now sharing them here.

The the MakerBot Unicorn G-Code Output extension to Inkscape I’ve been working on so far for Thing-a-Day now has a new feature - support for copies and continuous plotting!

I’ve incorporated mifga’s multi-sheet print-to-pad hack to prompt for changing sheets between copies. I’ve also added support for plotting sheet-after-sheet, continuously, using the “M30” G-Code, which causes ReplicatorG to start the program over from the beginning, effectively running until you stop it yourself.

For the curious: have some diffs on GitHub! Also, pictures:

Thing-a-day-unicorns Inkscape-unicorn-copies

Thing-a-Day 2011 #2 - New Features for Inkscape-unicorn: Pen Registration and Homing Support

This post used to be on Posterous. I rescued my posts before Posterous shut down and am now sharing them here.

Today I made some improvements to the inkscape-unicorn plotter extension that I released yesterday.


Specifically, I’ve added two things:

  • The option to do a pen-registration check at the beginning of each plot, taken from mifga’s original.
  • The option to set where “home” is, for people who like to start their plots with the platform anywhere other than in the center.

This should help make some nice plots!

Thing-a-Day 2011 #1 - Unicorn Pen Plotter Extension for Inkscape!

This post used to be on Posterous. I rescued my posts before Posterous shut down and am now sharing them here.

I spent some time this weekend making this plugin and today went through the process of releasing it via GitHub and posting it to Thingiverse:


One problem that has often plagued users of the MakerBot Unicorn is the long and confusing chain of tools required to go from a nice vector drawing to a G-Code file that can be plotted from ReplicatorG.

mifga did an awesome tutorial that made it possible to understand the steps needed to work all of these tools, but it was obvious that something better was needed.

So, I made a mashup of and the Egg-Bot Driver for Inkscape to bring you the inkscape-unicorn extension for Inkscape!

Once installed, this extension allows you to save files in “MakerBot Unicorn G-Code (*.gcode)” format!

Learn more, download, and contribute at the GitHub page for this project:

If you’re desperate, you can also download the zip file attached to this thing, but please consider getting the latest version from GitHub. :)

Thanks to langfordw for the original Unicorn Logo used as an example on this Thing.

MakerBot #131 Gets a MK5 Plastruder!

MakerBot 131 w/ MK5 extruder and PLA 4043D

Actually, all sorts of new and exciting nonsense has happened to MakerBot #131.

I was excited to order get my MK5 Plastruder kit and join all of the cool people who have left the pinch-wheel and nichrome behind.  Unfortunately, I ran into some problems early on, and after buying some cool thermocouple parts to try calibrating everything, finally determined that I had a bad thermistor.

So, I decided to put the MK5 aside and moved on to some entirely unrelated projects.  I assembled a Cyclops 3D scanner (I need more practice, but it’s promising!), and printed a pink, printable version of the Unicorn pen plotter (with some better-than-expected results – hence the Post-It Notes all over the ‘bot).  I had generally decided that the MK4 was Good Enough, and would come back to the MK5 when it died.

That was all, of course, before the new MakerBot PLA 4043D came out.  Once I got my hands on it, I had to go for the upgrade.  So, MakerBot #131 is now running the MK5, with the new relay board mounted with the official mounting kit, and the extruder controller mounted with donutman_2000’s awesome printable mount.

Stay tuned for details about my experience with the new PLA!  I am excited.

Experiments With PLA 4043D

Bottle Opener made from PLA 4043D

As I said in my last update, I finally upgrade MakerBot #131 with a MK5 extruder because it reportedly works great with the new PLA 4043D.

I’ve been having fun printing with the various colors of ABS that MakerBot offers, but have always been somewhat envious of folks that have been printing successfully with PLA. I bought 5lb roll of the original 4032D that MakerBot sold, but ended up putting it on the shelf after reports from other operators that it was destroying their MK4 extruders.

Getting the new PLA printing was surprisingly easy, given the challenge of using a new extruder (which needed temperature, PID, and flow rate calibration) and it’s the first non-ABS plastic I’ve printed, so it will have different optimal printing temperatures and more.

I haven’t carefully calibrated the thermistor on my MK5, and I wasn’t sure of the right temperature to extrude PLA, so I started by setting the temperature to 180ºC and attempting to push some filament through by hand.  I raised the temperature slowly until it became easy to push through by hand, around 195ºC.  I had not yet locked down my PID settings, so I was getting some wild temperature swings.  To be safe, I set the temp to 200ºC and started printing my favorite bottle opener from Thingiverse.

It turns out the flow rate for the MK5 is a lot higher than it was for the MK4.  After putting down the raft, I was having trouble with the filament stripping inside the MK5 due to backpressure.  Still, by paying attention to the print and tightening the thumbwheel whenever the filament slipped, I was able to get a completed bottle opener.

It was then that I noticed two things:

  • The top two layers of the object sagged deep into the honeycomb fill layers below, giving a terrible finish on top.
  • PLA has no give, so there was no way that a penny would fit into the slot.  I have some nice bruises from trying to make it fit. :)

To fix the stripping and sagging problems, I figured that I should increase my Feedrate – the speed at which the platform moves to catch the extruded plastic.  I figured that a too-low Feedrate would cause some back pressure when printing the raft (leading to stripping), and would contribute to sagging overhangs.  I also guessed that the sagging is due in part to the high thermal mass of liquid PLA allowing it to sag before it cooled, so a lower extrusion temperature would let it solidify sooner, leading to less sagging.  I still use skeinforge-0006, so these settings are in “raft.csv” (various temperatures) and “speed.csv” (Feedrate), respectively.

So, some calibration prints:

Bottle opener calibration prints with PLA

Starting with my first successful print in the upper-lefthand corner, with the temp of 200ºC and a feedrate of 26.5mm/s (which was working for my MK4), I slowly lowered my temp and increased feedrate.  At 180ºC I had a failed print due to the PLA freezing up, so I am going to stick with 185ºC going forward.  Increasing the feedrate by 25% immediately solved my filament stripping problem, but still left a pretty nasty top layer.  Increasing beyond that smoothed out the top pretty well, and left clean enough slots that I could actually insert some coins, albeit dimes rather than pennies.

I may try increasing my feedrate further, but I found an odd result when going from 36.4375mm/s (slower, should have thicker walls) to 38.26mm/s (faster, should have thinner walls). Namely, they both seem like very solid objects, but the dime slid nicely into the slower-printed version using the edge of a desk, while I had to take a hammer to the faster-printed version, and actually ended up bending the dime rather than driving it into the plastic (PLA is tough stuff!).  I would have expected the opposite.

Anyway, I hope these results are useful for some folks.  I hope to improve my calibration a bit more, and trying out the MK5 with my old roll of PLA 4032D.

Thingiverse Embed Plugin for Wordpress

For a while now, I’ve wanted to embed an RSS feed of the latest stuff I’ve printed from Thingiverse on MakerBot 131’s page. To kick things off, I asked Zach to implement an RSS feed of the Thing’s I’ve Made page on Thingiverse.

It’s been awhile, but I’ve finally gotten around to creating a Wordpress plugin that I’m calling Thingiverse Embed.


The plugin has two features. First, you can embed a little “wallet-sized” view of a Thing into an individual blog post or page, with the Thing’s title, creator, image, description, and links back to Thingiverse with a simple shortcode:

[[thingiverse thing_id=“1046”]]


[thingiverse thing_id=“1046”]

The plugin also includes a Thingiverse Stream widget, for embedding streams like “Things I’ve Made” as a simple sidebar widget. It just needs to be configured with the title, the type of stream you want to use, the Thingiverse username (for certain streams), and the maximum number of Things to display.

You can see this example on the page for MakerBot 131.


You can download the latest version of the Thingiverse Embed plugin from the Wordpress Plugins directory:

Or you can download thingiverse-embed-0.1 here.

To install it, unzip the archive, copy the thingiverse-embed directory into your Wordpress install’s plugins directory (usually /wp-content/plugins), and activate the plugin.

You’ll probably want to check out the thingiverse-embed/readme.txt for more information about how to use the plugin.

In addition to the Wordpress Plugins SVN repository, you can also find the code for this plugin in the wp-thingiverse-embed repository on GitHub, for your forking pleasure.

It’s been fun a fun weekend developing this plugin, as it’s my first Wordpress plugin, and the first “serious” PHP I’ve written. Of course, it is filled with nasty HTML parsing and XPath tricks, and could use lots of cleanup, so please give me feedback if you use it!