I had the same question and downloaded the Inkscape source from https://gitlab.com/inkscape/inkscape in order to understand the internal mechanisms.
A full-text search for R12
and R14
revealed that these formats are exported using Inkscape extensions, dxf12_outlines
and dxf_outlines
, respectively (output shortened):
[~/source/inkscape]$ grep R12 po/de.po -C 1
#: ../share/extensions/dxf12_outlines.inx:9
msgid "Desktop Cutting Plotter (AutoCAD DXF R12) (*.dxf)"
msgstr "Desktop-Schneideplotter (AutoCAD DXF R12) (*.dxf)"
[~/source/inkscape]$ grep R14 po/de.po -C 1
#: ../share/extensions/dxf_outlines.inx:49
msgid "Desktop Cutting Plotter (AutoCAD DXF R14) (*.dxf)"
msgstr "Desktop-Schneideplotter (AutoCAD DXF R14) (*.dxf)"
I then learned that the Inkscape extensions live in their separate repository at https://gitlab.com/inkscape/extensions. Looking at the source of dxf_outlines.py
, the docstrings confirm that this script effectively outputs the R14 format: https://gitlab.com/inkscape/extensions/-/blob/master/dxf_outlines.py#L22
On my Ubuntu 20 system with Inkscape installed via snap
, the script is executed as follows:
/usr/bin/python3 /snap/inkscape/current/share/inkscape/extensions/dxf_outlines.py --output=file.dxf file.svg
As a prerequisite, I had to install the lxml
and numpy
extensions for Python 3:
sudo apt install python3-lxml python3-numpy
Hope this helps!