From dbd0994569d2f8b708eef76f16c4dfc872fc9f30 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 13 Oct 2022 23:26:27 -0400 Subject: [PATCH] checkpoint belt emboss test --- src/kiri-mode/fdm/slice.js | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/kiri-mode/fdm/slice.js b/src/kiri-mode/fdm/slice.js index 1df93add..b062c40a 100644 --- a/src/kiri-mode/fdm/slice.js +++ b/src/kiri-mode/fdm/slice.js @@ -629,22 +629,24 @@ FDM.slice = function(settings, widget, onupdate, ondone) { let dy = Math.abs(height - maxY * (1 / Math.sqrt(2))); let dz = Math.abs(length - ((lastZ - firstZ) * Math.sqrt(2))); if (dy < 0.1 && dz < 1) { - console.log('FOUND', { firstI, lastI, minX, maxX, maxY }); + // console.log('FOUND', { firstI, lastI, minX, maxX, maxY }); let span = lastI - firstI - 2; // x = down the belt let tall = width * 2; let can = new self.OffscreenCanvas(span, tall); let ctx = can.getContext("2d"); - ctx.scale(0.6, 1); + ctx.scale(1.2, 1); ctx.font = '24px sans-serif'; - ctx.fillStyle = 'black'; + // ctx.fillStyle = 'black'; ctx.textBaseline = "bottom"; ctx.fillText(text, 1, tall - 1); let img = ctx.getImageData(0, 0, span, tall).data.buffer; let rgb = new Uint32Array(img); - console.log({ img, rgb, p: rgb.filter(v => v) }); + // console.log({ img, rgb, p: rgb.filter(v => v) }); for (let x=0; x=0; y--) { let pix = rgb[y * span + x]; pix = ( @@ -654,8 +656,33 @@ FDM.slice = function(settings, widget, onupdate, ondone) { ) / 3; str += pix > 30 ? '*' : '-'; maxp = Math.max(maxp, pix); + if (pix > 30) { + if (start >= 0) { + end = tall - y; + } else { + start = tall - y; + } + } else { + if (start >= 0 && end > start) { + lines.push({ start, end }); + } + start = end = undefined; + } + } + console.log((x).toString().padStart(2,0),str,maxp | 0,lines); + if (lines.length) { + let slice = slices[firstI + x + 1]; + let supps = slice.supports = slice.supports || []; + let z = slice.z; + let y = z - smin - (lineWidth / 2); + for (let line of lines) { + supps.push(base.newPolygon() + .add(minX + line.start / 2, y, z) + .add(minX + line.end / 2, y, z) + .setOpen() + ); + } } - console.log((x).toString().padStart(2,0),str,maxp | 0); } } }