Drawing 3d nets - Archimedean solids I have a weakness for 3d nets which when cut out and folded allow you to make 3d shapes out of paper or card.  The task is simple, written the shortest program you can that draws nets for the 13 Archimedean solids. The output should be an image file in any sensible format (png, jpg).  

All thirteen shapes are described at http://en.wikipedia.org/wiki/Archimedean_solid and in the following table taken from there.



Input: An integer from 1 to 13.  Assume the shapes are numbered exactly as in the table above so that the "truncated tetrahedron" is number 1 and the "snub dodecahedron" is number 13.

Output: An image file containing the net for that shape. Just the outline including the internal lines is OK. There is no need to fill it in with colors

You can use any programming language you like as well as any library that was not made especially for this competition. Both should be available freely however (in both senses) online.

I will accept the answer with the smallest number of characters in exactly one week's time.  Answers will be accepted whenever they come.

(No) Winner yet.  Sadly no valid entrants. Maybe it is too hard?
Java, 1552

import java.awt.*;import java.awt.image.*;import java.io.*;import javax.imageio.*;class
A{public static void main(String[]x)throws
Exception{String[]a={&quot;33623368356:356;66&quot;,&quot;33413341334535463547354735473444&quot;,&quot;33823382338:3586338&gt;358&gt;358&gt;358?88&quot;,&quot;66456:466:466845684668466766&quot;,&quot;334144453546354635474746464646464647354634463446344744&quot;,&quot;88456:466:466:4668458&lt;468&lt;468&lt;468:456846684668466788&quot;,&quot;33343535353231333535313133353447353434353534313133353447353545343535313133353447353545343444&quot;,&quot;33513351335233593554335433593554335935543359355433593559355835593559355935593455&quot;,&quot;33:233:233:433:B35:833:833:B35:833:B35:833:B35:833:B35:B35:833:B35:B35:B35:B35:C::&quot;,&quot;66566:576:57696869576969586969586:586969576969586857685868586766&quot;,&quot;334155453546354635463547594658465846584658473546354634463546344635463446354634463547584657465746574657473546344634463446344755&quot;,&quot;::456:466:466:466:466845:@46:@46:@46:@46:&gt;4568466:4668466:4668466:4668466:4668466845:&gt;46:&gt;46:&gt;46:&gt;46:&lt;45684668466846684667::&quot;,&quot;333531333434343132333434353531313335343434323232323334343435353231333133343556343434313233323335345935353532313331313132333233353535343557343133343556343434355934353535593432333234355935323335345935323335345935323335345935343459313334353455&quot;};BufferedImage
m=new BufferedImage(1300,1300,1);Graphics2D g=m.createGraphics();g.translate(500,500);String
s=a[Integer.valueOf(x[0])-1];int f=1,i=0,n,t;while(i&lt;s.length()){n=s.charAt(i++)-48;t=s.charAt(i++);while(t--&gt;48){g.drawLine(0,0,20,0);g.translate(20,0);g.rotate(f*Math.PI*2/n);}f=-f;}ImageIO.write(m,&quot;png&quot;,new File(&quot;o.png&quot;));}}

Ungolfed:
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class A {
    static int f = 1;
    static Graphics2D g;

    static void fixtrans() {
        double[] m = new double[6];
        g.getTransform().getMatrix(m);
        for (int i = 0; i &lt; 6; ++i) {
            if (Math.abs(m[i] - Math.round(m[i])) &lt; 1e-5) {
                m[i] = Math.round(m[i]);
            }
        }
        g.setTransform(new AffineTransform(m));
    }

    static void d(String s) {
        for (int i = 0; i &lt; s.length();) {
            int n = s.charAt(i++) - '0';
            int t = s.charAt(i++) - '0';
            for (int j = 0; j &lt; t; ++j) {
                g.drawLine(0, 0, 20, 0);
                g.translate(20, 0);
                g.rotate(f * Math.PI * 2 / n);
                fixtrans(); // optional, straightens some lines
            }
            f = -f;
        }
    }

    public static void main(String[] args) throws Exception {
        String[] a = {
                &quot;33623368356:356;66&quot;,
                &quot;33413341334535463547354735473444&quot;,
                &quot;33823382338:3586338&gt;358&gt;358&gt;358?88&quot;,
                &quot;66456:466:466845684668466766&quot;,
                &quot;334144453546354635474746464646464647354634463446344744&quot;,
                &quot;88456:466:466:4668458&lt;468&lt;468&lt;468:456846684668466788&quot;,
                &quot;33343535353231333535313133353447353434353534313133353447353545343535313133353447353545343444&quot;,
                &quot;33513351335233593554335433593554335935543359355433593559355835593559355935593455&quot;,
                &quot;33:233:233:433:B35:833:833:B35:833:B35:833:B35:833:B35:B35:833:B35:B35:B35:B35:C::&quot;,
                &quot;66566:576:57696869576969586969586:586969576969586857685868586766&quot;,
                &quot;334155453546354635463547594658465846584658473546354634463546344635463446354634463547584657465746574657473546344634463446344755&quot;,
                &quot;::456:466:466:466:466845:@46:@46:@46:@46:&gt;4568466:4668466:4668466:4668466:4668466845:&gt;46:&gt;46:&gt;46:&gt;46:&lt;45684668466846684667::&quot;,
// bad          &quot;333531333434343132333434353531313335343434323232323334343435353231333133343556343434313233323335345935353532313331313132333233353535343557343133343556343434355934353531333459343434355935323335345935323335345935323335345935323335345935353455&quot;
                &quot;333531333434343132333434353531313335343434323232323334343435353231333133343556343434313233323335345935353532313331313132333233353535343557343133343556343434355934353535593432333234355935323335345935323335345935323335345935343459313334353455&quot;};

        BufferedImage img = new BufferedImage(1300, 1300, BufferedImage.TYPE_INT_RGB);
        g = img.createGraphics();
        g.translate(500, 500);
        d(a[Integer.parseInt(args[0]) - 1]);
        String f = args[0] + &quot;.png&quot;;
        ImageIO.write(img, &quot;png&quot;, new File(f));
    }
}

Results (trimmed, negated, joined and scaled):

The shapes are quite unusual :) but correct as far as I can tell (let me know if you find any errors). They were generated (in a separate program) by constructing the face graph and cutting cycles in a DFS.
I'm sure this can be golfed quite a lot more using e.g. python and turtle.
Edit: oops, the last case was self-intersecting a bit. I fixed the code (by hand), here's the updated image: