From 3107021f0e12e83bfa3139882e833a7760c22722 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sun, 29 Aug 2021 17:48:19 -0400 Subject: [PATCH] add option to turn off support shell --- src/kiri/conf.js | 1 + src/kiri/init.js | 1 + src/mode/fdm/slice.js | 41 ++++++++++++++++++++++++++++++++++++----- web/kiri/lang/en.js | 2 ++ 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/kiri/conf.js b/src/kiri/conf.js index c0078e38..228ea848 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -329,6 +329,7 @@ sliceSupportAngle: 50, sliceSupportNozzle: 0, sliceSupportEnable: false, + sliceSupportOutline: true, sliceSolidMinArea: 1, sliceSolidLayers: 3, sliceBottomLayers: 3, diff --git a/src/kiri/init.js b/src/kiri/init.js index df506147..839c21a3 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1735,6 +1735,7 @@ sliceSupportAngle: UC.newInput(LANG.sp_angl_s, {title:LANG.sp_angl_l, bound:UC.bound(0.0,90.0), convert:UC.toFloat, modes:FDM, show:() => !UI.sliceSupportEnable.checked}), sliceSupportSpan: UC.newInput(LANG.sp_span_s, {title:LANG.sp_span_l, bound:UC.bound(0.0,200.0), convert:UC.toFloat, modes:FDM, show:() => UI.sliceSupportEnable.checked}), sliceSupportEnable: UC.newBoolean(LANG.sp_auto_s, onBooleanClick, {title:LANG.sp_auto_l, modes:FDM, show:isNotBelt}), + sliceSupportOutline: UC.newBoolean(LANG.sp_outl_s, onBooleanClick, {title:LANG.sp_outl_l, modes:FDM, show:() => !UI.sliceSupportEnable.checked}), sliceSupportGen: UC.newRow([ UI.ssaGen = UC.newButton(LANG.sp_detect, onButtonClick, {class: "f-col grow a-center"}) diff --git a/src/mode/fdm/slice.js b/src/mode/fdm/slice.js index d69ed988..8a8f09a9 100644 --- a/src/mode/fdm/slice.js +++ b/src/mode/fdm/slice.js @@ -513,6 +513,7 @@ } } else if (isSynth) { // fill manual supports differently + let outline = process.sliceSupportOutline || false; let promises = isConcurrent ? [] : undefined; let resolve = []; forSlices(0.5, promises ? 0.6 : 0.7, slice => { @@ -520,10 +521,16 @@ let density = params.sliceSupportDensity; if (density) for (let top of slice.tops) { - let offset = []; - POLY.expand(top.shells || [], -nozzleSize/4, slice.z, offset); - fillSupportPolys(promises, offset, lineWidth, density, slice.z); - resolve.push({top, offset}); + if (!outline) { + let offset = top.shells; + fillSupportPolys(promises, offset, lineWidth, density, slice.z); + resolve.push({top, offset}); + } else { + let offset = []; + POLY.expand(top.shells || [], -nozzleSize/4, slice.z, offset); + fillSupportPolys(promises, offset, lineWidth, density, slice.z); + resolve.push({top, offset}); + } } }, "infill"); if (promises) { @@ -532,7 +539,31 @@ }); } for (let rec of resolve) { - rec.top.fill_lines = rec.offset.map(o => o.fill).flat().filter(v => v); + let lines = rec.top.fill_lines = rec.offset.map(o => o.fill).flat().filter(v => v); + // if copying simply's support type, eliminate shells + // and zig/zag lines connectd by shell segments + if (!outline) { + let newlines = []; + let op1, op2; + let eo = 0; + for (let i=0; i