# What is SiviCNCDriver ?¶

SiviCNCDriver, as its name lets you guess, is designed to drive a CNC. What does it do ?

• Provides a basic tool to view and edit G-Codes files. You can see which G-Code line draws which path and perform some basic edits with the preprocessor, such as finding an origin to the coordinate system which minimize the bounding box of the drawing.
• Allows you to control manually your CNC, by :
• Sending custom G-Codes so the machine performs continuous movements, or step-by-step movements;
• Sending automatic commands so the machine performs some goings and comings and you can measure the play or the steps/mm.
• Sends as custom G-Codes and store as JSON configuration files for your machine.

# Installation¶

## Using pip¶

On any operating system with a python and pip installated, use pip (you may need superuser privilege)

pip install sivicncdriver


Then you should be able to run the program with a simple:

sivicnc


You can get the development version using pip, although it is not recommended.

pip install git+git://github.com/Klafyvel/SiviCNCDriver


## Binary distribution (Windows)¶

If, for some reasons, you can’t or don’t want to use pip, a binary is available here .

# Contribute¶

The project has its own Git repository on GitHub.

You nill need virtualenv

pip install --user virtualenv


Create a directory in which we will work.

mkdir SiviCNCDriver
cd SiviCNCDriver


Clone the project

git clone https://github.com/Klafyvel/SiviCNCDriver.git


Then create the virtual environment

virtualenv ENV


Activate it

source ENV/bin/activate


cd SiviCNCDriver
pip install -r requirements.txt


You can code ! To test the code, run the application as package

python -m sivicncdriver


If you need to re-create the ui after editing it with QtCreator, you can use make_ui.sh or directly pyuic5.

# Custom G-Codes¶

SiviCNCDriver uses several custom G-Codes, they may change in the future.

Command Explanation
S0 Xnnn Ynnn Znnn Perform a straight line with nnn in steps on the given axes. A negative number make the axis go backward.
S1 X Y Z Trigger continuous advancement forward on the given axes.
S2 X Y Z Trigger continuous advancement backward on the given axes.
S3 X Y Z Stop continuous advancement (if exists) on the given axes.
S5 X Y Z Set driving mode to normal on the given axes.
S6 X Y Z Set driving mode to max torque on the given axes.
S7 X Y Z Set driving mode to half steps on the given axes.
S8 Xnnn Ynnn Znnn Set the play of the given axes, with nnn in millimeters.
S9 X Y Z Set the given axes sense to reverse.
S10 X Y Z Set the given axes sense to normal.
S11 Xnnn Ynnn Znnn Set the minimal duration between two pulses for the given axes.