add screenshot support for grid-print

This commit is contained in:
Stewart Allen 2017-10-30 14:21:23 -04:00
commit 23bfbf09db
2 changed files with 26 additions and 6 deletions

View file

@ -411,6 +411,7 @@ self.kiri.license = exports.LICENSE;
STARTMODE = SETUP.sm && SETUP.sm.length === 1 ? SETUP.sm[0] : null, STARTMODE = SETUP.sm && SETUP.sm.length === 1 ? SETUP.sm[0] : null,
MODE = MODES.FDM, MODE = MODES.FDM,
onEvent = {}, onEvent = {},
screenShot = null,
currentPrint = null, currentPrint = null,
selectedMeshes = [], selectedMeshes = [],
localFilterKey ='kiri-gcode-filters', localFilterKey ='kiri-gcode-filters',
@ -804,8 +805,6 @@ self.kiri.license = exports.LICENSE;
} }
function preparePrint(callback) { function preparePrint(callback) {
setViewMode(VIEWS.PREVIEW);
// kick off slicing it hasn't been done already // kick off slicing it hasn't been done already
for (var i=0; i < WIDGETS.length; i++) { for (var i=0; i < WIDGETS.length; i++) {
if (!WIDGETS[i].slices || WIDGETS[i].isModified()) { if (!WIDGETS[i].slices || WIDGETS[i].isModified()) {
@ -814,6 +813,8 @@ self.kiri.license = exports.LICENSE;
} }
} }
setViewMode(VIEWS.PREVIEW);
clearPrint(); clearPrint();
saveSettings(); saveSettings();
@ -916,8 +917,8 @@ self.kiri.license = exports.LICENSE;
KIRI.serial.setGCode(gcode, currentPrint.bounds); KIRI.serial.setGCode(gcode, currentPrint.bounds);
} }
var pre = MODE === MODES.CAM ? "cnc-" : "print-", var pre = MODE === MODES.CAM ? "cnc" : "print",
filename = pre+(new Date().getTime().toString(36)), filename = pre,// + (new Date().getTime().toString(36)),
fileext = settings.device.gcodeFExt || "gcode", fileext = settings.device.gcodeFExt || "gcode",
octo_host, octo_host,
octo_apik, octo_apik,
@ -1025,13 +1026,20 @@ self.kiri.license = exports.LICENSE;
setProgress(Math.ceil(evt.loaded/evt.total), "sending"); setProgress(Math.ceil(evt.loaded/evt.total), "sending");
}); });
filename = $('print-filename').value; filename = $('print-filename').value;
if (screenShot) {
var post = new XMLHttpRequest();
post.open("POST", host + "/api/image?filename=" + filename);
post.setRequestHeader("Content-Type", "text/plain");
post.send(screenShot);
}
xhtr.open("POST", xhtr.open("POST",
host + "/api/print?" + host + "/api/print?" +
"filename=" + filename + "filename=" + filename +
"&target=" + target + "&target=" + target +
"&key=" + apik + "&key=" + apik +
"&time=" + Math.round(currentPrint.time) + "&time=" + Math.round(currentPrint.time) +
"&length=" + Math.round(currentPrint.distance) "&length=" + Math.round(currentPrint.distance) +
"&image=" + filename
); );
xhtr.setRequestHeader("Content-Type", "text/plain"); xhtr.setRequestHeader("Content-Type", "text/plain");
xhtr.send(gcode); xhtr.send(gcode);
@ -1127,6 +1135,11 @@ self.kiri.license = exports.LICENSE;
* @param {Function} callback * @param {Function} callback
*/ */
function prepareSlices(callback) { function prepareSlices(callback) {
if (viewMode == VIEWS.ARRANGE) {
screenShot = SPACE.screenshot();
screenShot = screenShot.substring(screenShot.indexOf(",")+1);
}
setViewMode(VIEWS.SLICE); setViewMode(VIEWS.SLICE);
var selectSave = selectedMeshes.slice(); var selectSave = selectedMeshes.slice();

View file

@ -519,6 +519,10 @@ var gs_moto_space = exports;
return WC; return WC;
}, },
screenshot: function(format) {
return renderer.domElement.toDataURL(format || "image/png");
},
init: function(domelement, slider) { init: function(domelement, slider) {
container = domelement; container = domelement;
@ -528,7 +532,10 @@ var gs_moto_space = exports;
domelement.style.width = width(); domelement.style.width = width();
domelement.style.height = height(); domelement.style.height = height();
renderer = new THREE.WebGLRenderer({ antialias: true }); renderer = new THREE.WebGLRenderer({
antialias: true,
preserveDrawingBuffer: true
});
camera = perspective ? camera = perspective ?
new THREE.PerspectiveCamera(perspective, aspect(), 1, 100000) : new THREE.PerspectiveCamera(perspective, aspect(), 1, 100000) :
new THREE.OrthographicCamera(-100 * aspect(), 100 * aspect(), 100, -100, 0.1, 100000); new THREE.OrthographicCamera(-100 * aspect(), 100 * aspect(), 100, -100, 0.1, 100000);