improve brim. setup for raft

This commit is contained in:
Stewart Allen 2018-01-14 14:08:50 -05:00
commit 7a13fb209a
3 changed files with 32 additions and 14 deletions

View file

@ -211,7 +211,7 @@ var gs_kiri_fdm = exports;
if (slices.length === 0) break; if (slices.length === 0) break;
// create brim, if specificed in FDM mode (code shared by laser) // create brim, if specificed in FDM mode (code shared by laser)
if (layer === 0 && process.outputBrimCount) { if (layer === 0 && (process.outputBrimCount || process.outputRaft)) {
var brims = [], var brims = [],
polys = [], polys = [],
preout = []; preout = [];
@ -232,26 +232,41 @@ var gs_kiri_fdm = exports;
}); });
}); });
// merge brims
brims = POLY.union(brims);
// if brim is offset, the expand and shrink to cause brims to merge // if brim is offset, the expand and shrink to cause brims to merge
if (process.outputBrimOffset && brims.length) { if (process.outputBrimOffset && brims.length) {
var extra = process.sliceSupportExtra + 2;
brims = POLY.expand(brims, extra, 0, null, 1);
brims = POLY.expand(brims, -extra, 0, null, 1);
} }
POLY.union(brims).forEach(function(brim) { // if raft is specified
POLY.trace2count(brim, polys, -device.nozzleSize, process.outputBrimCount, 0); if (process.outputRaft) {
}); console.log("output raft coming soon");
}
printPoint = print.poly2polyEmit(polys, printPoint, function(poly, index, count, startPoint) { // if using brim vs raft
return print.polyPrintPath(poly, startPoint, preout, { if (process.outputBrimCount) {
rate: process.firstLayerRate, // expand brims
onfirst: function(point) { brims.forEach(function(brim) {
if (preout.length && point.distTo2D(startPoint) > 2) { POLY.trace2count(brim, polys, -device.nozzleSize, process.outputBrimCount, 0);
// retract between brims
preout.last().retract = true;
}
}
}); });
});
// output brim points
printPoint = print.poly2polyEmit(polys, printPoint, function(poly, index, count, startPoint) {
return print.polyPrintPath(poly, startPoint, preout, {
rate: process.firstLayerRate,
onfirst: function(point) {
if (preout.length && point.distTo2D(startPoint) > 2) {
// retract between brims
preout.last().retract = true;
}
}
});
});
}
print.addPrintPoints(preout, layerout, null); print.addPrintPoints(preout, layerout, null);
preout.last().retract = true; preout.last().retract = true;

View file

@ -366,7 +366,7 @@ var gs_kiri_slice = exports;
valid.push(r1[i]); valid.push(r1[i]);
valid.push(r1[i+1]); valid.push(r1[i+1]);
} }
return valid; return valid.length > 2 ? valid : [];
} }
/** /**

View file

@ -73,6 +73,7 @@ self.kiri.license = exports.LICENSE;
sliceVase: 1, sliceVase: 1,
firstSliceHeight: 1, firstSliceHeight: 1,
firstLayerRate: 1, firstLayerRate: 1,
outputRaft: 1,
outputTemp: 1, outputTemp: 1,
outputFanMax: 1, outputFanMax: 1,
outputBedTemp: 1, outputBedTemp: 1,
@ -277,6 +278,7 @@ self.kiri.license = exports.LICENSE;
firstSliceHeight: 0.25, firstSliceHeight: 0.25,
firstLayerRate: 30, firstLayerRate: 30,
outputRaft: false,
outputTemp: 220, outputTemp: 220,
outputFanMax: 255, outputFanMax: 255,
@ -2399,6 +2401,7 @@ self.kiri.license = exports.LICENSE;
firstLayerRate: UC.newInput("print speed", {title:"print move max speed\nmillimeters / minute", convert:UC.toFloat, modes:FDM}), firstLayerRate: UC.newInput("print speed", {title:"print move max speed\nmillimeters / minute", convert:UC.toFloat, modes:FDM}),
outputBrimCount: UC.newInput("skirt count", {title:"number of skirts", convert:UC.toInt, modes:FDM}), outputBrimCount: UC.newInput("skirt count", {title:"number of skirts", convert:UC.toInt, modes:FDM}),
outputBrimOffset: UC.newInput("skirt offset", {title:"millimeters", convert:UC.toFloat, modes:FDM}), outputBrimOffset: UC.newInput("skirt offset", {title:"millimeters", convert:UC.toFloat, modes:FDM}),
outputRaft: UC.newBoolean("raft", onBooleanClick, {title:"create a raft under the\nmodel for better adhesion", modes:FDM}),
advanced: UC.newGroup("advanced", null, {modes:FDM}), advanced: UC.newGroup("advanced", null, {modes:FDM}),
// outputRetractOver: UC.newInput("retract over", {title:"move threshold that\ntriggers retraction\n0 to disable", convert:UC.toFloat, modes:FDM}), // outputRetractOver: UC.newInput("retract over", {title:"move threshold that\ntriggers retraction\n0 to disable", convert:UC.toFloat, modes:FDM}),