From 6262adb49f52c773f53912f16a2a403146c5a235 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 24 Jan 2018 19:01:34 -0500 Subject: [PATCH] add support gap layers --- js/kiri-driver-fdm.js | 2 +- js/kiri-slice.js | 5 +++-- js/kiri.js | 3 +++ js/license.js | 2 +- notes.md | 14 ++++++-------- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/js/kiri-driver-fdm.js b/js/kiri-driver-fdm.js index a19ccb91..fd4f81f2 100644 --- a/js/kiri-driver-fdm.js +++ b/js/kiri-driver-fdm.js @@ -139,7 +139,7 @@ var gs_kiri_fdm = exports; // calculations only relevant when supports are enabled if (supportEnabled) { forSlices(0.5, 0.7, function(slice) { - slice.doSupport(spro.sliceSupportOffset, spro.sliceSupportSpan, spro.sliceSupportExtra, supportMinArea, spro.sliceSupportSize, spro.sliceSupportOffset); + slice.doSupport(spro.sliceSupportOffset, spro.sliceSupportSpan, spro.sliceSupportExtra, supportMinArea, spro.sliceSupportSize, spro.sliceSupportOffset, spro.sliceSupportGap); }, "support"); forSlices(0.7, 0.8, function(slice) { slice.doSupportFill(spri.nozzleSize, spro.sliceSupportDensity, supportMinArea); diff --git a/js/kiri-slice.js b/js/kiri-slice.js index 7f1da3a3..426d51c7 100644 --- a/js/kiri-slice.js +++ b/js/kiri-slice.js @@ -877,8 +877,9 @@ var gs_kiri_slice = exports; * @param {number} maxBridge max length before mid supports added * @param {number} expand outer support clip * @param {number} offset inner support clip + * @param {number} gap layers between supports and part */ - PRO.doSupport = function(minOffset, maxBridge, expand, minArea, pillarSize, offset) { + PRO.doSupport = function(minOffset, maxBridge, expand, minArea, pillarSize, offset, gap) { var min = minArea || 0.1, size = (pillarSize || 2), mergeDist = size * 3, // pillar merge dist @@ -991,7 +992,7 @@ var gs_kiri_slice = exports; if (culled.length === 0) break; // new bridge polys for next pass (skip first layer below) - if (depth > 0) down.supports.appendAll(culled); + if (depth >= gap) down.supports.appendAll(culled); supports = culled; down = down.down; diff --git a/js/kiri.js b/js/kiri.js index 20b97094..9ffc8f74 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -62,6 +62,7 @@ self.kiri.license = exports.LICENSE; sliceSupportEnable: 1, sliceSupportDensity: 1, sliceSupportOffset: 1, + sliceSupportGap: 1, sliceSupportSize: 1, sliceSupportArea: 1, sliceSupportExtra: 1, @@ -265,6 +266,7 @@ self.kiri.license = exports.LICENSE; sliceSupportEnable: false, sliceSupportDensity: 0.25, sliceSupportOffset: 1.0, + sliceSupportGap: 1, sliceSupportSize: 10, sliceSupportArea: 1, sliceSupportExtra: 0, @@ -2458,6 +2460,7 @@ self.kiri.license = exports.LICENSE; sliceSupportDensity: UC.newInput("density", {title:"0.0 - 1.0\nrecommended 0.15\n0 to disable", convert:UC.toFloat, bound:UC.bound(0.05,1.0), modes:FDM}), sliceSupportSize: UC.newInput("pillar size", {title:"width in millimeters", bound:UC.bound(1.0,200.0), convert:UC.toFloat, modes:FDM}), sliceSupportOffset: UC.newInput("part offset", {title:"millimeters\noffset from part", bound:UC.bound(0.0,200.0), convert:UC.toFloat, modes:FDM}), + sliceSupportGap: UC.newInput("gap layers", {title:"number of layers\noffset from part", bound:UC.bound(0,5), convert:UC.toInt, modes:FDM}), sliceSupportSpan: UC.newInput("max bridge", {title:"span length that\ntriggers support\nin millimeters", bound:UC.bound(0.0,200.0), convert:UC.toFloat, modes:FDM}), sliceSupportArea: UC.newInput("min area", {title:"min area for a\nsupport column\nin millimeters", bound:UC.bound(0.1,200.0), convert:UC.toFloat, modes:FDM}), sliceSupportExtra: UC.newInput("expand", {title:"expand support area\nbeyond part boundary\nin millimeters", bound:UC.bound(0.0,200.0), convert:UC.toFloat, modes:FDM}), diff --git a/js/license.js b/js/license.js index ca0f0b96..e47c4444 100644 --- a/js/license.js +++ b/js/license.js @@ -1,7 +1,7 @@ var exports = { COPYRIGHT:"Copyright (C) 2014-2017 Stewart Allen - All Rights Reserved", LICENSE:"Unauthorized copying, modification and re-distribution are strictly prohibited without prior written consent.", - VERSION:"1.0.90" + VERSION:"1.0.91" }; if (!module) var module = {}; module.exports = exports; diff --git a/notes.md b/notes.md index 0a9ba105..24f544a4 100644 --- a/notes.md +++ b/notes.md @@ -23,8 +23,8 @@ * popup warning when detect 3rd party storage blocked (chrome) * watch for changed part version to prompt re-import -* re-used disk cached version of parts if not changed -* remap mouse/kbd to match onshape when running inside? +* re-used cached version of parts if unchanged +* remap mouse/kbd to match onshape when iframed # CAM todo @@ -61,26 +61,24 @@ * preview doesn't show proper z offsets * trim support offset from layer below -* add support gap layers (defaults to 1) * use fill spacing for top raft fill spacing * fix thin fill (outside). compute before sparse as separate logic. -* add pause at specified layers -* fix slow seek to first point (raft) and wrong first point in general (all modes) +* fix wrong first point in general (all modes) * add lay-flat auto-rotation or from selected face +* add pause at specified layers * add manual supports * determine start point from gcode preamble * check for support / brim intersections on first layer -* solid fill every other line, two passes. minimize heat/sag. better fill between * fan / layer control * update forum * dual extruder support * add min layer time (slowdown or cool-off wait) * option to support interior bridges when 0% infill * fix multiple part layout export offset (resend position @ print time) -* implement gyroid infill * https://en.wikipedia.org/wiki/Gyroid +* add gyroid infill * https://en.wikipedia.org/wiki/Gyroid # Laser todo -* interior poly offsets are in the wrong direction +* interior poly offsets are in the wrong direction? * overcuts, radii for drag knives * sla :: svg modified from http://garyhodgson.github.io/slic3rsvgviewer/?file=examples/belt_pulley3.svg