• Stars
    star
    465
  • Rank 94,287 (Top 2 %)
  • Language
    TypeScript
  • License
    GNU Affero Genera...
  • Created over 7 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tools & library for driving the AxiDraw pen plotter

saxi

make plot good

saxi is a tool for interacting with the AxiDraw drawing machine by Evil Mad Scientist. It comes with an easy-to-use interface, and is exactingly precise.

  • automatically scales & centers your drawing to fit on the paper
  • minimizes pen-up travel time by reordering & reversing paths
  • uses a custom motion planning algorithm (inspired by axi) that's smooth & fast
  • automatically splits apart layers based on SVG stroke colors or group IDs
  • has a web-based UI, so there's no need to muck around with installing X11 and Inkscape
  • can run on a Raspberry Pi or similar, so you don't need to be tethered to your plotter while it plots

a screenshot of the saxi user interface

Usage

$ npm i -g saxi
$ saxi
Server listening on http://0.0.0.0:9080
Connecting to EBB on /dev/tty.usbmodem1461

If you encounter an EACCES error when installing the package globally, see Resolving EACCES permissions errors when installing packages globally.

Raspberry Pi

To install saxi on a Raspberry Pi, first install node.js if you haven't already:

$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt-get install -y nodejs

and then proceed as above :) If you connect to the raspberry pi over ssh, you might want to run the saxi server inside a tmux or screen session to have it stay running even if your ssh session disconnects.

CORS

If you want to connect to saxi from a web page that isn't served by saxi itself, you'll need to enable CORS, otherwise GET/POST requests will be denied by the browser. CORS is disabled by default as a security precaution, but if you need it it's available. Just launch saxi with the --enable-cors flag.

Info

saxi makes use of the low-level LM command introduced in EBB firmware version 2.5.3 to carry out highly accurate constant-acceleration motion plans. If your AxiDraw is running an older version of the firmware, saxi will fall back to the less-accurate (but still pretty accurate) XM command.

To check what version of the EBB firmware your AxiDraw is running, run saxi --firmware-version:

$ saxi --firmware-version
EBBv13_and_above EB Firmware Version 2.5.3

To upgrade your AxiDraw's firmware, see here.

Developing

To work on saxi, you can clone this repo and then run npm start:

$ git clone https://github.com/nornagon/saxi
$ cd saxi
$ npm run dev

This will watch local files for changes. If you change the server code, you'll need to restart manually.

Credits

saxi's motion planning algorithm is heavily inspired by Michael Fogleman's axi project.

saxi's UI would be an ugly mess if it weren't for @kylestetz's discerning eye.

Thanks to Evil Mad Scientist for designing and building such a lovely machine!


Made with saxi

These images were plotted by folks using saxi. If you'd like to add something you've made here, shoot me an email!

Plotted image by @targz

by Julien Terraz (@targz)

Plotted image by @abey79

by Antoine Beyeler (@abey79)

Plotted image by @MAKIO135

by Lionel Radisson (@MAKIO135)

Plotted image by @daniel_feles

by Daniel Feles (@daniel_feles)

More Repositories

1

jonesforth

Mirror of JONESFORTH
Assembly
926
star
2

scrubby

Tweak values in JavaScript without having to reload.
JavaScript
312
star
3

cdda-guide

The Hitchhiker's Guide to the Cataclysm
Svelte
113
star
4

twitter-bookmark-archiver

Download your Twitter bookmarks and associated media
JavaScript
101
star
5

nodecraft

Minecraft server in node.js
JavaScript
95
star
6

atom

a <canvas> game framework that does as little as possible
CoffeeScript
88
star
7

ircv

IRC inna Chrome app
CoffeeScript
72
star
8

git-rebase-all

Rebase many branches at once, useful for updating topic branches against upstream
Shell
52
star
9

flatten-svg

Flatten SVGs into points
JavaScript
52
star
10

electron-minidump

Symbolicate Electron minidumps
JavaScript
36
star
11

autowiki

Autowiki is a tool for creating networked documents.
TypeScript
24
star
12

hf-mission-planner

Mission planner for the board game High Frontier
JavaScript
22
star
13

thistle

JavaScript HSL color picker
CoffeeScript
20
star
14

stam-stable-fluids

Real-Time Fluid Dynamics for Games, Jos Stam 2003 [JS port]
JavaScript
17
star
15

mkanki

Generate Anki decks. Supports cloze models and adding media.
JavaScript
12
star
16

node-zap

a tiny testing tool for node.js
JavaScript
10
star
17

fov.js

field of vision calculation library
JavaScript
10
star
18

bf.wasm

Compile Brainfuck to WebAssembly
JavaScript
8
star
19

xray-python-opentracing

OpenTracing adapter for AWS X-Ray
Python
8
star
20

finch-trials-history

7
star
21

polarity

My entry for Ludum Dare #23: change your polarity, solve puzzles!
JavaScript
7
star
22

finch-trials

Fetch and parse Chrome's Finch trial configuration
JavaScript
7
star
23

cdda-data

JavaScript
6
star
24

blox

WebGL minecraft-style voxelly goodness
JavaScript
6
star
25

optimize-paths

Optimize linear paths for plotting
TypeScript
6
star
26

rust-skia-game-test

Example of using Rust + Skia to render into a native OS window
Rust
6
star
27

World-of-Sand-DS

World of Sand for the Nintendo DS
C
6
star
28

node-conseq

A small library for making nested async calls more manageable in node.js
JavaScript
6
star
29

espforth

Assembly
5
star
30

skia-zig

5
star
31

erthur

A mapping tool for Dwarf Fortress
JavaScript
5
star
32

growing

CoffeeScript
4
star
33

constraint-solving-pcg

Using Constraints to Generate Content That Follows Rules
Python
4
star
34

minidump-rs

Rust
4
star
35

airpaint

ASCII Art Editor
JavaScript
4
star
36

sharevim

ShareJS + vim
CoffeeScript
3
star
37

gameplan

CoffeeScript
3
star
38

node-wake-lock

stop your machine from sleeping when it's doing importantβ„’ things
C++
3
star
39

saxi-app

JavaScript
3
star
40

remarkable-wikilink

Parse [[MediaWiki-style links]] in Markdown with Remarkable
JavaScript
3
star
41

SpyWear

A game of deception and explosions.
Python
3
star
42

irc5

Persistent IRC client in the browser
CoffeeScript
3
star
43

wasm-minidump

Parse minidump files in the browser
Rust
3
star
44

hfov

Haskell bindings to Greg McIntyre's FOV library
C
3
star
45

scanvas

Skia-backed, lightning-fast 2D graphics library for Scala
Scala
3
star
46

cdda-more-city-locations

Makefile
3
star
47

jslint-node-edition

JSLint JavaScript code quality tool ported to Node.js from Rhino
JavaScript
3
star
48

cdda-json-lsp

TypeScript
3
star
49

dillinger-app

dillinger.io wrapped in electron
JavaScript
2
star
50

Preloader

Fork of https://gitlab.com/troyengel/Preloader
PHP
2
star
51

space

CoffeeScript
2
star
52

ponk

Pong with physics
JavaScript
2
star
53

inat-bingo

HTML
2
star
54

old-chrome

Get download links for old versions of Chrome
JavaScript
2
star
55

nanites

CoffeeScript
2
star
56

math-snippets

Bits of math I don't want to figure out again
CoffeeScript
2
star
57

hexing-ncurses

A talk I gave at WaffleJS in June 2019 about terminals and how ncurses works
JavaScript
2
star
58

resize-text

JS helper to resize text to fit a given rectangle
JavaScript
2
star
59

live

live-edit JavaScript
CoffeeScript
2
star
60

tralien

JS+canvas scifi roguelike game
JavaScript
2
star
61

rnd-tumblr-theme

Robots & Dinosaurs tumblr theme
2
star
62

optimize-paths-svg-example

Example code for flatten-svg + optimize-paths
JavaScript
2
star
63

random-plant

Random plants
HTML
1
star
64

flickr-gesture

A tool for practicing gesture drawing.
TypeScript
1
star
65

github-notifs-plus

Enhance the GitHub Notifications UI
JavaScript
1
star
66

electron-webgl-memory-test

JavaScript
1
star
67

parse-breakpad

Parse breakpad .sym files in JS
JavaScript
1
star
68

dot-files

Vim Script
1
star
69

kit

Scala
1
star
70

standoff

CoffeeScript
1
star
71

sat-game

TypeScript
1
star
72

torch

A realtime roguelike engine with dynamic lighting for the NDS
C
1
star
73

symbolicate-trace

Symbolicate cpu_profiler samples taken from Electron apps
JavaScript
1
star
74

gossamer

Thin shell for game
JavaScript
1
star
75

tronic

programmer nomic
CoffeeScript
1
star
76

zim

zooming, collaborative vim-like editor
CoffeeScript
1
star
77

10days

CoffeeScript
1
star
78

adrift

Scala
1
star
79

wobble-tower

Like Tetris, but wobblier
GDScript
1
star
80

geo

CoffeeScript
1
star
81

pong

JavaScript
1
star
82

clickfight

CoffeeScript
1
star
83

minisat-js-ffi

C++
1
star
84

ur-a-dorf

JavaScript
1
star
85

bakermot

Chrome app to drive a MakerBot
JavaScript
1
star
86

torumekia

The Sea of Corruption
Scala
1
star
87

Gust

You are the wind.
JavaScript
1
star
88

mellifluence

Boilerplate web audio code
CoffeeScript
1
star
89

dforth

Forth on DCPU-16. Because we can.
Haskell
1
star
90

flip

Exercising the compositor, showing that it's slow
1
star
91

write-macho

JavaScript
1
star
92

quickerfort

QuickFort-like blueprint placer for Dwarf Fortress + dfhack
Lua
1
star
93

sharechat

live chat
CoffeeScript
1
star
94

continuum

Time becomes space
JavaScript
1
star
95

forcegod

random game doodle
JavaScript
1
star
96

play-cdda

Play Cataclysm: Dark Days Ahead in your browser
JavaScript
1
star