From 8210f97b71bd2d4d4b049d771ea8c2b0acad8770 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 29 Jun 2021 09:15:55 -0400 Subject: [PATCH] add option to limit device z axis movement speed --- src/kiri/conf.js | 2 ++ src/kiri/init.js | 5 ++++- src/mode/fdm/export.js | 4 ++++ web/kiri/lang/en.js | 8 +++++--- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 1e3ae0f3..5c59cb12 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -115,6 +115,7 @@ bedDepth: valueOf(set.bed_depth, 175), bedRound: valueOf(set.bed_circle, false), bedBelt: valueOf(set.bed_belt, false), + deviceZMax: valueOf(set.z_move_max, 0), maxHeight: valueOf(set.build_height, 150), originCenter: valueOf(set.origin_center, false), extrudeAbs: valueOf(set.extrude_abs, false), @@ -279,6 +280,7 @@ bedBelt: false, fwRetract: false, originCenter: false, + deviceZMax: 0, maxHeight: 150, gcodePre: [], gcodePost: [], diff --git a/src/kiri/init.js b/src/kiri/init.js index 552e80f8..0aff6167 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -763,6 +763,7 @@ UI.deviceRound, UI.deviceBelt, UI.fwRetract, + UI.deviceZMax, UI.gcodeFan, UI.gcodeTrack, UI.gcodeLayer, @@ -1570,10 +1571,12 @@ bedDepth: UC.newInput(LANG.dv_bedd_s, {title:LANG.dv_bedd_l, convert:UC.toFloat, size:6, units:true, round:2}), maxHeight: UC.newInput(LANG.dv_bedh_s, {title:LANG.dv_bedh_l, convert:UC.toFloat, size:6, modes:FDM_SLA}), spindleMax: UC.newInput(LANG.dv_spmx_s, {title:LANG.dv_spmx_l, convert:UC.toInt, size: 6, modes:CAM}), + deviceZMax: UC.newInput(LANG.dv_zmax_s, {title:LANG.dv_zmax_l, convert:UC.toInt, size: 6, modes:FDM}), + fdmSep: UC.newBlank({class:"pop-sep", modes:FDM}), + fwRetract: UC.newBoolean(LANG.dv_retr_s, onBooleanClick, {title:LANG.dv_retr_l, modes:FDM}), deviceOrigin: UC.newBoolean(LANG.dv_orgc_s, onBooleanClick, {title:LANG.dv_orgc_l, modes:FDM_LASER_SLA}), deviceRound: UC.newBoolean(LANG.dv_bedc_s, onBooleanClick, {title:LANG.dv_bedc_l, modes:FDM, trigger:true, show:isNotBelt}), deviceBelt: UC.newBoolean(LANG.dv_belt_s, onBooleanClick, {title:LANG.dv_belt_l, modes:FDM, trigger:true, show:() => !UI.deviceRound.checked}), - fwRetract: UC.newBoolean(LANG.dv_retr_s, onBooleanClick, {title:LANG.dv_retr_l, modes:FDM}), extruder: UC.newGroup(LANG.dv_gr_ext, $('device2'), {group:"dext", inline:true, modes:FDM}), extFilament: UC.newInput(LANG.dv_fila_s, {title:LANG.dv_fila_l, convert:UC.toFloat, modes:FDM}), diff --git a/src/mode/fdm/export.js b/src/mode/fdm/export.js index d52ba62a..fc535569 100644 --- a/src/mode/fdm/export.js +++ b/src/mode/fdm/export.js @@ -24,6 +24,7 @@ gcodeTrack = device.gcodeTrack, gcodeExt = device.gcodeExt, gcodeInt = device.gcodeInt, + zMoveMax = device.deviceZMax || 0, tool = 0, fwRetract = device.fwRetract, isDanger = settings.controller.danger, @@ -321,6 +322,9 @@ o.append(" E").append(newpos.e.toFixed(decimals)); } } + if (zMoveMax && emit.z) { + rate = Math.min(zMoveMax, rate) * 60; + } if (rate && rate != pos.f) { o.append(" F").append(Math.round(rate)); pos.f = rate diff --git a/web/kiri/lang/en.js b/web/kiri/lang/en.js index 9bda8f10..bbd1bd2d 100644 --- a/web/kiri/lang/en.js +++ b/web/kiri/lang/en.js @@ -93,6 +93,8 @@ kiri.lang['en-us'] = { dv_bedd_l: "workspace units", dv_bedh_s: "height", dv_bedh_l: ["max build height","in workspace units"], + dv_zmax_s: "Z axis speed limit", + dv_zmax_l: ["maximum Z axis speed","in millimeters / second","0 to disable"], dv_spmx_s: "max spindle", dv_spmx_l: ["max spindle rpm speed","0 to disable"], dv_xtab_s: "absolute positioning", @@ -385,7 +387,7 @@ kiri.lang['en-us'] = { cc_feed_s: "feed rate", cc_feed_l: ["max cutting speed in","workspace units / second"], cc_plng_s: "plunge rate", - cc_plng_l: ["max z axis speed in","workspace units / minute"], + cc_plng_l: ["max z axis speed in","workspace units / second"], cc_sngl_s: "select lines only", cc_sngl_l: ["select only single edges","instead of connected polylines"], @@ -393,9 +395,9 @@ kiri.lang['en-us'] = { cc_menu: "limits", cc_flip: "flip", cc_rapd_s: "xy feed", - cc_rapd_l: ["max xy moves feedrate","in workspace units / minute"], + cc_rapd_l: ["max xy moves feedrate","in workspace units / second"], cc_rzpd_s: "z feed", - cc_rzpd_l: ["max z moves feedrate","in workspace units / minute"], + cc_rzpd_l: ["max z moves feedrate","in workspace units / second"], cc_loff_s: "offset", cc_loff_l: ["distance from stock face","for leveling pass","in workspace units"],