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
This extension should work with the following devices:
WARNING: SNAP packages may cause issues. We use deb file shown later in this section.
# 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
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.
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".
sudo zypper in python3-usbsudo 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
Install the necessary packages:
sudo dnf install python3-pyusb python3-matplotlib make gettext
Clone the inkscape-silhoutte repo and make/install the extension:
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
brew install libusbbrew install inkscape./install_osx.sh~/Library/Application Support/org.inkscape.Inkscape/config/inkscape/preferences.xml on <group id="extensions" python-interpreter="/..." />. For details on selecting a specific interpreter version see Inkscape Wiki - Extension Interpreters:
python-interpreter="/Users/username/.local/share/venvs/inkscape/bin/python3"bleak, which provides Bluetooth Low Energy support. On the first BLE scan, macOS may ask for Bluetooth permission for Inkscape; allow it to discover and connect to the cutter.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
These steps must be done with Silhouette device plugged in to USB port.
List all devices0B4D (Graftek America)libusb-win32 (v1.2.6.0) which will install a libusb0-Port for WindowsTo later undo:
List all devices0B4D (Graftek America)WinUsb which will undo the prior change.Program Files/Python is ticked upon installation or change/add features accordinglyget-pip.py from https://bootstrap.pypa.io/get-pip.py and copy to the bin directory, e.g. C:\Program Files\Inkscape\bin.\python.exe '.\get-pip.py'.\python.exe -m pip install pyusbsilhouette, sendto_silhouette.inx, sendto_silhouette.py, silhouette_multi.inx, silhouette_multi.pyshare\inkscape\extensions directory, e.g. C:\Program Files\Inkscape\share\inkscape\extensionsRefer to the userguide instructions for further details.
Run sendto_silhouette.py --help for information on CLI usage.
Bluetooth-capable cutters (Cameo 3 and newer, Portrait 2 and newer, Curio 2, and similar) can be driven wirelessly instead of over USB. The Bluetooth tab offers two transports:
bleak. BLE does not require Bluetooth Classic pairing and selects the cutter by its advertised name or an optional platform-local identifier. The macOS installer includes this dependency.The complete BLE flow has been verified with Inkscape 1.4.4 on macOS and a Silhouette Cameo 5 Alpha using the pen attachment. Other platforms supported by bleak may also work, but the current physical hardware verification is on macOS. See Connecting over Bluetooth for step-by-step instructions.
examples/mat_templatestemplates subdirectory below inkscapes configuration directorySystem. There you find the path as User templatesFile → New from Template...*.svg-files and place the contained objects for cutting>>> 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.
arrow_test.py can be used to test drive
the SilhoutteCameo class.Implement the triangle in a square test cut.
Test MatFree cutting strategy with the WC-Wunderbach-Wimpern font, which is especially well suited as a test-case.
Improve MatFree cutting by finding a better scan sort algorithm. Wide shadow casting towards negative y?
Implement paper-zip as a separate inkscape extension.
Python
98.3%
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
This extension should work with the following devices:
WARNING: SNAP packages may cause issues. We use deb file shown later in this section.
# 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
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.
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".
sudo zypper in python3-usbsudo 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
Install the necessary packages:
sudo dnf install python3-pyusb python3-matplotlib make gettext
Clone the inkscape-silhoutte repo and make/install the extension:
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
brew install libusbbrew install inkscape./install_osx.sh~/Library/Application Support/org.inkscape.Inkscape/config/inkscape/preferences.xml on <group id="extensions" python-interpreter="/..." />. For details on selecting a specific interpreter version see Inkscape Wiki - Extension Interpreters:
python-interpreter="/Users/username/.local/share/venvs/inkscape/bin/python3"bleak, which provides Bluetooth Low Energy support. On the first BLE scan, macOS may ask for Bluetooth permission for Inkscape; allow it to discover and connect to the cutter.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
These steps must be done with Silhouette device plugged in to USB port.
List all devices0B4D (Graftek America)libusb-win32 (v1.2.6.0) which will install a libusb0-Port for WindowsTo later undo:
List all devices0B4D (Graftek America)WinUsb which will undo the prior change.Program Files/Python is ticked upon installation or change/add features accordinglyget-pip.py from https://bootstrap.pypa.io/get-pip.py and copy to the bin directory, e.g. C:\Program Files\Inkscape\bin.\python.exe '.\get-pip.py'.\python.exe -m pip install pyusbsilhouette, sendto_silhouette.inx, sendto_silhouette.py, silhouette_multi.inx, silhouette_multi.pyshare\inkscape\extensions directory, e.g. C:\Program Files\Inkscape\share\inkscape\extensionsRefer to the userguide instructions for further details.
Run sendto_silhouette.py --help for information on CLI usage.
Bluetooth-capable cutters (Cameo 3 and newer, Portrait 2 and newer, Curio 2, and similar) can be driven wirelessly instead of over USB. The Bluetooth tab offers two transports:
bleak. BLE does not require Bluetooth Classic pairing and selects the cutter by its advertised name or an optional platform-local identifier. The macOS installer includes this dependency.The complete BLE flow has been verified with Inkscape 1.4.4 on macOS and a Silhouette Cameo 5 Alpha using the pen attachment. Other platforms supported by bleak may also work, but the current physical hardware verification is on macOS. See Connecting over Bluetooth for step-by-step instructions.
examples/mat_templatestemplates subdirectory below inkscapes configuration directorySystem. There you find the path as User templatesFile → New from Template...*.svg-files and place the contained objects for cutting>>> 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.
arrow_test.py can be used to test drive
the SilhoutteCameo class.Implement the triangle in a square test cut.
Test MatFree cutting strategy with the WC-Wunderbach-Wimpern font, which is especially well suited as a test-case.
Improve MatFree cutting by finding a better scan sort algorithm. Wide shadow casting towards negative y?
Implement paper-zip as a separate inkscape extension.
Python
98.3%