improve infill speed / routing for most scenarios. improve (hidden) intra-layer fdm slider

This commit is contained in:
Stewart Allen 2024-06-24 15:20:41 -04:00
commit bde9080f43
5 changed files with 27 additions and 37 deletions

View file

@ -132,29 +132,18 @@ FDM.init = function(kiri, api) {
};
}
}
api.event.on("function.animate", (mode) => {
if (!isFdmMode) {
if (!(isFdmMode && lastView === VIEWS.PREVIEW)) {
return;
}
if (!api.conf.get().controller.danger) {
return;
}
let pct = 0;
let int = setInterval(() => {
if (pct <= 1) {
api.const.STACKS.setFraction(pct);
pct += 0.05;
} else {
api.const.STACKS.setFraction(1);
clearTimeout(int);
}
}, 50);
// let slider = $('top-slider');
// slider.style.display = 'flex';
// slider.oninput = slider.onchange = (ev) => {
// api.const.STACKS.setFraction(parseInt(ev.target.value)/100);
// };
let slider = $('top-slider');
slider.style.display = 'flex';
slider.oninput = slider.onchange = (ev) => {
api.const.STACKS.setFraction(parseInt(ev.target.value)/1000);
api.space.update();
};
$('anim-slider').value = 500;
api.const.STACKS.setFraction(0.5);
});
api.event.on("mode.set", mode => {
isFdmMode = mode === 'FDM';
@ -166,6 +155,7 @@ FDM.init = function(kiri, api) {
updateVisiblity();
});
api.event.on("view.set", view => {
$('top-slider').style.display = 'none';
lastView = view;
updateVisiblity();
filterSynth();

View file

@ -1171,7 +1171,7 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
lastIndex = -1,
raft = opt.raft || false,
flow = opt.flow || 1,
near = opt.near || false,
near = opt.near || (antiBacklash ? false : true),
fast = opt.fast || false,
fill = (opt.fill >= 0 ? opt.fill : fillMult) * flow,
thinDist = near ? thinWall : thinWall;
@ -1182,7 +1182,7 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
found = false;
mindist = Infinity;
// use next nearest line strategy
// use next nearest line endpoint strategy
if (near)
for (let i=0; i<lines.length; i += 2) {
t1 = lines[i];
@ -1192,7 +1192,9 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
t2 = lines[i+1];
let d1 = t1.distToSq2D(startPoint);
let d2 = t2.distToSq2D(startPoint);
if (d1 < mindist || d2 < mindist) {
let idiff = startPoint.index ? Math.abs(startPoint.index - t1.index) : 1;
let min = Math.min(d1, d2) * (idiff !== 1 ? 10 : 1);
if (min < mindist) {
if (d2 < d1) {
p2 = t1;
p1 = t2;
@ -1200,13 +1202,11 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
p1 = t1;
p2 = t2;
}
mindist = Math.min(d1, d2);
lastIndex = i;
mindist = min;
}
}
// use next index line strategy
// order all points by distance to last point
// use next line index strategy (perpendicular offset from origin)
if (!near)
for (let i=start; i<lines.length; i += 2) {
p = lines[i];
@ -1267,7 +1267,7 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
// re-seek a new start index within fill array
let restart = lastIndex < 0;
// mark as used (temporarily)
// mark as used
p1.del = true;
p2.del = true;
marked += 2;
@ -1301,7 +1301,6 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
} else {
print.addOutput(preout, p1, 0, moveSpeed, extruder);
}
print.addOutput(preout, p2, fill, fillSpeed, extruder);
}

View file

@ -382,7 +382,7 @@ const conf = exports({
sliceAdaptive: false,
zHopDistance: 0.2,
arcTolerance: 0,
antiBacklash: 1,
antiBacklash: 0,
ranges: []
}
},

View file

@ -2029,9 +2029,11 @@ th, tr, td, label {
#top-slider {
position: absolute;
display: none;
top: 60px;
left: 50px;
top: 10px;
left: 35px;
right: 50px;
z-index: 1000;
pointer-events: all;
}
#anim-slider {
width: 100%;

View file

@ -366,6 +366,10 @@
<div id="slider-max">&infin;</div>
</div>
</div>
<!-- slice/preview layer slider -->
<div id="top-slider" class="f-col grow">
<input id="anim-slider" type="range" min="0" max="1000" value="0"></input>
</div>
</div>
<!-- allows right tray to slide/hide but still show speeds menu -->
@ -594,11 +598,6 @@
</div>
</div>
<!-- slice/preview layer slider -->
<div id="top-slider" class="f-col grow">
<input id="anim-slider" type="range" min="0" max="1000" value="0"></input>
</div>
</div>
</body>
</html>