a DSL to do numerical control for CNC machines
john ac9d0daf1d fix header for link | 2 months ago | |
---|---|---|
examples | 7 months ago | |
.gitignore | 7 months ago | |
LICENSE | 7 months ago | |
README.md | 2 months ago | |
cylinder.jsnc | 5 months ago | |
gcode.json | 7 months ago | |
index.html | 7 months ago | |
index.js | 2 months ago | |
jsconfig.json | 3 months ago | |
stdPaths.jsnc | 3 months ago |
JSNC is a small DSL and library for generating gcode for CNC machines. It allows you to use all the power of a scripting language to create otherwise difficult toolpaths. It is inspired in part by OpenSCAD.
Here is a code that generates a Lorentz Attractor. goodluck modeling THAT in autocad :P
let x = 0.01;
let y = 0.01;
let z = 0.01;
let o = 10;
let p = 28;
let B = 8 / 3;
let dt = 0.001;
let scale = 2;
G21
G90
G0 Z0 F1300
for (let i = 0; i < 100000; i++) {
const dx = o * (y - x);
const dy = x * (p - z) - y;
const dz = x * y - B * z;
x += dx * dt;
y += dy * dt;
z += dz * dt;
G0 X${trnc(x)*scale} Y${trnc(y)*scale}
}
function trnc(v){
return Math.round(v*1000)/1000
}
G0 Z1
M5