# CG Plotter

**CG Plotter** is a small tool to send SVG files to plotters for vinyl cutting.

It is based on Switchblade by Joerg Beigang, and is significantly changed from the original.

The workflow is simple: set up your scene in Inkscape or other software, save the plot file, and send it to the plotter. 

This version (CGPlotter) uses many features only available in Mimaki Plotters, and uses some of the HP-GL extensions available in the MGL-IIc graphics language used by Mimaki.

So this software will not work on other makes of plotter.

The functionality has been extended to include some of the simpler functions of the Mimaki Finecut package, including:

- the plotter is interrogated to get the width of the plotting surface to use when scaling or making multiple copies across the page
- the plotter settings allows for step sizes of 0.025mm and 0.01mm, as these are the only values applicable to the CG series
- Tool Settings allows the user to:
  - use the currently selected tool on the plotter,
  - to select one of the tools that is set up on the plotter, 
  - create a temporary tool with completly custom settings.
- a mirror function has been added to the rotate option and this has been simplified within the code.
- the SVG scale option works in percentages rather than fractions
- the plot can be sent to the left side of the plotter width, the centre, or the right hand side
- a margin can be applied around the item to be plotted
- an item can be duplicated across the width of the plotter width (starting at the bottom right), and the row of items can be duplicated up the 
  plotter length to give multiple copies of the SVG, including the frame and margin if they were applied. If the generated plot is wider than the loaded sheet it will not plot the svg.     
             
It is intended that the SVG files are created by Inkscape, other sources may work.

This program stands alone, i.e it does not integrate with inkscape at all. The worflow using this setup is very convenient.

---
## Usage

- setup your plotter to 9600 baud, 8 bits, parity: None, stop bit: 1 handshake: hard
- use a usb to serial adapter to connect your computer to the plotter. It is important that the cable is supporting RTS/CTS. Some cheap adapters only connect tx rx and gnd. They will work only with jobs smaller than the buffer of the plotter! Chipsets like FTDI or Prolific or CH340 should work. 
- Make sure everything in your SVG is a **path**—no text or other primitives.  
- Best practice: group everything in one group. Avoid negative scaling.  
- In Inkscape: drag-select all → `Ctrl+Shift+G` to ungroup (repeat till all groups are gone) → `Ctrl+G` to group → save.
- Use the export command rather than save as SVG, select only the items you want to export, and use plain SVG format
### Keyboard Shortcuts

- `Ctrl+O` → Open SVG  
- `Ctrl+R` → Reload file  
- `Ctrl+P` → Plot  
- `Ctrl+,` → Settings dialog

---

## Technical Details

CG Plotter is written in Python, so it’s cross-platform. The releases include binaries for Linux, and Windows.

--

## Motivation

This is based on Switchblade, which attempts to be a generic tool for many plotter types and brands. 
I think the extra capabilities within the MCG-IIc language and on the CG series of plotters are too good to waste so I have made use of these as much as I can.
I have used the Mimaki Finecut software (version 5 and 7) as the basis for some of the extra functionality I introduced on this version.

---

## Compatibility

Tested on a Mimaki CG-60st, but should work on any CG series, and possibly some CF series.

---


## Final Notes

This is a personal project and not polished commercial software.  
I hope it can be useful for others, and maybe inspire someone to pick up an old professional plotter instead of a cheap new model.

