Hacker News new | ask | show | jobs
by londons_explore 1858 days ago
It's just a list of X, Y coordinates...

An untested python one-liner:

    '\n'.join(["G0 X"+x+" Y"+y for x,y in coords])
Grab the code for homing and stuff from the start of another gcode file that works.
3 comments

Svg is typically a lot more complicated than coordinate points... https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Pa...
If you can use an editor like Inkscape to flatten the image (by recursively ungrouping until every path is under the top-level <svg> tag), you should have a bunch of paths that share a coordinate space. There are pathological cases like images that use CSS for positioning, but for most cases this will work.

Then you can use something like svgpathtools (https://github.com/mathandy/svgpathtools) in Python to loop over the paths and get the coordinates.

In case it's useful, I have an example svg to gcode converter here: https://github.com/paulgb/penkit/blob/master/penkit/polargra...

It is for driving a polargraph-style plotter, so it includes a coordinate transform that GP does not need to do.

(In the context of this post, which is just straight lines)
Yes, in this case the SVG is a list of coordinate pairs, should be fairly easy to extract.

https://github.com/javierbyte/pintr/blob/master/lib/svg.js#L...

* Update to add a link to the code that generates the SVG.

Curves can be a bit more complicated, plus generating the tool lift and moves! I also need to factor in scaling the drawing as well, plus speeds.