add option to alerntate fdm shell winding order
This commit is contained in:
parent
3d6546c273
commit
a9c6d3132a
8 changed files with 32 additions and 10 deletions
|
|
@ -17,13 +17,14 @@ Full docs @ https://docs.grid.space/projects/kiri-moto
|
||||||
|
|
||||||
* added batch processing to object adds/removes to speedup complex workspace restore
|
* added batch processing to object adds/removes to speedup complex workspace restore
|
||||||
* substitute some prusa slicer [variables] with KM {variables} on import
|
* substitute some prusa slicer [variables] with KM {variables} on import
|
||||||
* fix CAM output order for tool changes an spindle speed updates
|
* fix CNC output order for tool changes an spindle speed updates
|
||||||
* add CAM pocket operation using surface selection
|
* add CNC pocket operation using surface selection
|
||||||
* fix dog-bones on outlines cut by tabs
|
* fix dog-bones on outlines cut by tabs
|
||||||
* skip pockets that resolve to null
|
* skip pockets that resolve to null
|
||||||
* fix cnc contour path collision
|
* fix CNC contour path collision
|
||||||
* 10x speedup for true shadow generation
|
* 10x speedup for true shadow generation
|
||||||
* add gcode feature macros for fdm transitions
|
* add FDM gcode feature macros for transitions
|
||||||
|
* add FDM option to alternate shell winding direction
|
||||||
|
|
||||||
## Mesh:Tool (1.2.0)
|
## Mesh:Tool (1.2.0)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ FDM.init = function(kiri, api) {
|
||||||
"outputFillMult": LANG.ou_flml_s,
|
"outputFillMult": LANG.ou_flml_s,
|
||||||
"outputSparseMult": LANG.ou_spml_s,
|
"outputSparseMult": LANG.ou_spml_s,
|
||||||
"outputRetractWipe": LANG.ad_wpln_s,
|
"outputRetractWipe": LANG.ad_wpln_s,
|
||||||
|
"outputAlternating": LANG.ad_altr_s,
|
||||||
"outputShortPoly": LANG.ad_spol_s,
|
"outputShortPoly": LANG.ad_spol_s,
|
||||||
"outputMinSpeed": LANG.ad_mins_s,
|
"outputMinSpeed": LANG.ad_mins_s,
|
||||||
"outputCoastDist": LANG.ad_scst_s,
|
"outputCoastDist": LANG.ad_scst_s,
|
||||||
|
|
|
||||||
|
|
@ -1041,6 +1041,7 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
|
||||||
} else {
|
} else {
|
||||||
let finishShell = poly.depth === 0 && !firstLayer;
|
let finishShell = poly.depth === 0 && !firstLayer;
|
||||||
startPoint = print.polyPrintPath(poly, startPoint, preout, {
|
startPoint = print.polyPrintPath(poly, startPoint, preout, {
|
||||||
|
ccw: opt.shell && process.outputAlternating && slice.index % 2,
|
||||||
tool: extruder,
|
tool: extruder,
|
||||||
rate: finishShell ? finishSpeed : printSpeed,
|
rate: finishShell ? finishSpeed : printSpeed,
|
||||||
accel: finishShell,
|
accel: finishShell,
|
||||||
|
|
@ -1387,14 +1388,22 @@ function slicePrintPath(print, slice, startPoint, offset, output, opt = {}) {
|
||||||
|
|
||||||
// innermost shells
|
// innermost shells
|
||||||
let inner = next.innerShells() || [];
|
let inner = next.innerShells() || [];
|
||||||
|
let shells = next.shells || [];
|
||||||
|
|
||||||
|
// alternating winding option
|
||||||
|
// if (process.outputAlternating || slice.index % 2) {
|
||||||
|
// console.log({alternating: slice, shells, inner});
|
||||||
|
// POLY.setWinding(inner, false);
|
||||||
|
// POLY.setWinding(shells, false);
|
||||||
|
// }
|
||||||
|
|
||||||
// output inner polygons
|
// output inner polygons
|
||||||
if (shellOrder === 1) outputTraces(inner, { sort: shellOrder });
|
if (shellOrder === 1) outputTraces(inner, { sort: shellOrder, shell: true });
|
||||||
|
|
||||||
outputTraces(next.shells, { sort: shellOrder });
|
outputTraces(shells, { sort: shellOrder, shell: true });
|
||||||
|
|
||||||
// output outer polygons
|
// output outer polygons
|
||||||
if (shellOrder === -1) outputTraces(inner, { sort: shellOrder });
|
if (shellOrder === -1) outputTraces(inner, { sort: shellOrder, shell: true });
|
||||||
|
|
||||||
// output thin fill
|
// output thin fill
|
||||||
print.setType('thin fill');
|
print.setType('thin fill');
|
||||||
|
|
|
||||||
|
|
@ -364,6 +364,7 @@ const conf = exports({
|
||||||
outputPurgeTower: 0,
|
outputPurgeTower: 0,
|
||||||
outputBeltFirst: false,
|
outputBeltFirst: false,
|
||||||
outputAvoidGaps: true,
|
outputAvoidGaps: true,
|
||||||
|
outputAlternating: false,
|
||||||
outputLayerRetract: false,
|
outputLayerRetract: false,
|
||||||
outputOriginCenter: true,
|
outputOriginCenter: true,
|
||||||
outputLoops: 0,
|
outputLoops: 0,
|
||||||
|
|
|
||||||
|
|
@ -1906,7 +1906,7 @@ gapp.register("kiri.init", [], (root, exports) => {
|
||||||
knifeSep: uc.newBlank({class:"pop-sep", modes:LASER}),
|
knifeSep: uc.newBlank({class:"pop-sep", modes:LASER}),
|
||||||
knifeOn: uc.newBoolean(LANG.enable, onBooleanClick, {title:LANG.ou_drkn_l, modes:LASER}),
|
knifeOn: uc.newBoolean(LANG.enable, onBooleanClick, {title:LANG.ou_drkn_l, modes:LASER}),
|
||||||
|
|
||||||
output: uc.newGroup(LANG.ou_menu, null, {modes:GCODE}),
|
output: uc.newGroup(LANG.ou_menu, null, {class: "fdmout", modes:GCODE}),
|
||||||
outputLaserPower: uc.newInput(LANG.ou_powr_s, {title:LANG.ou_powr_l, convert:uc.toInt, bound:uc.bound(1,100), modes:LASER}),
|
outputLaserPower: uc.newInput(LANG.ou_powr_s, {title:LANG.ou_powr_l, convert:uc.toInt, bound:uc.bound(1,100), modes:LASER}),
|
||||||
outputLaserSpeed: uc.newInput(LANG.ou_sped_s, {title:LANG.ou_sped_l, convert:uc.toInt, modes:LASER}),
|
outputLaserSpeed: uc.newInput(LANG.ou_sped_s, {title:LANG.ou_sped_l, convert:uc.toInt, modes:LASER}),
|
||||||
laserSep: uc.newBlank({class:"pop-sep", modes:LASER}),
|
laserSep: uc.newBlank({class:"pop-sep", modes:LASER}),
|
||||||
|
|
@ -1932,6 +1932,7 @@ gapp.register("kiri.init", [], (root, exports) => {
|
||||||
fdmSep: uc.newBlank({class:"pop-sep", modes:FDM}),
|
fdmSep: uc.newBlank({class:"pop-sep", modes:FDM}),
|
||||||
outputLayerRetract: uc.newBoolean(LANG.ad_lret_s, onBooleanClick, {title:LANG.ad_lret_l, modes:FDM}),
|
outputLayerRetract: uc.newBoolean(LANG.ad_lret_s, onBooleanClick, {title:LANG.ad_lret_l, modes:FDM}),
|
||||||
outputAvoidGaps: uc.newBoolean(LANG.ad_agap_s, onBooleanClick, {title:LANG.ad_agap_l, modes:FDM}),
|
outputAvoidGaps: uc.newBoolean(LANG.ad_agap_s, onBooleanClick, {title:LANG.ad_agap_l, modes:FDM}),
|
||||||
|
outputAlternating: uc.newBoolean(LANG.ad_altr_s, onBooleanClick, {title:LANG.ad_altr_l, modes:FDM}),
|
||||||
outputBeltFirst: uc.newBoolean(LANG.ad_lbir_s, onBooleanClick, {title:LANG.ad_lbir_l, show: isBelt, modes:FDM}),
|
outputBeltFirst: uc.newBoolean(LANG.ad_lbir_s, onBooleanClick, {title:LANG.ad_lbir_l, show: isBelt, modes:FDM}),
|
||||||
camConventional: uc.newBoolean(LANG.ou_conv_s, onBooleanClick, {title:LANG.ou_conv_l, modes:CAM}),
|
camConventional: uc.newBoolean(LANG.ou_conv_s, onBooleanClick, {title:LANG.ou_conv_l, modes:CAM}),
|
||||||
camEaseDown: uc.newBoolean(LANG.cr_ease_s, onBooleanClick, {title:LANG.cr_ease_l, modes:CAM}),
|
camEaseDown: uc.newBoolean(LANG.cr_ease_s, onBooleanClick, {title:LANG.cr_ease_l, modes:CAM}),
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,11 @@ class Print {
|
||||||
|
|
||||||
// fdm & laser
|
// fdm & laser
|
||||||
polyPrintPath(poly, startPoint, output, options = {}) {
|
polyPrintPath(poly, startPoint, output, options = {}) {
|
||||||
|
if (options.ccw) {
|
||||||
|
poly.setCounterClockwise();
|
||||||
|
} else {
|
||||||
poly.setClockwise();
|
poly.setClockwise();
|
||||||
|
}
|
||||||
|
|
||||||
const scope = this;
|
const scope = this;
|
||||||
const { settings } = scope;
|
const { settings } = scope;
|
||||||
|
|
|
||||||
|
|
@ -1690,8 +1690,11 @@ th, tr, td, label {
|
||||||
.set-pop.xdown {
|
.set-pop.xdown {
|
||||||
transform: translateY(-25%) !important;
|
transform: translateY(-25%) !important;
|
||||||
}
|
}
|
||||||
|
.set-pop.fdmout {
|
||||||
|
transform: translateY(-63%) !important;
|
||||||
|
}
|
||||||
.set-pop.fdmadv {
|
.set-pop.fdmadv {
|
||||||
transform: translateY(-75%) !important;
|
transform: translateY(-74%) !important;
|
||||||
}
|
}
|
||||||
.set-pop.rough {
|
.set-pop.rough {
|
||||||
transform: translateY(-14%) !important;
|
transform: translateY(-14%) !important;
|
||||||
|
|
|
||||||
|
|
@ -655,6 +655,8 @@ self.kiri.lang['en-us'] = {
|
||||||
ad_abkl_l: ["for better flat surface finish","use micro-movements to cancel","backlash in solid layer output","in millimeters","0 to disable","if your firmware has M425","put that in the gcode header","and leave this as 0"],
|
ad_abkl_l: ["for better flat surface finish","use micro-movements to cancel","backlash in solid layer output","in millimeters","0 to disable","if your firmware has M425","put that in the gcode header","and leave this as 0"],
|
||||||
ad_lbir_s: "belt first",
|
ad_lbir_s: "belt first",
|
||||||
ad_lbir_l: ["always print shells touching the","belt before any other shells"],
|
ad_lbir_l: ["always print shells touching the","belt before any other shells"],
|
||||||
|
ad_altr_s: "alternating",
|
||||||
|
ad_altr_l: ["alternate shell winding order","clockwise / counter-clockwise"],
|
||||||
ad_lret_s: "layer retract",
|
ad_lret_s: "layer retract",
|
||||||
ad_lret_l: ["force filament retraction","between layers"],
|
ad_lret_l: ["force filament retraction","between layers"],
|
||||||
ad_agap_s: "avoid gaps",
|
ad_agap_s: "avoid gaps",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue