
wrinkle #plottertwitter

work as if you live in the early days of a better nation
in the land of Count Alan.
this, but with alternate lines from the plot file drawn with alternate pens. The original was slow because it had a point roughly every 0.1 mm, and this has been smoothed. Still took maybe 15-20 minutes to draw, though.
source by Dan Anderson: https://www.openprocessing.org/sketch/519299
Enlarged and plotted on a Roland DXY pen plotter: 0.7 mm black pen on design vellum.
Full page:
Even if the 0.7 mm pen is a bit chunky for fine guilloché effects, the plotter output is pretty crisp. Here’s a detail at full resolution:
Unfortunately, an earlier attempt to print this figure using a fresh-out-the-box 20+-year-old HP SurePlot ¼ mm pen on glossy drafting paper resulted in holes in the paper and an irreparably gummed-up pen. If anyone knows how to unblock these pens, I’m all ears …
I made this two-colour plotted card for the MeFi “holiday card exchange – v.e.” thing. Pen plotter is a Roland DG DXY-1300 (1990s) using Roland 0.3 mm fibre-tip pens. Plot size is 123 × 91 mm, and is driven entirely from Inkscape 0.92.
Pen plotters were pretty expensive and complex pieces of electromechanical equipment. While they often earned their keep in the CAD office, they also had a function that’s almost forgotten: they could be used as input devices, too.
As a kid, we sometimes used to drive past the office of Ferranti-Cetec in Edinburgh. They specialized in digitizers: great big desk or wall mounted devices for capturing points from maps and drawings. Here’s one of their 1973 models:
While the technology and size have changed a bit, these huge bits of engineering kit are the ancestors of today’s track pads and touch screens.
Realizing that their plotters had very precise X-Y indexing and that they had two-way communications to a computer, HP made a drafting sight that fitted in place of a pen on their plotters:
This is a very pleasing piece of kit, all metal, thick plastic and polished optical glass. They show up on eBay occasionally, and aren’t cheap. With a bit of coercion, it fits into my HP plotter like this:
The image is very bright and clear:
If one has a digitizing sight, one needs to find something to digitize post haste … I’m sure everyone can sense the urgency in that. So I found this, a scan from my undergraduate project writeup (centrifugal pump impeller design ftw, or something), which was probably made on an Amiga or Atari ST:
I printed this as large as I could on Letter paper, as it’s the only size my HP7470A plotter can take. Now all it needed was a small matter of programming to get the data from the plotter. Here’s a minimally-useful digitizer for HP and compatible serial plotters. Although I ran it on my little HP grit wheel plotter attached to a Raspberry Pi, I developed it with my larger Roland plotter. The only fancy module it needs is pySerial.
#!/usr/bin/env python # -*- coding: utf-8 -*- # a really crap HP-GL point digitizer # scruss - 2016 from time import sleep from string import strip import serial ser = serial.Serial(port='/dev/ttyUSB1', baudrate=9600, timeout=0.5) lbl = '' points = [] labels = [] k = 0 retval = 0 ser.write('DP;') # put in digitizing mode while lbl != 'quit': ser.write('OS;') ret = strip(ser.read(size=5), chr(13)) print ('Retval: ', ret) if ret != '': retval = int(ret) if retval & 4: # bit 2 is set; we have a point! print ('Have Point! Retval: ', retval) retval = 0 ser.write('OD;') pt = strip(ser.read(size=20), chr(13)) print ('OD point: ', pt) lbl = raw_input('Input label [quit to end]: ') points.append(pt) labels.append(lbl) k = k + 1 ser.write('DP;') # put in digitizing mode again sleep(1) ser.close() f = open('digit.dat', 'w') for i in range(k): f.write(points[i]) f.write(',') f.write(labels[i]) f.write('\n') f.close()
In the unlikely event that anyone actually uses this, they’ll need to change the serial port details near the top of the program.
The program works like this:
I didn’t implement any flow control or other buffer management, so it can crash in a variety of hilarious ways. I did manage to get it to work on the lower trace of that graph, and got these data:
9649,2428,1,300,0 357,2428,1,0,0 357,7217,1,0,0.60 733,3112,1,first 826,3167,1, 968,3256,1, 1122,3334,1, 1290,3405,1, 1588,3583,1, 1891,3725,1, 2215,3880,1, 2526,4051,1, 2830,4194,1, 3143,4280,1, 3455,4516,1, 4077,4767,1, 5008,5229,1, 6543,5954,1, 8067,6548,1, 8740,7195,1, 8740,7195,1,last 8740,7195,1,quit
The first two columns are X and Y, in HP-GL units — that’s 1/40 mm, or 1/1016 inches. The third column will always be 1 if you have the sight down. The last columns are the label; if you put commas in them, opening the file as CSV will split the label into columns. I used it to fudge axis points. You’ll also note that the last three lines of data are my valiant attempts to quit the program …
Assuming the axes are not skewed (they are, very slightly, but shhh) some simple linear interpolation gives you the results below:
12.1 0.086 15.1 0.093 19.7 0.104 24.7 0.114 30.1 0.122 39.7 0.145 49.5 0.162 60.0 0.182 70.0 0.203 79.8 0.221 89.9 0.232 100.0 0.262 120.1 0.293 150.2 0.351 199.7 0.442 248.9 0.516 270.7 0.597
Good enough for a demo.
(For prettier things to do with plotter digitizing commands, Ed Nisley KE4ZNU has made some rather lovely Superformula patterns)
If you don’t have a plotter, or even if you do and you don’t have hours to waste mucking about with Python, obsolete optics and serial connections, Ankit Rohatgi’s excellent WebPlotDigitizer gets numbers out of graphs quickly. It handles all sorts of graphs rather well.
Use it / download it here: FifteenTwenty on fontlibrary.org
Download it / fork it here: scruss/FifteenTwenty on github
Local copy: FifteenTwenty-master.zip (268K; includes FontForge sources)
For the impatient: download FifteenTwenty-master.zip
FifteenTwenty-Regular-OTF.zip (or more options …)
Updated: now with all ASCII glyphs!
Update, September 2016: this font was officially squee‘d over by Josh “cortex” Millard on the Metafilter Podcast #120: Hard Out There For A Nerd. I had the great pleasure of meeting Josh at XOXO 2016, too.
The Commodore 1520 was a tiny pen plotter sold for the Commodore 64 home computer. It looked like this:
I never owned one, but it seems it was more of a curiosity than a useful product.
From a nerdy point of view, however, this device was rather clever in that it packed a whole plotter command language, including a usable font, into 2048 bytes of ROM. Nothing is that small any more.
Thanks to the epic efforts of Jim Brain and others, this ROM is now archived on Project 64 Reloaded. Looking at the code, I was struck by the elegance of the encoding: it packs a full X-Y plot instruction in one byte.
Based on my work with the Hershey font collection, I thought it would be fun to extract the coordinates and make a real OpenType font from these data. I’m sure others would sense the urgency in this task, too.
Since Commodore computers used a subset of ASCII, there’s a barely-usable set of characters in this first release. Notable missing characters include:
U+005C \ REVERSE SOLIDUS U+005E ^ CIRCUMFLEX ACCENT U+0060 ` GRAVE ACCENT U+007B { LEFT CURLY BRACKET U+007C | VERTICAL LINE U+007D } RIGHT CURLY BRACKET U+007E ~ TILDE
I’ll get to those later, perhaps.
Huge thanks to all who helped get the data, and make the bits of software I used to make this outline font.
(Note: although the Project 64 Reloaded contains some extraction code to nominally produce an SVG font, it doesn’t work properly — and SVG fonts are pretty much dead anyway. I didn’t base any of my work on their Ruby code.)
Well, I didn’t expect that to happen. I was plotting this simple girih frame when something went wrong, and the plotter slammed the (new-old stock, almost unused … sniff) HP drafting pen into the side of the thick watercolour paper, breaking off the tip.
I didn’t notice the damage, so I restarted the plot, and the above smeary and uncertain lines came out. It’s certainly more organic than a mechanical plot would tend to be …
After a relative lack of success in making cheap plotter pens, I managed to score a trove of old pens on eBay. Some of these were dry, and I tried to resuscitate them. A few came back to life, but I ended up with a handful of very dead pen shells.
I think the pens were made or sold by Alvin, as there were several empty Alvin trays in the batch I got on eBay. In taking one apart, I thought that a pen refill might just slide inside. Lo and behold, but didn’t the pen nerd’s fave gel pen du jour refill just slide in with enough of an interference fit that it wouldn’t easily slide back out.
Taking the dry pens apart isn’t too easy:
Converting the pen body to use a Jetstream refill needs some tools:
To get best results, you’ll have to slow your plot speed down quite a bit. At standard speeds, you get a ¼ mm interrupted line which looks like this:
Close up, the lines are really faint
A hint that I should run them slower was at the start of each line, where the line would start very thick, then taper off as the ink supply ran low:
Run at 120 mm/s, the results where a bit darker, but still blobby at the start of lines:
Slowing down to 60 mm/s produced slightly better results:
But sharpest of all was at the crawling speed 30 mm/s:
Some pronounced blobs at the starts of lines still. Here’s the full page at 600 dpi, squished into a very lossy PDF: jetstream_plotter-slow
The blobs could be due to this, though:
It seems that a mix of paper fibres and coagulated ink builds up on the tip. Occasional cleaning seems to be a good idea. It also seems to help to draw a quick scratch line before anything important so the ink will be flowing properly.
Just to sign off, here’s one of the pens in action:
Inspired by Robert Howsare’s Drawing Apparatus, a time-step simulation of a similar apparatus was developed. Each trace was made of thousands of straight line segments, one for each rotation of the turntables’ drive motors, and enough to create a closed figure. Suitable gearing was modelled to simulate standard (North American) gramophone speeds of 16⅔, 33⅓, 45 and 78⅕ rpm for each of the turntables. Drive crank lengths were derived from standard record sizes. The initial starting angle of each turntable was also modelled.
Three simulation runs were chosen and superimposed. The result was plotted on “A” size vellum using 0.3 mm ceramic drafting pens. Total plot time at 90 mm/s: 22 minutes.
Code available on request.
If you’re running an old plotter, getting pens can be a worry. While there are some companies that might still make them (Graphic Controls/DIA-Nielsen, for one) they are expensive and limited in range. They’re also felt-tip, which means they’ll dry out if not carefully re-capped.
While eBay might supply all things (like these Roland DG plotter pens I scored a couple of days back; fine, black, new old-stock, or these German plotter pens), I also found this:
It’s described as “11.5*28MM cutting plotter vinyl cutter pen holder 50mm for Roland holder Pcut”. I bought two, and eventually the slow boat from China came …
The one on the left is an unmodified pen holder. Well, it’s really a ballpoint-refill holder, as it comes with a (random colour of blue) refill. To modify these to fit into an HP desktop plotter, you will need to:
My modified pens look like the above.
The dollar store is a good source of cheap ballpoint pens. I managed to snag 8 retractable red pens for $1.25, and 4 black pens for $1.
(These retractable pens more often than not eject the whole internals across the room when you retract ’em.)
It’s probably a good idea to scribble with the pens a bit before and after modifying them, as they take a while to flow freely. They plot very lightly; the black ink looks more like a faint pencil line.
If you look close up, not merely are the lines very faint, but something else important shows up:
The lines — which should be a constant(ish) distance apart, if the paper has stayed in registration — are showing a varying distance from each other. It looks like the pen points are a little off-centre, so when the pen is swapped out, it gets turned to a slightly different position. This would really only matter for precise work, and I find the effect interesting.
As for the HP-GL viewer? GhostPDL, by the makers of Ghostscript. You’ll have to build it from source, and its documentation isn’t quite where one might want it to be, but it implements a full HP PCL6 / HP-GL/2 interpreter than can output bitmaps, PostScript or PDF. The SVG graphic below was made using the tools/plot2pdf.sh script to convert HP-GL to PDF, then I used ghostscript to convert that to SVG. Nifty!
As a bonus, GhostPDL comes with one of the prettiest plotter fonts ever: