add base brim, shell speed, and flow rate
This commit is contained in:
parent
d0cef6eedc
commit
6a61f7e34c
5 changed files with 47 additions and 5 deletions
|
|
@ -306,6 +306,7 @@
|
||||||
firstLayerPrintMult: 1.0,
|
firstLayerPrintMult: 1.0,
|
||||||
firstLayerNozzleTemp: 0,
|
firstLayerNozzleTemp: 0,
|
||||||
firstLayerBedTemp: 0,
|
firstLayerBedTemp: 0,
|
||||||
|
firstLayerBrim: 0,
|
||||||
outputRaft: false,
|
outputRaft: false,
|
||||||
outputRaftSpacing: 0.2,
|
outputRaftSpacing: 0.2,
|
||||||
outputTemp: 200,
|
outputTemp: 200,
|
||||||
|
|
|
||||||
|
|
@ -1597,6 +1597,7 @@
|
||||||
firstLayerRate: UC.newInput(LANG.fl_rate_s, {title:LANG.fl_rate_l, convert:UC.toFloat, modes:FDM}),
|
firstLayerRate: UC.newInput(LANG.fl_rate_s, {title:LANG.fl_rate_l, convert:UC.toFloat, modes:FDM}),
|
||||||
firstLayerFillRate: UC.newInput(LANG.fl_frat_s, {title:LANG.fl_frat_l, convert:UC.toFloat, modes:FDM, show:() => !UI.deviceBelt.checked}),
|
firstLayerFillRate: UC.newInput(LANG.fl_frat_s, {title:LANG.fl_frat_l, convert:UC.toFloat, modes:FDM, show:() => !UI.deviceBelt.checked}),
|
||||||
firstLayerPrintMult: UC.newInput(LANG.fl_mult_s, {title:LANG.fl_mult_l, convert:UC.toFloat, modes:FDM}),
|
firstLayerPrintMult: UC.newInput(LANG.fl_mult_s, {title:LANG.fl_mult_l, convert:UC.toFloat, modes:FDM}),
|
||||||
|
firstLayerBrim: UC.newInput(LANG.fl_brim_s, {title:LANG.fl_brim_l, convert:UC.toFloat, modes:FDM, show:() => UI.deviceBelt.checked}),
|
||||||
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:() => !UI.deviceBelt.checked}),
|
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:() => !UI.deviceBelt.checked}),
|
||||||
outputBrimCount: UC.newInput(LANG.fl_skrt_s, {title:LANG.fl_skrt_l, convert:UC.toInt, modes:FDM, show:() => !UI.deviceBelt.checked}),
|
outputBrimCount: UC.newInput(LANG.fl_skrt_s, {title:LANG.fl_skrt_l, convert:UC.toInt, modes:FDM, show:() => !UI.deviceBelt.checked}),
|
||||||
outputBrimOffset: UC.newInput(LANG.fl_skro_s, {title:LANG.fl_skro_l, convert:UC.toFloat, modes:FDM, show:() => !UI.deviceBelt.checked}),
|
outputBrimOffset: UC.newInput(LANG.fl_skro_s, {title:LANG.fl_skro_l, convert:UC.toFloat, modes:FDM, show:() => !UI.deviceBelt.checked}),
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,10 @@
|
||||||
output = [],
|
output = [],
|
||||||
printPoint = newPoint(0,0,0),
|
printPoint = newPoint(0,0,0),
|
||||||
firstLayerHeight = process.firstSliceHeight || process.sliceHeight,
|
firstLayerHeight = process.firstSliceHeight || process.sliceHeight,
|
||||||
|
firstLayerSeek = process.outputSeekrate,
|
||||||
|
firstLayerRate = process.firstLayerRate,
|
||||||
|
firstLayerMult = process.firstLayerPrintMult,
|
||||||
|
firstLayerBrim = process.firstLayerBrim,
|
||||||
maxLayers = 0,
|
maxLayers = 0,
|
||||||
layer = 0,
|
layer = 0,
|
||||||
zoff = 0,
|
zoff = 0,
|
||||||
|
|
@ -47,7 +51,9 @@
|
||||||
isFlat = settings.controller.lineType === "flat",
|
isFlat = settings.controller.lineType === "flat",
|
||||||
isBelt = device.bedBelt,
|
isBelt = device.bedBelt,
|
||||||
beltYoff = device.bedDepth / 2,
|
beltYoff = device.bedDepth / 2,
|
||||||
beltfact = Math.cos(Math.PI/4);
|
beltfact = Math.cos(Math.PI/4),
|
||||||
|
invbfact = 1 / beltfact,
|
||||||
|
bfactor = invbfact * beltfact;
|
||||||
|
|
||||||
// compute bounds if missing
|
// compute bounds if missing
|
||||||
if (!bounds) {
|
if (!bounds) {
|
||||||
|
|
@ -135,8 +141,8 @@
|
||||||
zoff += height;
|
zoff += height;
|
||||||
};
|
};
|
||||||
|
|
||||||
raft(nozzle/1, process.sliceFillAngle + 0 , nozzle * 6.0, process.firstLayerRate / 3, 4);
|
raft(nozzle/1, process.sliceFillAngle + 0 , nozzle * 6.0, firstLayerRate / 3, 4);
|
||||||
raft(nozzle/1, process.sliceFillAngle + 0 , nozzle * 6.0, process.firstLayerRate / 2, 4);
|
raft(nozzle/1, process.sliceFillAngle + 0 , nozzle * 6.0, firstLayerRate / 2, 4);
|
||||||
raft(nozzle/2, process.sliceFillAngle + 90, nozzle * 3.0, process.outputFeedrate, 2.5);
|
raft(nozzle/2, process.sliceFillAngle + 90, nozzle * 3.0, process.outputFeedrate, 2.5);
|
||||||
raft(nozzle/2, process.sliceFillAngle + 0 , nozzle * 1.0, process.outputFeedrate, 1.5);
|
raft(nozzle/2, process.sliceFillAngle + 0 , nozzle * 1.0, process.outputFeedrate, 1.5);
|
||||||
raft(nozzle/2, process.sliceFillAngle + 0 , nozzle * 1.0, process.outputFeedrate, 1.0);
|
raft(nozzle/2, process.sliceFillAngle + 0 , nozzle * 1.0, process.outputFeedrate, 1.0);
|
||||||
|
|
@ -167,7 +173,7 @@
|
||||||
// output brim points
|
// output brim points
|
||||||
printPoint = print.poly2polyEmit(polys, printPoint, function(poly, index, count, startPoint) {
|
printPoint = print.poly2polyEmit(polys, printPoint, function(poly, index, count, startPoint) {
|
||||||
return print.polyPrintPath(poly, startPoint, preout, {
|
return print.polyPrintPath(poly, startPoint, preout, {
|
||||||
rate: process.firstLayerRate,
|
rate: firstLayerRate,
|
||||||
onfirst: function(point) {
|
onfirst: function(point) {
|
||||||
if (preout.length && point.distTo2D(startPoint) > 2) {
|
if (preout.length && point.distTo2D(startPoint) > 2) {
|
||||||
// retract between brims
|
// retract between brims
|
||||||
|
|
@ -364,17 +370,46 @@
|
||||||
if (!lastOut || lastOut.extruder !== slice.extruder) {
|
if (!lastOut || lastOut.extruder !== slice.extruder) {
|
||||||
printPoint = purge(slice.extruder, track, layerout, printPoint, slice.z);
|
printPoint = purge(slice.extruder, track, layerout, printPoint, slice.z);
|
||||||
}
|
}
|
||||||
|
let tmpout = [];
|
||||||
// output seek to start point between mesh slices if previous data
|
// output seek to start point between mesh slices if previous data
|
||||||
printPoint = print.slicePrintPath(
|
printPoint = print.slicePrintPath(
|
||||||
slice,
|
slice,
|
||||||
printPoint.sub(offset),
|
printPoint.sub(offset),
|
||||||
offset,
|
offset,
|
||||||
layerout,
|
tmpout, //layerout,
|
||||||
{
|
{
|
||||||
first: slice.index === 0,
|
first: slice.index === 0,
|
||||||
support: slice.widget.support
|
support: slice.widget.support
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
// alter settings for base extrusions (touching the bed)
|
||||||
|
if (isBelt) {
|
||||||
|
let widget = slice.widget;
|
||||||
|
let lastout, minx = Infinity, maxx = -Infinity, first = false;
|
||||||
|
for (let out of tmpout) {
|
||||||
|
let point = out.point;
|
||||||
|
let belty = out.belty = -point.y + point.z * bfactor;
|
||||||
|
if (out.emit && belty < firstLayerHeight && lastout && lastout.belty < firstLayerHeight) {
|
||||||
|
out.speed = firstLayerRate;
|
||||||
|
out.emit *= firstLayerMult;
|
||||||
|
minx = Math.min(minx, point.x, lastout.point.x);
|
||||||
|
maxx = Math.max(maxx, point.x, lastout.point.x);
|
||||||
|
first = out;
|
||||||
|
}
|
||||||
|
lastout = out;
|
||||||
|
}
|
||||||
|
// add brim, if specified
|
||||||
|
if (first && firstLayerBrim) {
|
||||||
|
let {emit, tool, point} = first;
|
||||||
|
let {x, y, z} = point;
|
||||||
|
let b = Math.max(firstLayerBrim, 1);
|
||||||
|
print.addOutput(tmpout, newPoint(minx - b, y, z), 0, firstLayerSeek, tool);
|
||||||
|
print.addOutput(tmpout, newPoint(minx - 0, y, z), emit, firstLayerRate, tool);
|
||||||
|
print.addOutput(tmpout, newPoint(maxx + 0, y, z), 0, firstLayerSeek, tool);
|
||||||
|
print.addOutput(tmpout, newPoint(maxx + b, y, z), emit, firstLayerRate, tool);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
layerout.appendAll(tmpout);
|
||||||
lastOut = slice;
|
lastOut = slice;
|
||||||
lastExt = lastOut.ext
|
lastExt = lastOut.ext
|
||||||
lastIndex = minidx;
|
lastIndex = minidx;
|
||||||
|
|
|
||||||
|
|
@ -191,6 +191,7 @@
|
||||||
// reset for solids, support projections
|
// reset for solids, support projections
|
||||||
// and other annotations
|
// and other annotations
|
||||||
slices.forEach(function(slice) {
|
slices.forEach(function(slice) {
|
||||||
|
slice.widget = widget;
|
||||||
slice.extruder = extruder;
|
slice.extruder = extruder;
|
||||||
slice.solids = [];
|
slice.solids = [];
|
||||||
});
|
});
|
||||||
|
|
@ -490,6 +491,8 @@
|
||||||
let bounds = up.poly.bounds,
|
let bounds = up.poly.bounds,
|
||||||
midy = (bounds.miny + bounds.maxy) / 2;
|
midy = (bounds.miny + bounds.maxy) / 2;
|
||||||
if (top.poly.isInside(up.poly, 1)) {
|
if (top.poly.isInside(up.poly, 1)) {
|
||||||
|
slice.widget.belt.ymid = midy;
|
||||||
|
slice.widget.belt.zmid = slice.z;
|
||||||
top.shells.push(BASE.newPolygon()
|
top.shells.push(BASE.newPolygon()
|
||||||
.setOpen()
|
.setOpen()
|
||||||
.add(bounds.minx,midy,slice.z)
|
.add(bounds.minx,midy,slice.z)
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,8 @@ kiri.lang['en-us'] = {
|
||||||
fl_frat_l: "fill printing max speed\nin millimeters / minute",
|
fl_frat_l: "fill printing max speed\nin millimeters / minute",
|
||||||
fl_mult_s: "print factor",
|
fl_mult_s: "print factor",
|
||||||
fl_mult_l: "extrusion multiplier\n0.0 - 2.0",
|
fl_mult_l: "extrusion multiplier\n0.0 - 2.0",
|
||||||
|
fl_brim_s: "brim size",
|
||||||
|
fl_brim_l: "add brim to part bottom\nsize is width in millimeters\n0 to disable",
|
||||||
fl_skrt_s: "skirt count",
|
fl_skrt_s: "skirt count",
|
||||||
fl_skrt_l: "number of first-layer offset\nbrims to generate",
|
fl_skrt_l: "number of first-layer offset\nbrims to generate",
|
||||||
fl_skro_s: "skirt offset",
|
fl_skro_s: "skirt offset",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue