# SVG to STL conversion to make symbols recognisable for visually impaired users

I work on communication devices for people with disabilities that prevent them from speaking. This can be anything from a board with symbols on, to a relatively sophisticated app.

Some potential users also have sight issues and have to distinguish symbols by feel (these particular users have cognitive disabilities and so braile isn't useful) . Currently the solution is to, by hand, stick items onto the buttons. Like this:

This is effective, but takes a very long time.

There exists open symbol libraries like this, that include nice svg images like this one (not uploaded, because SO doesn't like svg, but here's the screenshot:

A friend converted some of these images into 3d prints like so:

This was amazing, and useful, but I understand quite time-intensive for him - and there are thousands of these symbols.

Here's what I want to know: given that SVG is a relatively simple structure and the symbols are very simple, what are the steps for writing the script that says: "Take the svg, map it to a plane, raise everything that is black by 2mm, everything that is gray by 1mm and add height for the rest of the colours according to this table" ?

Bonus points for something that I can reasonably get going on a set of 10000 svg files and come back to later...

• My thoughts would be something like openscad might simplify this. It has a polygon basic operation and an extrude. First map the svg to a polygon then extrude the polygon. So the question then becomes how to map the svg to a set of points that are close enough to represent the shape. You could do this multiple times for each colour and then extrude by different heights.
– Ross
Dec 5 '17 at 10:38

If you install inkscape, pstoedit and ghostscript version 9.21 (not the latest as pstoedit is incompatible) you can get the file into a format that openscad can import using two commands in a cmd file

"C:\Program Files\Inkscape\inkscape" -E "traffic lights.eps" "traffic lights.svg"
"C:\Program Files\pstoedit\pstoedit" -dt -f dxf:-polyaslines "traffic lights.eps" "traffic lights.dxf"


linear_extrude(3) import ("traffic lights.dxf");


will import gives me

With a thickness of 3mm - you can see the model needs some scaling but its seems possible although - I can't see an option to scale based on color -

• That's looking solid!
– Joe
Dec 12 '17 at 8:42
• Much more difficult to get different heights automatically based to different colors , I've got an algorithm of how to do it - get a files for each layer based on the colors - eg extract White, Green, Red, Blue and import - this all seems to work - but I have no way to automate the layer extraction
– Ross
Jan 10 '18 at 6:44

Nothing thats works via scripting BUT is really simple and easy.

1. register on tinkercad.com (I know register is a bummer but its a great tool)
2. open a new design
3. import *.svg file
4. adjust height or size of the converted object