diff --git a/app.js b/app.js index 9fb6ef11..461487ac 100644 --- a/app.js +++ b/app.js @@ -299,6 +299,7 @@ const script = { "kiri", "ext/three", "ext/pngjs", + "ext/jszip", "license", "ext/clip2", "ext/earcut", diff --git a/package.json b/package.json index 2bb4cca2..6153cbe0 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "connect": "^3.7.0", "earcut": "^2.2.2", "express-useragent": "^1.0.13", + "jszip": "^3.5.0", "level": "^6.0.1", "leveldown": "^5.6.0", "levelup": "^4.4.0", diff --git a/src/ext/jszip.js b/src/ext/jszip.js new file mode 120000 index 00000000..aa70f346 --- /dev/null +++ b/src/ext/jszip.js @@ -0,0 +1 @@ +../../node_modules/jszip/dist/jszip.js \ No newline at end of file diff --git a/src/kiri/client.js b/src/kiri/client.js index a7427c1d..9a60e029 100644 --- a/src/kiri/client.js +++ b/src/kiri/client.js @@ -15,7 +15,9 @@ let KIRI = self.kiri = self.kiri || {}, syncd = {}, running = {}, slicing = {}, - worker = null; + worker = null + // occ = new Worker("/kiri/ext/occ-worker.js", {type:"module"}), + ; /** * @param {Function} fn name of function in KIRI.worker @@ -243,6 +245,12 @@ KIRI.work = { output(reply.done); } }, [ data.png ]); + }, + + zip: function(files) { + send("zip", {files}, reply => { + console.log({zip_said: reply}); + }); } }; diff --git a/src/kiri/worker.js b/src/kiri/worker.js index 89a8ce49..da70b9e4 100644 --- a/src/kiri/worker.js +++ b/src/kiri/worker.js @@ -536,6 +536,24 @@ KIRI.worker = { // send.done({done: {verts, faces, bigv, vi, ii}}, [ bigv.buffer ]); send.done({done: {bigv}}, [ bigv.buffer ]); }); + }, + + zip: function(data, send) { + let { files } = data; + let zip = new JSZip(); + for (let file of files) { + zip.file(file.name, file.data); + } + zip.generateAsync({ + type: "uint8array", + compression: "DEFLATE", + compressionOptions: { level: 3 }, + streamFiles: true + }, progress => { + send.data(progress); + }).then(output => { + send.done(output); + }); } }; diff --git a/src/mode/cam/ops.js b/src/mode/cam/ops.js index 331d1e0f..69434c45 100644 --- a/src/mode/cam/ops.js +++ b/src/mode/cam/ops.js @@ -405,7 +405,7 @@ indices = indices.appendAll(flats).sort((a,b) => b-a); // console.log('indices', ...indices, {zBottom, slicer}); if (op.outside && !op.inside) { - console.log({outline_bypass: indices, down: op.down}); + // console.log({outline_bypass: indices, down: op.down}); indices.forEach((ind,i) => { if (flats.indexOf(ind) >= 0) { // exclude flats