mark layers as touching / not-touching belt and route paths accordingly. add 'b' back view hot-key
This commit is contained in:
parent
92c427538c
commit
b6cb6cde87
5 changed files with 32 additions and 10 deletions
1
notes.md
1
notes.md
|
|
@ -51,7 +51,6 @@
|
||||||
# FDM - BELT
|
# FDM - BELT
|
||||||
|
|
||||||
* `B` fix supports for belt printing
|
* `B` fix supports for belt printing
|
||||||
* `F` hide layer lines under print
|
|
||||||
|
|
||||||
# CAM
|
# CAM
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1603,13 +1603,13 @@
|
||||||
firstLayerNozzleTemp:UC.newInput(LANG.fl_nozl_s, {title:LANG.fl_nozl_l, convert:UC.toInt, modes:FDM, show:isNotBelt}),
|
firstLayerNozzleTemp:UC.newInput(LANG.fl_nozl_s, {title:LANG.fl_nozl_l, convert:UC.toInt, modes:FDM, show:isNotBelt}),
|
||||||
firstLayerBedTemp: UC.newInput(LANG.fl_bedd_s, {title:LANG.fl_bedd_l, convert:UC.toInt, modes:FDM, show:isNotBelt}),
|
firstLayerBedTemp: UC.newInput(LANG.fl_bedd_s, {title:LANG.fl_bedd_l, convert:UC.toInt, modes:FDM, show:isNotBelt}),
|
||||||
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}),
|
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}),
|
||||||
|
firstLayerYOffset: UC.newInput(LANG.fl_zoff_s, {title:LANG.fl_zoff_l, convert:UC.toFloat, modes:FDM, show:isBelt}),
|
||||||
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:isNotBelt}),
|
firstLayerFillRate: UC.newInput(LANG.fl_frat_s, {title:LANG.fl_frat_l, convert:UC.toFloat, modes:FDM, show:isNotBelt}),
|
||||||
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}),
|
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}),
|
||||||
firstLayerLineMult: UC.newInput(LANG.fl_sfac_s, {title:LANG.fl_sfac_l, convert:UC.toFloat, bound:UC.bound(0.5,2), modes:FDM, show:isNotBelt}),
|
firstLayerLineMult: UC.newInput(LANG.fl_sfac_s, {title:LANG.fl_sfac_l, convert:UC.toFloat, bound:UC.bound(0.5,2), modes:FDM, show:isNotBelt}),
|
||||||
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_sfac_s, {title:LANG.fl_brim_l, convert:UC.toFloat, modes:FDM, show:isBelt}),
|
firstLayerBrim: UC.newInput(LANG.fl_brim_s, {title:LANG.fl_brim_l, convert:UC.toFloat, modes:FDM, show:isBelt}),
|
||||||
firstLayerYOffset: UC.newInput(LANG.fl_zoff_s, {title:LANG.fl_zoff_l, convert:UC.toFloat, modes:FDM, show:isBelt}),
|
|
||||||
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}),
|
fdmSep: UC.newBlank({class:"pop-sep", modes:FDM, show:isNotBelt}),
|
||||||
outputBrimCount: UC.newInput(LANG.fl_skrt_s, {title:LANG.fl_skrt_l, convert:UC.toInt, modes:FDM, show:isNotBelt}),
|
outputBrimCount: UC.newInput(LANG.fl_skrt_s, {title:LANG.fl_skrt_l, convert:UC.toInt, modes:FDM, show:isNotBelt}),
|
||||||
outputBrimOffset: UC.newInput(LANG.fl_skro_s, {title:LANG.fl_skro_l, convert:UC.toFloat, modes:FDM, show:isNotBelt}),
|
outputBrimOffset: UC.newInput(LANG.fl_skro_s, {title:LANG.fl_skro_l, convert:UC.toFloat, modes:FDM, show:isNotBelt}),
|
||||||
|
|
|
||||||
|
|
@ -749,9 +749,11 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// optimize start point on belt for all tops
|
// optimize start point on belt for tops touching belt
|
||||||
if (isBelt) {
|
// and enforce optimal shell order (outer first)
|
||||||
|
if (isBelt && opt.onBelt) {
|
||||||
startPoint = startClone;
|
startPoint = startClone;
|
||||||
|
shellOrder = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// top object
|
// top object
|
||||||
|
|
|
||||||
|
|
@ -292,8 +292,25 @@
|
||||||
if (isBelt) {
|
if (isBelt) {
|
||||||
offset.x = rotinfo.xpos;
|
offset.x = rotinfo.xpos;
|
||||||
offset.y = -belt.midy;
|
offset.y = -belt.midy;
|
||||||
offset.y += rotinfo.ypos * beltfact;// - 0.5;
|
offset.y += rotinfo.ypos * beltfact;
|
||||||
offset.z = rotinfo.ypos * beltfact;
|
offset.z = rotinfo.ypos * beltfact;
|
||||||
|
// locate the lowest point in slices and widget overall
|
||||||
|
let minby = Infinity;
|
||||||
|
for (let slice of widget.slices) {
|
||||||
|
slice.minby = Infinity;
|
||||||
|
for (let top of slice.tops) {
|
||||||
|
let poly = top.poly;
|
||||||
|
for (let point of poly.points) {
|
||||||
|
let ypos = -point.y + point.z * bfactor;
|
||||||
|
slice.minby = Math.min(slice.minby, ypos);
|
||||||
|
minby = Math.min(minby, ypos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// flag slices as being on or off the bed / belt
|
||||||
|
for (let slice of widget.slices) {
|
||||||
|
slice.onbelt = Math.abs(minby - slice.minby) < 0.01;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// when rafts used this is non-zero
|
// when rafts used this is non-zero
|
||||||
offset.z = zoff;
|
offset.z = zoff;
|
||||||
|
|
@ -382,7 +399,8 @@
|
||||||
tmpout, //layerout,
|
tmpout, //layerout,
|
||||||
{
|
{
|
||||||
first: slice.index === 0,
|
first: slice.index === 0,
|
||||||
support: slice.widget.support
|
support: slice.widget.support,
|
||||||
|
onBelt: slice.onbelt
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
layerout.appendAll(tmpout);
|
layerout.appendAll(tmpout);
|
||||||
|
|
@ -431,8 +449,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// correct y offset to desired layer offset
|
// correct y offset to desired layer offset
|
||||||
let miny = process.firstLayerYOffset;
|
let miny = process.firstLayerYOffset || 0;
|
||||||
// console.log({minby, miny, firstLayerHeight});
|
|
||||||
for (let layer of output) {
|
for (let layer of output) {
|
||||||
for (let rec of layer) {
|
for (let rec of layer) {
|
||||||
let point = rec.point;
|
let point = rec.point;
|
||||||
|
|
|
||||||
|
|
@ -645,6 +645,10 @@
|
||||||
Space.view.front();
|
Space.view.front();
|
||||||
cycleInd = 0;
|
cycleInd = 0;
|
||||||
break;
|
break;
|
||||||
|
case cca('b'):
|
||||||
|
Space.view.back();
|
||||||
|
cycleInd = 2;
|
||||||
|
break;
|
||||||
case cca('>'):
|
case cca('>'):
|
||||||
cycleInd = (++cycleInd % cycle.length);
|
cycleInd = (++cycleInd % cycle.length);
|
||||||
cycle[cycleInd]();
|
cycle[cycleInd]();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue