diff --git a/notes.md b/notes.md index 4c7f9c32..b442cc0d 100644 --- a/notes.md +++ b/notes.md @@ -102,6 +102,7 @@ * `F` ease-in and ease-out especially on tab cut-out start/stop * `F` maintain several part orientations + op chains in a single profile +* `P` improve parser - do not require spaced tokens and support implied G0 / G1 * `P` inner corner arc moves * `P` log Z interpolation for contour XYZ moves * `P` option to start with the smallest poly by area on layer change diff --git a/package.json b/package.json index cad51233..be134470 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "grid-apps", - "version": "3.8.9D", + "version": "3.8.10D", "description": "grid.space 3d slice & modeling tools", "author": "Stewart Allen ", "license": "MIT", diff --git a/src/kiri-mode/cam/ops.js b/src/kiri-mode/cam/ops.js index a0a0ab71..4f4381b1 100644 --- a/src/kiri-mode/cam/ops.js +++ b/src/kiri-mode/cam/ops.js @@ -958,14 +958,14 @@ class OpTrace extends CamOp { poly2polyEmit(polys, newPoint(0,0,0), (poly, index, count, spoint) => { routed.push(poly); }); - for (let poly of routed) { + for (let poly of POLY.nest(routed)) { let offdist = 0; switch (offset) { case "outside": offdist = toolDiam / 2; break; case "inside": offdist = -toolDiam / 2; break; } if (offdist) { - let pnew = POLY.offset([poly], offdist); + let pnew = POLY.offset([poly], offdist, { minArea: 0 }); if (pnew) { poly = POLY.setZ(pnew, poly.getZ()); } else { diff --git a/src/kiri/print.js b/src/kiri/print.js index 0c49236c..9bb1da7e 100644 --- a/src/kiri/print.js +++ b/src/kiri/print.js @@ -475,7 +475,10 @@ class Print { newlayer = true; autolayer = false; } - line = line.split(";")[0].split(" ").filter(v => v); + // if (["X","Y","Z"].indexOf(line.charAt(0)) >= 0) { + // line = `G0${line}`; + // } + line = line.trim().split(";")[0].split(" ").filter(v => v); let cmd = line.shift(); if (!cmd) return; if (cmd.charAt(0) === 'T') { @@ -486,6 +489,7 @@ class Print { xoff.Y = -ext[pos].extOffsetY; } } + pos.E = 0.0; switch (cmd) { case 'M82': diff --git a/src/main/kiri.js b/src/main/kiri.js index 5cbce0b9..a6dc6878 100644 --- a/src/main/kiri.js +++ b/src/main/kiri.js @@ -15,7 +15,7 @@ gapp.main("main.kiri", [], (root) => { const modfns = root.kirimod = ( root.kirimod || [] ); const kiri = root.kiri = { - beta: 3809, + beta: 3810, driver: {}, // driver modules load(fn) { modfns.push(fn); diff --git a/src/moto/license.js b/src/moto/license.js index a4fc30a6..0afcec8b 100644 --- a/src/moto/license.js +++ b/src/moto/license.js @@ -5,7 +5,7 @@ let terms = { COPYRIGHT: "Copyright (C) Stewart Allen - All Rights Reserved", LICENSE: "See the license.md file included with the source distribution", - VERSION: (is_self ? self : this).debug_version || "3.8.D9" + VERSION: (is_self ? self : this).debug_version || "3.8.D10" }; if (typeof(module) === 'object') { diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index b890ca69..7e854563 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -677,7 +677,7 @@ self.kiri.lang['en-us'] = { ou_depf_s: "depth first", ou_depf_l: ["optimize pocket cuts","with depth priority"], ou_toin_s: "tool init", - ou_toin_l: "emit tool change with first operation", + ou_toin_l: "add tool change with first operation. when disabled, the gcode assumes the first tool is loaded and offset probed", ou_forz_s: "force z max", ou_forz_l: "all moves between pockets will go to z max (above stock). this is usually required if you are not performing a roughing operation before pocketing operations.", ou_z1st_s: "first z max",