align FDM top/bottom layer options with convention
This commit is contained in:
parent
abd1a763aa
commit
75fc39b545
7 changed files with 10 additions and 11 deletions
|
|
@ -4,6 +4,7 @@ Full docs @ https://docs.grid.space/projects/kiri-moto
|
||||||
|
|
||||||
# Release 3.7
|
# Release 3.7
|
||||||
|
|
||||||
|
* align FDM top/bottom layer options with convention
|
||||||
* add Mesh:Tool SVG import options for extrusion depth and boolean repair
|
* add Mesh:Tool SVG import options for extrusion depth and boolean repair
|
||||||
* replace jscad/modeling with Manifold project for faster mesh boolean
|
* replace jscad/modeling with Manifold project for faster mesh boolean
|
||||||
* various CAM gcode, preview, animation fixes (3 axis)
|
* various CAM gcode, preview, animation fixes (3 axis)
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@
|
||||||
"sliceSupportAngle": 50,
|
"sliceSupportAngle": 50,
|
||||||
"sliceSupportNozzle": 0,
|
"sliceSupportNozzle": 0,
|
||||||
"sliceSolidMinArea": 1,
|
"sliceSolidMinArea": 1,
|
||||||
"sliceSolidLayers": 3,
|
|
||||||
"sliceBottomLayers": 3,
|
"sliceBottomLayers": 3,
|
||||||
"sliceTopLayers": 3,
|
"sliceTopLayers": 3,
|
||||||
"firstLayerRate": 10,
|
"firstLayerRate": 10,
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,9 @@ FDM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
isDanger = controller.danger,
|
isDanger = controller.danger,
|
||||||
useAssembly = controller.assembly,
|
useAssembly = controller.assembly,
|
||||||
isConcurrent = controller.threaded && kiri.minions.concurrent,
|
isConcurrent = controller.threaded && kiri.minions.concurrent,
|
||||||
|
topLayers = process.sliceTopLayers || 0,
|
||||||
solidLayers = process.sliceSolidLayers || 0,
|
solidLayers = process.sliceSolidLayers || 0,
|
||||||
|
bottomLayers = process.sliceBottomLayers || 0,
|
||||||
vaseMode = process.sliceFillType === 'vase' && !isSynth,
|
vaseMode = process.sliceFillType === 'vase' && !isSynth,
|
||||||
metadata = widget.anno,
|
metadata = widget.anno,
|
||||||
maxtruder = Math.max(0, device.extruders.length - 1),
|
maxtruder = Math.max(0, device.extruders.length - 1),
|
||||||
|
|
@ -472,8 +474,8 @@ FDM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
forSlices(0.15, 0.2, slice => {
|
forSlices(0.15, 0.2, slice => {
|
||||||
let range = slice.params;
|
let range = slice.params;
|
||||||
let spaceMult = slice.index === 0 ? process.firstLayerLineMult || 1 : 1;
|
let spaceMult = slice.index === 0 ? process.firstLayerLineMult || 1 : 1;
|
||||||
let isBottom = slice.index < process.sliceBottomLayers;
|
let isBottom = slice.index < bottomLayers;
|
||||||
let isTop = process.sliceTopLayers && slice.index > slices.length - process.sliceTopLayers - 1;
|
let isTop = topLayers && slice.index > slices.length - topLayers - 1;
|
||||||
let isDense = range.sliceFillSparse > 0.995;
|
let isDense = range.sliceFillSparse > 0.995;
|
||||||
let isSolid = (isBottom || ((isTop || isDense) && !vaseMode)) && !isSynth;
|
let isSolid = (isBottom || ((isTop || isDense) && !vaseMode)) && !isSynth;
|
||||||
let solidWidth = isSolid ? range.sliceFillWidth || 1 : 0;
|
let solidWidth = isSolid ? range.sliceFillWidth || 1 : 0;
|
||||||
|
|
@ -692,7 +694,7 @@ FDM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
// layer boolean diffs need to be computed to find flat areas to fill
|
// layer boolean diffs need to be computed to find flat areas to fill
|
||||||
// and overhangs that need to be supported. these are stored in flats
|
// and overhangs that need to be supported. these are stored in flats
|
||||||
// and bridges, projected up/down, and merged into an array of solids
|
// and bridges, projected up/down, and merged into an array of solids
|
||||||
if (solidLayers && !vaseMode && !isSynth) {
|
if ((topLayers || bottomLayers || solidLayers) && !vaseMode && !isSynth) {
|
||||||
profileStart("delta");
|
profileStart("delta");
|
||||||
forSlices(0.2, 0.34, slice => {
|
forSlices(0.2, 0.34, slice => {
|
||||||
let params = slice.params || process;
|
let params = slice.params || process;
|
||||||
|
|
@ -703,8 +705,8 @@ FDM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
profileEnd();
|
profileEnd();
|
||||||
profileStart("delta-project");
|
profileStart("delta-project");
|
||||||
forSlices(0.34, 0.35, slice => {
|
forSlices(0.34, 0.35, slice => {
|
||||||
projectFlats(slice, solidLayers);
|
if (solidLayers || topLayers) projectFlats(slice, solidLayers || topLayers);
|
||||||
projectBridges(slice, solidLayers);
|
if (solidLayers || bottomLayers) projectBridges(slice, solidLayers || bottomLayers);
|
||||||
}, "layer deltas");
|
}, "layer deltas");
|
||||||
profileEnd();
|
profileEnd();
|
||||||
profileStart("solid-fill")
|
profileStart("solid-fill")
|
||||||
|
|
|
||||||
|
|
@ -327,7 +327,6 @@ const conf = exports({
|
||||||
sliceSupportEnable: false,
|
sliceSupportEnable: false,
|
||||||
sliceSupportOutline: true,
|
sliceSupportOutline: true,
|
||||||
sliceSolidMinArea: 1,
|
sliceSolidMinArea: 1,
|
||||||
sliceSolidLayers: 3,
|
|
||||||
sliceBottomLayers: 3,
|
sliceBottomLayers: 3,
|
||||||
sliceTopLayers: 3,
|
sliceTopLayers: 3,
|
||||||
firstSliceHeight: 0.25,
|
firstSliceHeight: 0.25,
|
||||||
|
|
|
||||||
|
|
@ -1817,7 +1817,6 @@ gapp.register("kiri.init", [], (root, exports) => {
|
||||||
sliceLineWidth: uc.newInput(LANG.sl_line_s, {title:LANG.sl_line_l, convert:uc.toFloat, bound:uc.bound(0,5), modes:FDM}),
|
sliceLineWidth: uc.newInput(LANG.sl_line_s, {title:LANG.sl_line_l, convert:uc.toFloat, bound:uc.bound(0,5), modes:FDM}),
|
||||||
fdmSep: uc.newBlank({class:"pop-sep", modes:FDM}),
|
fdmSep: uc.newBlank({class:"pop-sep", modes:FDM}),
|
||||||
sliceTopLayers: uc.newInput(LANG.sl_ltop_s, {title:LANG.sl_ltop_l, convert:uc.toInt, modes:FDM}),
|
sliceTopLayers: uc.newInput(LANG.sl_ltop_s, {title:LANG.sl_ltop_l, convert:uc.toInt, modes:FDM}),
|
||||||
sliceSolidLayers: uc.newInput(LANG.sl_lsld_s, {title:LANG.sl_lsld_l, convert:uc.toInt, modes:FDM}),
|
|
||||||
sliceBottomLayers: uc.newInput(LANG.sl_lbot_s, {title:LANG.sl_lbot_l, convert:uc.toInt, modes:FDM}),
|
sliceBottomLayers: uc.newInput(LANG.sl_lbot_s, {title:LANG.sl_lbot_l, convert:uc.toInt, modes:FDM}),
|
||||||
fdmSep: uc.newBlank({class:"pop-sep", modes:FDM}),
|
fdmSep: uc.newBlank({class:"pop-sep", modes:FDM}),
|
||||||
sliceDetectThin: uc.newSelect(LANG.ad_thin_s, {title: LANG.ad_thin_l, action: thinWallSave, modes:FDM}, "thin"),
|
sliceDetectThin: uc.newSelect(LANG.ad_thin_s, {title: LANG.ad_thin_l, action: thinWallSave, modes:FDM}, "thin"),
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,6 @@
|
||||||
sliceShells: 1,
|
sliceShells: 1,
|
||||||
sliceFillSparse: 0.25,
|
sliceFillSparse: 0.25,
|
||||||
sliceTopLayers: 2,
|
sliceTopLayers: 2,
|
||||||
sliceSolidLayers: 2,
|
|
||||||
sliceBottomLayers: 2
|
sliceBottomLayers: 2
|
||||||
}))
|
}))
|
||||||
.then(eng => eng.setDevice({
|
.then(eng => eng.setDevice({
|
||||||
|
|
|
||||||
|
|
@ -315,11 +315,11 @@ self.kiri.lang['en-us'] = {
|
||||||
ad_minl_s: "height min",
|
ad_minl_s: "height min",
|
||||||
ad_minl_l: ["adaptive min layer height","in millimeters","must be non-zero"],
|
ad_minl_l: ["adaptive min layer height","in millimeters","must be non-zero"],
|
||||||
sl_ltop_s: "top layers",
|
sl_ltop_s: "top layers",
|
||||||
sl_ltop_l: ["number of solid layers","to enforce at the","top of the print"],
|
sl_ltop_l: ["number of solid layers at the top of the print or on flat areas facing up"],
|
||||||
sl_lsld_s: "solid layers",
|
sl_lsld_s: "solid layers",
|
||||||
sl_lsld_l: ["solid fill areas computed","from bridges and flat areas","detected betwen sliced layers"],
|
sl_lsld_l: ["solid fill areas computed","from bridges and flat areas","detected betwen sliced layers"],
|
||||||
sl_lbot_s: "base layers",
|
sl_lbot_s: "base layers",
|
||||||
sl_lbot_l: ["number of solid layers","to enforce at the","bottom of the print"],
|
sl_lbot_l: ["number of solid layers at bottom of the print or under bridge spans"],
|
||||||
ad_adap_s: "adaptive",
|
ad_adap_s: "adaptive",
|
||||||
ad_adap_l: ["use adaptive layer heights","with 'layer height' as max","and 'layer min' as the min"],
|
ad_adap_l: ["use adaptive layer heights","with 'layer height' as max","and 'layer min' as the min"],
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue