graphtecprint

graphtecprint is a driver / cutting application for the desktop plotter / cutter Graphtec CC200-20 or any of the OEM models based on it, such as the QuicKutz Silhouette (and reputedly Xyron Wishblade). It may work on other Graphtec devices as well, but it’s so far only tested on the CC200-20. It was developed on Linux, but in theory it should work on other Unix-like operating systems, too, and perhaps even Windows (not tested!). The rest of this page will assume that you’re using a Linux distribution.

Update Jul 9th, 2008: Wow, that took a while, but I have just released v1.0.1 which incorporates the Wishblade changes as well as fixes a bug with missing text with recent versions of pstoedit. Speaking of recent versions, Inkscape has had a printing redesign, and seems to be missing the “print to pipe” option from earlier, which means you have to print to a file and pipe it to graphtecprint manually for now.

Update Feb 2nd, 2008: Rick Stuart has helpfully provided me with the changes necessary to make graphtecprint work with his (first generation?) Wishblade! I will release a version 1.0.1 shortly, which will support this device properly.

Requirements

First of all, and unsurprisingly, you need a compatible Graphtec cutter.

To see if you have a compatible device, run “lsusb”. You should see a line looking something like this, the important bit in bold:

$ lsusb
. . .
Bus 001 Device 003: ID 0b4d:110a
. . .

If the numbers differ you likely have another model, but it might still work.

You can also use the “usb_printerid” utility that comes with “foo2zjs” package you may or may not already have installed:

$ sudo usb_printerid /dev/usb/lp1
GET_DEVICE_ID string:
MANUFACTURER:Graphtec;MODEL:CC200-20;CLASS:PRINTER;DESCRIPTION:Graphtec CC200-20;

graphtecprint requires the following packages to be installed:

  • python (tested with 2.5, other versions may work)

  • python-gtk2
  • python-glade2
  • python-cairo
  • pstoedit (tested with version 3.44, others may work)
  • ghostscript

If you are using Debian or a Debian based distribution, such as Ubuntu, running “sudo apt-get install ” should do the trick. For other distributions, follow the normal procedure of finding and installing software. Chances are that several of these are installed already. Your mileage will vary.

Installing

There are two ways of “installing” graphtecprint. The first way is to install it alongside other installed programs:

tar xvzf graphtecprint-1.0.tar.gz
cd graphtecprint-1.0
sudo cp graphtecprint /usr/local/bin/
sudo mkdir /usr/local/share/graphtecprint
sudo cp *.png *.glade /usr/local/share/graphtecprint

Alternatively, the program and data files can be installed in their own separate directory, e.g. /opt/graphtecprint:

tar xvzf graphtecprint-1.0.tar.gz
cp -a graphtecprint-1.0 /opt/graphtecprint

Usage

The program was primarily tested to work with Inkscape, but in theory, all applications capable of printing PostScript to a file or a pipe should work. If you come across a program whose output does not work, feel free to inform the author. (Note that raster graphics from programs such as the GIMP can’t possibly work. Only vector graphics elements will be parsed by this program.)

To cut using Inkscape, open or edit your file of choice, then go to the File menu and select Print. In the Print dialog, select “Print using PostScript operators”. Under “Print destination”, type “| graphtecprint” (the first symbol is a pipe symbol). If you have installed graphtecprint under a directory that’s not in your path you must enter the full path instead, e.g. “| /opt/graphtecprint/graphtecprint”

If you’re using another application, see if it can print to a pipe directly. If so, the procedure should be very similar to the one above.

If the application can not print to a pipe, chose “Print to file” (most applications should offer this) and select an appropriate file name. Then, in a terminal window, run “graphtecprint < somefile.ps", substituting "somefile.ps" for the name of the file you just printed to.

If everything goes according to plan, you should now get the main dialog window. If not, check your program's terminal for error messages that may explain what went wrong.

Screenshot

Notes

Everything should be more or less self-explanatory, but there are some things to note:

- You need write access to the USB device file! (The “Device” pulldown menu should list the detected cutter and its character device. To give yourself (everyone, actually, so beware) write permissions, open a terminal window and run the command “sudo chmod a+rw /dev/usb/lpX”, where X is the number of the device shown in the pulldown menu.)

- Paper size should match the page size from your application. This information doesn’t make it through the format conversions, unfortunately.

- Orientation is hardcoded to portrait so far, as the overlying application would normally do the work of rotating it if it is a landscape drawing.

- The fine tuning buttons will not work with the usblp driver. For these to work you will need a separate driver for the cutter, or possibly a patched usblp driver. None of these options are implemented yet, but they might be in the future.

Download

The latest version is 1.0.1 and can be downloader here:
graphtecprint-1.0.1.tar.gz

This entry was posted in general. Bookmark the permalink.

41 Responses to graphtecprint

  1. Brian says:

    Greeting! First of all, I love your choice of tools. Python, gtk, and glade are my favorites…

    I almost have this working, hoping for some help.
    I’m running ubuntu gutsy, and have a graphtec identifying itself as ID 0b4d:110a as above.

    I get the GUI up, with the correct preview (tried directly out of inkscape and by redirecting the postscript from inkscape to graphtec print), but when I hit “print”, it does the “track enhancing” back and forth with the paper (even though that option is off) and it stops. No cutting. :( Then I get the following error from the terminal screen:

    =====================================
    graphtecprint: Warning: Unexpected reply: ‘V2.30 \x03′
    Traceback (most recent call last):
    File “/usr/local/bin/graphtecprint”, line 418, in
    res = doit(dialog.settings)
    File “/usr/local/bin/graphtecprint”, line 268, in doit
    f.write(“M%.3f,%.3f\x03″ % p)
    TypeError: float argument required
    =====================================

    when I look at the python code (line 268), it appears that there’s modulus division by a “list” on the string going to the printer?

    Feel free to contact me if I can help with troubleshooting… I would LOVE for this to work!! :)
    –Brian

  2. Aaron Spike says:

    Fantastic work! The scrapbooking communities will really appreciate your work. You may also be interested in the work I started a while back at understanding the GSD file format.

    http://code.google.com/p/cuft/

  3. Ulisses says:

    Great, this exactly what I was looking for!!!

    As Brian I had the same issue here, I’m using Ubuntu 7.10, so it may be something related to the Python version…
    Anyway, I also had to make some adjustments in the code to make my Wishblade to be recognized.

    This are the changes that I did:

    I changed from:
    for s in strokes:
    p = s[0]
    f.write(“M%.3f,%.3f\x03″ % p)
    for p in s[1:]:
    f.write(“D%.3f,%.3f\x03″ % p)

    to:
    for s in strokes:
    p = s[0]
    f.write(“M%.3f,%.3f\x03″ % (p[0], p[1]))
    for p in s[1:]:
    f.write(“D%.3f,%.3f\x03″ % (p[0], p[1]))

    And changed from:
    if not p.has_key(“CLASS”) or p["CLASS"] != “PRINTER”:
    continue
    if not p.has_key(“MANUFACTURER”) or p["MANUFACTURER"] != “Graphtec”:
    continue

    To:
    if not p.has_key(“CLASS”) or p["CLASS"] != “PRINTER”:
    continue
    if not p.has_key(“MANUFACTURER”) or ((p["MANUFACTURER"] != “Graphtec”) and (p["MANUFACTURER"] != “Wishblade Inc.”)):
    continue

    So now everything is working fine :)

    I’m using Inkscape to cut on my Wishblade

    Thanks,
    Ulisses

  4. gary says:

    This is just what I need BUT……
    I need the same interface but for hpgl output, actually to a roland camm1 vinyl cutter and camm2 engraver. Both use hpgl branded as camm-gl. In a month or so I may have some spare change :) to pay someone to adapt the driver. The camm’s are already installed but no direct drivers. I have to print via windows via vmware, way to much trouble, If I could print from inkscape I’d be a happy man. If you get a chance take a look at the windows driver for the camm2 series at rolanddg.com. I have spent the day trying to get scaling down right in pstoedit and hpgl-distiller. It draws the right shape with no hpgl errors but scaling make no logical sense.
    Thanks

  5. Jared says:

    I have the Quickutz Silhouette craft cutter and running Ubuntu 7.10. I am getting the error “No Graphtec device found!” when attempting to print from Inkscape vector illustrator. It shows in Bus 002 Device 003: ID 0b4d:110a. I have installed all the packages listed in the forum. Any ideas on what I’m doing wrong?

  6. vidar says:

    Jared: Hmm, permissions, perhaps? (See under “Notes” above.)

  7. Ulisses says:

    Jared, if the permissions tip do not solve your problem, check also these two:

    1) You may need to add the Shilhouette string in the program, for this include the “MANUFACTURER” string which appears on usb_printerid /usb/lpx if it is different from “Graphtec” (see my comments before on how to do this)

    2) Everytime you turn on/turn off your cutter, Linux (at least my Ubuntu too) will lost the permissions on this device, so you will need to run the “sudo chmod a+rw /dev/usb/lpX” command again. What I did on my Ubuntu 7.10, I included my user on the “lp” group, so I don’t need to worry about, so I recommend you to do too.

    Hope this helps,
    Ulisses

  8. Nico says:

    Super! Great work. I’am using graphtecprint with the adaptions of Ulisses. Plotting on a Quickutz Silhouette.

  9. Lucille says:

    I have been directed here after asking the Inkscape people for a plug-in that would allow cutting to a CraftRobo CC100-20.

    I’m assuming the above isn’t for Windows XP?

    If so what are the chances of having something for Windows and my CraftRobo? There would be so many happy crafters if you can do this.

  10. Bob Peterson says:

    I got this working for my wife’s Xyron Wishblade (red) in Fedora 8.
    I had to make the changes suggested by Ulisses, however, I needed
    to remove the extra space in “WishbladeInc.” Also, three of the
    “required” packages, python-gtk2, python-glade2 and python-cairo,
    were not available on F8, nor are they needed there.
    I had to cat the resulting postscript file through the script, which
    is no big deal. Also, I found that lettering did not work until I
    added “-dt” to the “pstoedit” command. I hope this helps someone.

  11. Alvin Penner says:

    I would like to try to get graphtecprint running on a Windows XP machine. I have been doing some investigating of the ROBO Master software, without much luck, their level of compatibility with AutoCAD leaves a great deal to be desired.
    So when I download the file graphtecprint-1.0.tar.gz, the file that I actually get on my machine is instead graphtecprint-1.0.tar.tar, and when I try to unzip it using Winzip I get an error message. Could you tell me where to find a file that could be unzipped using either Winzip or 7-zip?
    Thanks for the help, and thanks for the work you have put into this.

    Alvin Penner

  12. Alvin Penner says:

    okay, sorry about that, I got it. I renamed it from graphtecprint-1.0.tar.tar to graphtecprint-1.0.tar.gz and then it unzipped properly.
    Will check it out, thanks.

  13. David B says:

    It’s a really fantatic work !!
    It work pefectly on my unbuntu Hardy, with a QuicKutz Silhouette.

    I have a little suggestion, when the plotter has finished to cut, the blade dont go back to the original position, and then it’s harder cut with precision.
    :-)

    David B

  14. dee says:

    Hi. Thanks for this program. It works great.

    Kept getting that message about “try sudo chmod…” because of permissions on lp0. (ubuntu hardy)

    Fixed it by going into /etc/udev/rules.d/40-permissions.rules to the line that says
    SUBSYSTEM==”usb”, KERNEL==”lp[0-9]*”, GROUP=”lp”
    and adding changing it to
    SUBSYSTEM==”usb”, KERNEL==”lp[0-9]*”, GROUP=”lp”, MODE=”0777″

    Just thought I would post this in case anyone else had the same problem.

  15. Ken says:

    Hi,

    This looks pretty much exactly what I’m looking for (or really what my ‘other half’ is looking for) well done Vidar!

    One question though, does anyone know if this’ll work with the new craft robo lite (she wants one for christmas) or just the ‘normal’ one??

    Thanks!

  16. Alvin Penner says:

    I just installed graphtecprint-1.0.1 on Windows XP.
    When I run it, I get the message :
    ImportError: No module named fcntl
    Do you know if fcntl, or an equivalent, is available for Windows?

  17. narcan says:

    is it a GNU or other open license program ?
    Can you add it please on header of the script and on the tar.gz?
    Because i would like to add some tips.

  18. Pingback: Links for 2008-12-22 to 2009-02-03 « knolleary

  19. Stefan says:

    I just tested graphtecprint with the Graphtec CE5000-60 (on Ubuntu 8.10) – it didn’t work :(

    The graphtecprint-dialog appears – but no matter what the settings are; when I choose ‘print’ the Status-LED on my plotter blinks one time & then the dialog window freezes.

    The USB ID of the Graphtec CE5000-60 is 0b4d:1114. Please tell me if (& how) I can help you by testing graphtecprint with the Graphtec CE5000.

  20. Rex says:

    Is there any way to manually setup registration marks in inkscape so that they will be read by the graphtec?

  21. Pingback: Zogbench » Ubuntu Applications of preference

  22. Lyle says:

    I just got a Silhouette running on Fedora 8 with this driver. Thanks for the good work. I went with Ulysses’ suggestion of adding users to the ‘lp’ group to fix permissions. Everything works great. I did edit the graphtecprint script to move “Letter” to the default position rather than “A4″. Everything else was plug-and-play.

  23. gary lang says:

    I was hoping you or someone you know could adapt this great interface to use the installed cups devices instead of a usb device. That along with a few other changes to make it function as an inkscape extension would be a big plus for vinyl cutting/engraving via hpgl. I have lots of various hpgl devices to test it on. I know of three people willing to pay for the work ! :)

    thanks

  24. rusl says:

    wow, so awesome! I got this to work for the first time with my new silouette quickutz cc200-20. Using Ubuntu Hardy. I just plugged it in, downloaded all the debs as you mentioned, and then untarred the graphtecprint. Inkscape doesn’t seem to have any postscript piping options so I print to file then command line it. Works great! Every time the machine goes on or off I have to redo the permissions of the /dev/usb/lp0 but that’s easy. And it actually works! i had to try it 3 times because I was trying to figure out what paper to use, what cut depth, how the infeed rollers work… but i think this software end of it was working right from the get-go it was me putting in the wrong paper then having to turn it off to reset it.

    Wonderful, thanks so much I’m so excited about my new toy! This basically works straight out of the box!

    Does anyone know about the head fine tune adjustment thing? Is it worth plugging into a windows machine just to do that?

    The machine sure makes a crazy sound when it prints. Very sci-fi. Kinda sounds like this: http://www.compound-eye.org/radio/

    Thank You!!!

  25. Scriptster says:

    Nice job, Vidar! When I have started my Google search for Linux driver for the device I thought my search will be long and complicated and will probably not produce results! On my Ubuntu 8.10 rig I do have a virtual machine with Win XP x64 but it has all kinds of issues with USB and so results were not guaranteed for me even if I used the software that came with the cutter. So, again, thank you for the nice job you did, saved me bunch of time and aggravation :)

    I have a question that’s maybe more about postscript than graphtecprint but hope you or some of your site visitors familiar with the issue can chime in here and point me to the right direction:
    When you cut text, some letters have internal cuts to be made, most obvious being the letter “O” or “0″ of course. When I send a postscript file to the cutter, it cuts the outer shapes first, then tries to come back for the internal by which time the letter has already been separated from the sheet. Yes, I know the cutter comes with the sticky sheet but it appears to me that if you can control the sequence of cuts, you can eliminate the sticky backing which in my opinion is a very cumbersome device and may not even always work.
    So, is there any idea out there on how to maybe re-process the postscript to send the internal cuts first. My lack of familiarity with PostScript language shows here. In fact I’m not even sure if that was a valid question to ask.
    in any case, if some solution exists, I would greatly appreciate if someone can divulge.

    Thanks!

  26. renegade says:

    Hi! im interested on how to use / create registration marks on inkscape? the program works great! i made my first heat pressed tshirt :) tnx!

  27. Mikerhinos says:

    Hi , thanks for this great tool ! Works like a charm on my old CC100-20 , here is the id :

    ‘MANUFACTURER:Graphtec;MODEL:CC100-20;CLASS:PRINTER;DESCRIPTION:Graphtec CC1′

    I have now to find a way to see craftrobo’s margins in inkscape.

  28. Alan says:

    The CE5000 series (aka Pro) work without graphtecprint as they appear as usblp devices, at least the ones I’ve looked at.

    Put it into HP-GL mode (see manual) and feed it HP-GL. The hpgl-distiller tools may also be useful depending on what app you are using to drive it. You can also do 3 way alignment marks on the pro using inkscape although its a bit of a fiddle getting it all the right way around (mirror Y on inkscape export, rotate enabled on the Graphtec. Click on the bottom left of your alignment marks to get the pixel offset to apply in the export dialogue. Then follow the manual on alignment marks.

  29. fiddlehome says:

    I just figured out how to use this program for the new Silhouette SD machine, using Inkscape version 0.46. It took me a few days to figure out how to set it all up on Jolicloud, but in the end it works great!

    My advice to Jolicloud users, don’t bother with the terminal when installing. Just open the downloaded tarball file and Extract it to the “home” folder, and you are done. When you are ready, print Inkscape images “to file”, select postscript as the format, and save it in the “Home” folder. Then under “accessories”, open the terminal, and paste:

    graphtecprint < output.ps

    and from there on, the Craft Robo software starts up, and it's just normal operation! If things don't run smoothly, try installing the packages mentioned. Open up the terminal, paste "sudo apt-get install", followed by the package names Vidar listed above:

    "graphtecprint requires the following packages to be installed:

    * python (tested with 2.5, other versions may work)
    * python-gtk2
    * python-glade2
    * python-cairo
    * pstoedit (tested with version 3.44, others may work)
    * ghostscript

    Vidar, thanks so much for making this possible!

  30. Tim says:

    Hey guys, I wrote a simple Qt program that can read SVG files (sort of anyway – it doesn’t handle some), and send them to a craft robo 2.

    Check it out here:

    http://concentriclivers.com/?p=Robocut

    There aren’t any binary packages but the compilation instructions are very simple (copy/paste). The main difference between my program and graphtecprint is the use of libusb rather than /dev/lp0. I found it works better – graphtecprint froze for me.

    Also there is a feature where you can animate roughly what the cutting will be like.

    To use it I recommend you make a new A4 SVG in Inkscape and copy/paste your cuts into it. Make sure the export DPI is 90.0 (this is the default) and save as “Plain SVG”. Inkscape doesn’t save dimension information in SVGs for some reason (I know – wtf?) so that is why you have to use a fixed DPI. Oh and remember for some objects you will need to convert them to paths and union them before saving. This isn’t necessary for text unless the letters overlap.

    Feedback appreciated! It should be possible to build on Mac OSX too but I haven’t tried. Video tutorial coming soon!

    :-)

  31. Pingback: Graphtec Craft Robo CC330-20 with Ubuntu | wilkiecat

  32. Freddy says:

    Hi. Thanks very much for providing this software; I can now cut things out using my Graphtec CC200 using Ubuntu and Inkscape. Brilliant!
    I have a question for other users:
    Has anyone successfully managed to print and use registration marks using just Inkscape and graphtecprint under Linux (I don’t have windows so can’t use any of the official Silhouette software)? If so, how and what did you do?
    Thanks.

  33. steve says:

    thanks. it works great on fedora 14 with a silhouette SD.

  34. Dirk says:

    Anyone tried this on the Silhouette CAMEO

  35. Chris S. says:

    HI,
    Just trying out this program. For some reason Inkscape doesn’t show a “postscript operators” print option now. Was it removed or moved? Only option now is “Print to File” and choose PS format.

    Is there some way to get graphtecprint to output to file? I have a Silhouette SD with SD card slot. It’s nice to be able to save files on an SD card and then cut from the LCD screen even without computer. I see graphtecprint has a popup dialog with options but I wonder if there is some trick that could make it print to file instead of usb device?

    Thx.

    • Jürgen Weigert says:

      The file format on an SD card is different. I cannot recognize any commands sent by graphtecprint in an SD-Card file created with the windows software.

      I guess our best option is to create a PPD file for the Silhouette.

  36. Jürgen Weigert says:

    Works great with a Silhouette Cameo.
    I am adding myslef to the lp group (vi /etc/groups) to avoid any struggles with udev.
    Then I added Manufacturer Silhouette to the check of supported devices, like this:

    elif p["MANUFACTURER"] == “Silhouette” or p["MANUFACTURER"] == “WishbladeInc.”:
    # MANUFACTURER:Silhouette;MODEL:CAMEO;CLASS:PRINTER;DESCRIPTION:Silhouette CAMEO;
    if p.has_key(“MODEL”) and p["MODEL"] == “CAMEO”:
    supported = True

  37. Stefan N. says:

    Hi,

    graphtecprint works great,
    but how can I create a perforation?

  38. Stefan N. says:

    Hi,
    after updating ubuntu to 12.04, graphtecprint can not find my plotter.
    lsusb says:
    Bus 004 Device 003: ID 0b4d:111c Graphtec America, Inc.

    please help me!!

  39. Pingback: A paper, vinyl and fabric cutter

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>