From 5ae6b74a3f00eb56319b45d6ed4ede7d9e2ad937 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Fri, 9 Jul 2021 20:31:37 -0400 Subject: [PATCH] add option for screenshot/thumbnail in gcode export --- src/add/array.js | 10 +++++++++- src/kiri/conf.js | 1 + src/kiri/init.js | 2 ++ src/kiri/main.js | 4 ++-- src/mode/fdm/export.js | 14 +++++++++++++- src/moto/space.js | 22 ++++++++++++++++++++-- 6 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/add/array.js b/src/add/array.js index 9b67a7cb..d08ee346 100644 --- a/src/add/array.js +++ b/src/add/array.js @@ -170,7 +170,7 @@ return this.filter(v => isNaN(v)).length > 0; }; - for(let i in AP){ + for (let i in AP) { Object.defineProperty(Array.prototype, i, { value: AP[i], enumerable: false @@ -193,6 +193,14 @@ return o ? JSON.parse(JSON.stringify(o)) : o; }; + Object.toArray = function(o) { + let ret = []; + for (let [key,value] of Object.entries(o)) { + ret.push({key, value}); + } + return ret; + }; + Math.bound = function(val,min,max) { return Math.max(min,Math.min(max,val)); }; diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 55a07d07..e7358b0d 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -686,6 +686,7 @@ exportOcto: false, exportGhost: false, exportLocal: false, + exportThumb: false, exportPreview: false, decimate: true, detail: "75", diff --git a/src/kiri/init.js b/src/kiri/init.js index 1d8a6f9e..0855cc1b 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -157,6 +157,7 @@ control.exportOcto = UI.exportOcto.checked; control.exportGhost = UI.exportGhost.checked; control.exportLocal = UI.exportLocal.checked; + control.exportThumb = UI.exportThumb.checked; control.exportPreview = UI.exportPreview.checked; control.decimate = UI.decimate.checked; control.healMesh = UI.healMesh.checked; @@ -1644,6 +1645,7 @@ exportOcto: UC.newBoolean(`OctoPrint`, booleanSave), exportGhost: UC.newBoolean(`Grid:Host`, booleanSave), exportLocal: UC.newBoolean(`Grid:Local`, booleanSave), + exportThumb: UC.newBoolean(`Thumbnail`, booleanSave), exportPreview: UC.newBoolean(`Code Preview`, booleanSave), parts: UC.newGroup(LANG.pt_menu, $('prefs-prt'), {inline: true}), diff --git a/src/kiri/main.js b/src/kiri/main.js index 475a31be..010622b9 100644 --- a/src/kiri/main.js +++ b/src/kiri/main.js @@ -992,8 +992,8 @@ console.log/** Copyright Stewart Allen -- All Rights Reserved */ function prepareSlices(callback, scale = 1, offset = 0) { if (viewMode == VIEWS.ARRANGE) { let snap = SPACE.screenshot(); - API.view.snapshot = snap.substring(snap.indexOf(",")+1); - KIRI.work.snap(API.view.snapshot); + API.view.snapshot = snap.substring(snap.indexOf(",") + 1); + KIRI.work.snap(SPACE.screenshot2()); } if (MODE === MODES.SLA && !callback) { callback = preparePreview; diff --git a/src/mode/fdm/export.js b/src/mode/fdm/export.js index 0f70eda2..f91f5491 100644 --- a/src/mode/fdm/export.js +++ b/src/mode/fdm/export.js @@ -16,6 +16,8 @@ FDM.export = function(print, online, ondone, ondebug) { let layers = print.output, settings = FDM.fixExtruders(print.settings), + controller = settings.controller, + thumbnails = controller.exportThumb, getRangeParameters = FDM.getRangeParameters, device = settings.device, extruders = device.extruders, @@ -27,7 +29,7 @@ zMoveMax = device.deviceZMax || 0, tool = 0, fwRetract = device.fwRetract, - isDanger = settings.controller.danger, + isDanger = controller.danger, isBelt = device.bedBelt, bedType = isBelt ? "belt" : "fixed", extruder = extruders[tool], @@ -205,6 +207,16 @@ appendSub("; Bed left:{left} right:{right} top:{top} bottom:{bottom}"); append(`; Bed type: ${bedType}`); append(`; Target: ${settings.filter[settings.mode]}`); + // inject thumbnail preview + if (thumbnails && worker.snap) { + let { width, height, url } = worker.snap; + let data = url.substring(url.indexOf(',') + 1); + append(`; thumbnail begin ${width} ${height} ${data.length}`); + for (let i=0; i