This release is a pre-release and may not be stable for production use.
svg2plot
svg2plot turns a vector drawing into a drawing on paper.
A terminal interface that converts SVG files into G-code and streams them over USB to a pen plotter running GRBL. It is the interface of the Chelonograph, the in-house pen plotter of the AlICe laboratory.
📖 Documentation: https://svg2plot.readthedocs.io — tutorial, how-to guides, and an explanation of how a drawing travels from file to paper.
Install
Linux, Python 3.11 to 3.13:
uv tool install svg2plot # or: pipx install svg2plot
svg2plot # optional: svg2plot <path_limit>, default 75
The user needs write access to the serial port (/dev/ttyUSB0), e.g. sudo gpasswd -a <username> uucp (dialout on Debian).
How it works
file.svg → read → check → optimise → G-code → USB stream → GRBL → motors
The conversion is equivalent to this vpype command, with a generated chelonograph profile that writes the pen pressure into the Z moves:
vpype read in.svg linesimplify reloop linemerge linesort write in_optimized.svg \
gwrite -p chelonograph in_optimized_p07.gcode
Streaming is send-and-wait: one line, then wait for GRBL’s ok.
Development
git clone https://codeberg.org/mononym/svg2plot.git
cd svg2plot
uv sync # package + dev dependencies
Lint |
uv run ruff check src && uv run ruff format --check src |
Type check |
uv run --with mypy mypy --ignore-missing-imports src/svg2plot |
Docs |
uv run sphinx-autobuild docs/source docs/build |
Build |
uv build && uvx twine check --strict dist/* |
CI (Woodpecker) runs the same checks on Python 3.11, 3.12 and 3.13.
Layout:
src/svg2plot/
tui.py interface, conversion and streaming
gcode_highlighter.py terminal colours for G-code
docs/source/ Sphinx docs (tutorial, how-to, explanation, reference)
Issues and contributions: https://codeberg.org/mononym/svg2plot/issues
Acknowledgements
vpype and vpype-gcode
GRBL and its simple_stream.py
Licenses
svg2plot: GNU General Public License v3.0 or later
documentation & images: Creative Commons Attribution 4.0 International
sphinx files: 2-Clause BSD License
miscellaneous: CC0 1.0 Universal
Metadata
Release files for svg2plot 0.1.0b1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| svg2plot-0.1.0b1.tar.gz | 26.2 kB | Without provenance | Details for svg2plot-0.1.0b1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| svg2plot-0.1.0b1-py3-none-any.whl | Python 3 | none | any | Details for svg2plot-0.1.0b1-py3-none-any.whl |
Total release size: 51.6 kB
Release files / svg2plot-0.1.0b1.tar.gz
| Download URL | svg2plot-0.1.0b1.tar.gz |
|---|---|
| Size | 26.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
35dadc6ee470330995df1b2612b0c27c3dc197008fb7de3d01f4dd2a966ceb79
|
|
BLAKE2b-256 checksum How to use checksums |
34de548f7ca72feae5a78d5b4bf5a7dbb63eeedf9b0da3dd3c5f5b55de1f7952
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.9
|
Release files / svg2plot-0.1.0b1-py3-none-any.whl
| Download URL | svg2plot-0.1.0b1-py3-none-any.whl |
|---|---|
| Size | 25.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
810e0bf05cada17bac0929b52b4ea16887a35f9aa8f8f182a5d5e21c38473b2d
|
|
BLAKE2b-256 checksum How to use checksums |
df05f6d61f1ef4dec9c685e9d2e5d07436d36e39867460ae3c9758f224822fed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.9
|
Security for svg2plot 0.1.0b1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.