- Notifications
You must be signed in to change notification settings - Fork16
cncjs/gcode-toolpath
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
npm install --save gcode-toolpath
constToolpath=require('gcode-toolpath');consttoolpaths=[];consttoolpath=newToolpath({// Initial position (optional)position:{x:0,y:0,z:0},// Initial modal state (optional)modal:{motion:'G0',// G0, G1, G2, G3, G38.2, G38.3, G38.4, G38.5, G80wcs:'G54',// G54, G55, G56, G57, G58, G59plane:'G17',// G17: xy-plane, G18: xz-plane, G19: yz-planeunits:'G21',// G20: Inches, G21: Millimetersdistance:'G90',// G90: Absolute, G91: Relativefeedrate:'G94',// G93: Inverse time mode, G94: Units per minute, G95: Units per revprogram:'M0',// M0, M1, M2, M30spindle:'M5',// M3, M4, M5coolant:'M9',// M7, M8, M9tool:0},//@param {object} modal The modal object.//@param {object} v1 A 3D vector of the start point.//@param {object} v2 A 3D vector of the end point.addLine:(modal,v1,v2)=>{constmotion=modal.motion;consttool=modal.tool;toolpaths.push({motion:motion,tool:tool,v1:v1,v2:v2});},//@param {object} modal The modal object.//@param {object} v1 A 3D vector of the start point.//@param {object} v2 A 3D vector of the end point.//@param {object} v0 A 3D vector of the fixed point.addArcCurve:(modal,v1,v2,v0)=>{constmotion=modal.motion;consttool=modal.tool;toolpaths.push({motion:motion,tool:tool,v1:v1,v2:v2,v0:v0});}});// Positiontoolpath.setPosition({x:100,y:10});// x=100, y=10, z=0toolpath.setPosition(10,20,30);// x=10, y=20, z=30// Modaltoolpath.setModal({tool:1});// Load G-code from fileconstfile='example.nc';toolpath.loadFromFile(file,function(err,data){});// Load G-code from streamconststream=fs.createReadStream(file,{encoding:'utf8'});toolpath.loadFromStream(stream,function(err,data){});// Load G-code from stringconststr=fs.readFileSync(file,'utf8');toolpath.loadFromString(str,function(err,data){});
Run this example with babel-node:
importToolpathfrom'gcode-toolpath';constGCODE=['N1 T2 G17 G20 G90 G94 G54','N2 G0 Z0.25','N3 X-0.5 Y0.','N4 Z0.1','N5 G01 Z0. F5.','N6 G02 X0. Y0.5 I0.5 J0. F2.5','N7 X0.5 Y0. I0. J-0.5','N8 X0. Y-0.5 I-0.5 J0.','N9 X-0.5 Y0. I0. J0.5','N10 G01 Z0.1 F5.','N11 G00 X0. Y0. Z0.25'].join('\n');consttoolpaths=[];consttoolpath=newToolpath({//@param {object} modal The modal object.//@param {object} v1 A 3D vector of the start point.//@param {object} v2 A 3D vector of the end point.addLine:(modal,v1,v2)=>{constmotion=modal.motion;consttool=modal.tool;toolpaths.push({motion:motion,tool:tool,v1:v1,v2:v2});},//@param {object} modal The modal object.//@param {object} v1 A 3D vector of the start point.//@param {object} v2 A 3D vector of the end point.//@param {object} v0 A 3D vector of the fixed point.addArcCurve:(modal,v1,v2,v0)=>{constmotion=modal.motion;consttool=modal.tool;toolpaths.push({motion:motion,tool:tool,v1:v1,v2:v2,v0:v0});}});toolpath.loadFromString(GCODE,(err,results)=>{console.log(toolpaths);}).on('data',(data)=>{// 'data' event listener}).on('end',(results)=>{// 'end' event listener});
and you will see the output as below:
[{motion:'G0',tool:2,v1:{x:0,y:0,z:0},v2:{x:0,y:0,z:6.35}},{motion:'G0',tool:2,v1:{x:0,y:0,z:6.35},v2:{x:-12.7,y:0,z:6.35}},{motion:'G0',tool:2,v1:{x:-12.7,y:0,z:6.35},v2:{x:-12.7,y:0,z:2.54}},{motion:'G1',tool:2,v1:{x:-12.7,y:0,z:2.54},v2:{x:-12.7,y:0,z:0}},{motion:'G2',tool:2,v1:{x:-12.7,y:0,z:0},v2:{x:0,y:12.7,z:0},v0:{x:0,y:0,z:0}},{motion:'G2',tool:2,v1:{x:0,y:12.7,z:0},v2:{x:12.7,y:0,z:0},v0:{x:0,y:0,z:0}},{motion:'G2',tool:2,v1:{x:12.7,y:0,z:0},v2:{x:0,y:-12.7,z:0},v0:{x:0,y:0,z:0}},{motion:'G2',tool:2,v1:{x:0,y:-12.7,z:0},v2:{x:-12.7,y:0,z:0},v0:{x:0,y:0,z:0}},{motion:'G1',tool:2,v1:{x:-12.7,y:0,z:0},v2:{x:-12.7,y:0,z:2.54}},{motion:'G0',tool:2,v1:{x:-12.7,y:0,z:2.54},v2:{x:0,y:0,z:6.35}}]
Check out the source code athttps://github.com/cncjs/cnc/blob/master/src/web/widgets/Visualizer/GCodeVisualizer.js
MIT
About
G-code Toolpath Generator
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published