inkscape-silhouette

Run Python tests

An extension to drive a Silhouette Cameo and similar plotter devices from within inkscape. 100% pure python, ontop of the libusb backend.

Here is the wiki with photos and a video: https://github.com/fablabnbg/inkscape-silhouette/wiki

Supported Devices

This extension should work with the following devices:


Installation

Ubuntu

Click to get steps WARNING: SNAP packages may cause issues. We use deb file shown later in this section. #### Install Inkscape and other requirements ```bash # Add inkscape dev team's PPA key to APT. # This project require minimum of inkscape V1.0+ # But we want to always keep to latest inkscape version sudo add-apt-repository ppa:inkscape.dev/stable # Install Inkscape sudo apt-get update sudo apt install inkscape # Install Inkscape with newer version directly from inkscape dev team # even if newer than what Ubuntu's package management team is willing # to certify at the moment sudo apt-get --with-new-pkgs upgrade inkscape # Install requirements for usb support sudo apt-get install python3-usb # Install requirements for Silhouette Multiple Actions sudo apt install python3-wxgtk4.0 # Install all requirements from python package manager sudo apt-get install python3-pip python3 -m pip install -U pip python3 -m pip install -r requirements.txt ``` #### Install inkscape-silhouette From here, you should have all the required python packages and inkscape version. So now we shall install inkscape-silhouette, so scroll down the latest releases and head to the Assets section of releases and click on the *.deb file. You can then use `sudo apt-get install ./*.deb` where `*.deb` is the name of your newly downloaded file. * https://github.com/fablabnbg/inkscape-silhouette/releases

Other Debian based Linux

Click to get steps * Download https://github.com/fablabnbg/inkscape-silhouette/archive/main.zip * Unzip the archive into a directory (which will be called inkscape-silhouette-main by default) * In a terminal, change into that directory * Execute `make install-local` to install just in your user account, or (if you have permissions) `sudo make install` to install for all users * `sudo apt-get install python3-usb` if you have permissions, otherwise `python3 -m pip install usb` * restart inkscape, check that you see new menu entries "Extensions -> Export -> Send to Silhouette" and " ... -> Silhouette Multi Action".

openSUSE

Arch Linux

Click to get steps ```shell sudo pacman -S inkscape python-lxml python-pyusb python-tinycss2 python-matplotlib git clone https://github.com/fablabnbg/inkscape-silhouette.git cd inkscape-silhouette ``` and then either `make install-local` to install just for your user account, or `sudo make install`

Fedora Linux

Click to get steps Install the necessary packages: `sudo dnf install python3-pyusb python3-matplotlib make` Clone the inkscape-silhoutte repo and make/install the extension: ```shell git clone https://github.com/fablabnbg/inkscape-silhouette.git cd inkscape-silhouette sudo make install ``` Add a new rule file to the udev device manager: `sudo nano /etc/udev/rules.d/99-graphtec-silhouette.rules` And add the following: `SUBSYSTEM=="usb", ATTR{idVendor}=="0b4d", ATTR{idProduct}=="1137", MODE="666"` Finally, load the file with: `sudo udevadm trigger`

Mac OS X

Click to get steps * Install prerequisites: * install homebrew http://brew.sh/ * `brew install libusb` * `brew install python3` * Install the extension: * `./install_osx.py` * Add brew python for user extensions in `~/Library/Application Support/org.inkscape.Inkscape/config/inkscape/preferences.xml` on ``. For details on selecting a specific interpreter version see [Inkscape Wiki - Extension Interpreters](https://inkscape.gitlab.io/extensions/documentation/authors/interpreters.html): * `python-interpreter="/usr/local/bin/python3"` on X86 platform * `python-interpreter="/opt/homebrew/bin/python3"` on ARM platform (Apple Silicon)

FreeBSD

Click to get steps Note the recipe here specifies `py39-libusb1`. In case this is out of date, you need to choose the usb package appropriate to the version of python that runs by default as `python3`. ``` sudo pkg install inkscape py39-libusb1 cd /tmp wget -c "https://github.com/fablabnbg/inkscape-silhouette/archive/main.zip" unzip main.zip cd inkscape-silhouette-main sudo make install # OR: make install-local # latter installs only for this user ```

Windows

Click to get steps #### Driver These steps must be done with Silhouette device plugged in to USB port. * Download newest Zadig from http://zadig.akeo.ie/ * Go to menu options `List all devices` * Look for USB Printing Support in the dropdown list * Ensure USB ID is: `0B4D` (Graftek America) * Select driver `libusb-win32 (v1.2.6.0)` which will install a `libusb0`-Port for Windows * Click replace driver To later undo: * Run Zadig again * Go to menu options `List all devices` * Look for USB Printing Support in the dropdown list * Ensure USB ID is: `0B4D` (Graftek America) * Select driver `WinUsb` which will undo the prior change. * Click replace driver #### Python adapter * Inkscape usually comes with a Version of Python; ensure that feature under `Program Files/Python` is ticked upon installation or change/add features accordingly * Install pip (a package manager for python): * Download `get-pip.py` from https://bootstrap.pypa.io/get-pip.py and copy to the `bin` directory, e.g. `C:\Program Files\Inkscape\bin` * Open command line and navigate to the same directory, then enter `.\python.exe '.\get-pip.py'` * Install pyusb: * Still in command line enter `.\python.exe -m pip install pyusb` #### Silhouette inkscape extension itself * Download https://github.com/fablabnbg/inkscape-silhouette/archive/main.zip * Open the downloaded file and select the following five items: `silhouette`, `sendto_silhouette.inx`, `sendto_silhouette.py`, `silhouette_multi.inx`, `silhouette_multi.py` * Extract them to your `share\inkscape\extensions` directory, e.g. `C:\Program Files\Inkscape\share\inkscape\extensions` * Restart inkscape

Usage

GUI

Refer to the userguide instructions for further details.

CLI

Run sendto_silhouette.py --help for information on CLI usage.


Templates

Troubleshooting

>>> import usb.core
>>> usb.core.find()
<usb.core.Device object at 0xb720fb8c>
>>>

If this reports no usb.core.Device to you, please help troubleshoot.

python
>>> import usb.core
>>> usb.version_info[0]

This fails on win32/64 with ‘module has no attribute ‘version info’ which then causes Graphtec.py to error even though usb.core is installed.

Features

Misfeatures of InkCut that we do not ‘feature’

TODO

References