UPDATE: Posted version 3 which adds "total_minx", "total_maxx", "total_miny" and "total_maxy" as well as similar dims for each layer named "layername_minx" and so on.
UPDATE: Posted version 2 which works well in both Inkscape version 0.91 and 0.48.
Most of us have our favorite tools. One of mine is Inkscape. I'm no pro but I've been able to do what I need with it. Another of my favorites is OpenSCAD. The purpose of this thing is to make it easier to take something from Inkscape and use it in OpenSCAD.
The current steps you need to take to turn an SVG into an OpenSCAD usable DXF are the following:
Convert all objects to paths
Add extra points to paths
Convert paths to lines
- Export to DXF
After all that you may use your SVG design in OpenSCAD, but then if you want to edit your design you are faced with two equally unpalatable options: edit the original design and go through the steps again, or edit the DXF directly.
I had had enough and set out to automate that process. I took all the best parts of at least 3 other DXF output extensions (I lost count!) and added automation for the steps listed above. With this Inkscape extension, you can edit/save your design and simply "Save a Copy As" to DXF whenever you want to try it in OpenSCAD. It is a lot smoother that way.
Supposedly it exports color to the dxf as well but I don't know if that's supported in openscad.
NOTE: If you change the size of the document in Inkscape the exported DXF will have misplaced objects. A workaround for this is to recreate all layers after resizing the document. I know, painful, but once you have the size worked out it's not bad.
The extension automatically adds dimensions to the DXF: layer_name_width and layer_name_height for each layer and total_width and total_height.
The dimensions can be accessed using the built-in dxf_dim command. Ex.:
total_width = dxf_dim(file = "openscaddxf.dxf", name = "total_width");
Three fairly small provisos:
It's fairly slow because it has to launch a new inkscape instance to convert the objects to paths. It's not a pretty solution, but I believe it's the only way to do it at the moment.
Doesn't work with groups. You will need to ungroup everything before exporting
- Doesn't work with intersecting lines. This will cause either the offending objects to disappear or everything will appear outlined instead of filled in.
Repo is here: https://github.com/brad/Inkscape-OpenSCAD-DXF-Export
Copy the "openscad_dxf" folder and openscad_dxf.inx file (the zip contains these files) to your Inkscape extensions folder:
Alternatively, if you have
pip and want to try an even easier (but experimental) installation method you can try using
pip install --target=<installation_dir> inkscape-openscad-dxf. If you do use this method, do not use a
~ to refer to your home directory. Some versions of
pip will misinterpret it and create a directory called
~ in the current directory.
Create some objects in Inkscape and save them directly to a DXF that OpenSCAD can use! The included STL is an extruded DXF generated from pure Inkscape objects.