#6 Support for Graphtec cutter (e.g. Silhouette Cameo or Portrait)


I'm a bit new in the "cutting field". I made a little research and Graphtec cutters (e.g. Silhouette Cameo or Portrait) are less supported because use different communication protocol.

Its's posibble to include support to that line of cutters?

There are some programs that's acctualy support them like robocut and graphtecprint. But inkcut its much usable by far an it would be great to include that cutter because toomuch people use them.



  • Marco

    Marco - 2013-11-01

    the specification says that supports GP-GL™, HP-GL®. The first is the "official" protocol.

    The problem is that my cutter doesn't apear in the device windows so cannot coose to test its HP-GL support

  • lwernars

    lwernars - 2013-11-01

    Your cutter is connected by USB, I believe, you can send the data direct to the USB-port (/dev/ttyUSB0 or so). With USB sometimes 9600 baud, sometimes higher up to 38200 or 115200
    Or you can install a RAW-printer, then you can select it from the printers-dialog.
    For the DMPL solutions I sniffed the serial-port with another program the cutter was responding to. That was on Windows XP, but now the cutters are connected by a USB2Serial cable and with Linux with Inkscape/Inkcut!

    GP-GL is different from HPGL, but HPGL can be converted into valid GPGL with some replace-statements. See my solution for DMPL and thhis page:
    You need replace PU(Pen up) into M and PD(Pen Down) into D, VS(velocity) into !, the start IN into ; , last IN; into H .
    I believe that your plotter then will function. To get the test-plot running, you need to modify the testfile in ../tests/test.hpgl to replace the commands.
    I have no Silhouette or Cameo here, so I cannot test it for you. When I can get my hands on one for cheap, I will test it and put the code here.


  • lwernars

    lwernars - 2015-02-04

    Today I had luck and bought a Silhouette SD. They said it is defect, path should not be straight anymore, but is still cutting. Perfect device to use for testing!

    The device has USB, it's device driver is located at /dev/usb/lp0. Point a raw printerdriver to that and you have a nice extra 'printer'.
    Start Inkcut, select printing and select the printer. Click on test and the square will be cut. So far so good.
    I have tested a few plotting-languages GPGL, HPGL and DMPL: all three are functioning with this device.

    I tested force and speed also, but by hand, seems tot me that the device is ignoring everything, and still falls back to his own build-in value.
    That is consistent witch is what bstabens said.
    When I use FX for force, the the pressure is on, so I will change that.
    hpgl = hpgl.replace(";FS","FX",1) # pressure

    Last edit: lwernars 2015-02-05
  • bstabens

    bstabens - 2015-02-04

    I'll try that with the Portrait, too, as soon as I've got time.
    Thanks for the info, you're great!

  • bstabens

    bstabens - 2015-02-05

    Actually, it's easy, once you know it.
    It's as follow:
    H for home, !4 for velocity? and - tadaaa - FXPressure1-31,Speed1-10 everything else.
    Or, in code:
    hpgl = hpgl.replace(";FS","FX",1) # pressure
    - and somebody please tell me how to concatenate in python the value of VS.

    Cuts like a charm. SOOOO HAPPYYYYY and dancing a little dance now.


  • bstabens

    bstabens - 2015-02-05

    Correction after more testing:
    !4 (at least up to ten) = velocity (VS)
    FXa,b = Pressure, where final pressure seems to be the product of a and b.
    FX31,10 cuts a deeper cut than FX31,1.


  • lwernars

    lwernars - 2015-02-05

    FX31,10: Is the speed then equal as in FX31,1?

    Perhaps there must be a calculation from the pressure-slider, the variables are here: in path.py, def toHPGL

    So if you have the force, then you can divide it by 31 and then do a modulo on the rest + 1:
    So 300 : 31 = 9.677419355
    modulo 9.677419355 = 9
    Count 1 to it and you have ten
    I think it is:
    force = '31', %(self.force/31) + 1
    But I have not tested it.
    And there must something be done if the force is equal or lower than 31...

    this works if force>31:
    hpgl = hpgl.replace(";FS" + str(int(self.force)), "FX31," + str(int(self.force / 31) +1) ,1) # pressure

    If force< 31 then FX31,1 will be the value..

    Good luck!

    Last edit: lwernars 2015-02-05
  • bstabens

    bstabens - 2015-02-05

    Okay, more thoroughly tested. A second parameter for FX seems not to be needed. Cuts the same without it (I used some thick cardboard to better see the differences).
    The speed is controlled by !4, there is a clear difference between setting 1 and setting 10. There's no speed difference if you put FX31,10 or FX31,1. Which makes sense regarding it also works with simple FX31. Maybe there's some relation to the level of the blade (which can also be set from 1 to 10), but for now I could not find any. More testing required, but in fact it already works, so who cares?
    At the moment I'm trying to find the right values for different paper weights, a 20 cuts thin printer paper, but a 25 for slightly heavier colored stockpaper is nearly not enough.
    So, my next goal would be to:
    - expand the plotteroption with "Silhouette Portrait"
    - always give him a mediasize of 21x29.7 cm when using "Silhouette Portrait"
    - find out how to "contour cut".


  • lwernars

    lwernars - 2015-02-06

    I believe that this is then the 'final' solution:
    hpgl = hpgl.replace(";FS" + str(int(self.force)), "FX" + str(int(self.force / 10) +1)+ ",1" ,1) # pressure

    The force of the slider divided by ten, make integer, and plus one.
    Then your settings vary between 2 and 31. The second parameter, you said it makes no difference, is fixed at just 1.

    Contourcut can be manually done, I have made it working.
    You must walk to point 0, then fix that value, walk to point 1 and fix that value too. Then you can calculate the difference and thus the degree the paper is rotated and which direction. Then the plot is rotated also..
    When you go back to point 0 then that will be your starting-point to plot.

    For A4-size paper I got 0,5 mm off the track with this measurement.
    How it must be done to read out the values from the plotter I do not know. The Silhouette I bought cannot do a contourcut, so I cannot help you with that one.
    I believe this is fixed now, anyone interested in a Silhouette SD cutter?

    Last edit: lwernars 2015-02-06
  • Wendy Van W

    Wendy Van W - 2015-09-18


    As an outsider, some things are not clear - your enthousiasm is, though - that's great!!)

    ===> Where exactly do you tweak the velocity and pressure
    - in the Inkcut graphical interface? (but I understand from your posts that this information is being ignored)
    - add it to the hpgl code of your vectorial drawing? --> is it possible to add an "example" file?
    - in the python code of one of the Inkcut plugin file? Where? --> is it possible to add an "example" file?

    I sense a beautiful solution to using Inkcut for the Silhouette Cameo with Linux - as the current Robocut version does not want to compile properly (probably dependencies)

    Also, I have to give a solution for this machine in Senegal, where I will be giving workshops in one and a half weeks.. They have a machine, but the Robocut software does not want to work anymore.

    Greetings from Brussels,

  • bstabens

    bstabens - 2015-09-18

    In the attached file you'll find an inkcut "version" ready to use with a Silhouette Portrait. You just choose "Silhouette Portrait". I don't know, though, if this will also work with a Cameo.
    There's a second tab in the main window, called "Options" where you can tweak velocity and pressure.
    After some using, I just have to issue a warning: There are times when the Silhouette
    - may start cutting randomly
    - may cut too small
    - may cut fine, but then not lift the blade while going to home point
    - may tell you while opening that there are errors in some classes. When this occurs, you'll have to edit the settings file manually and set some parameters. Easier way to fix this is to save a copy of inkscape/extensions/inkcut/app/config/settings.xml somewhere else and just replace it .
    So, it is working, but could use a little tweaking. Maybe, if I really get around to learning python... sighs



Log in to post a comment.