fix cnc feedrates for imperial. update grid when changing units
This commit is contained in:
parent
45e72080ff
commit
4c23d16e66
6 changed files with 61 additions and 45 deletions
|
|
@ -78,6 +78,11 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function unitsSave() {
|
||||||
|
API.conf.update();
|
||||||
|
platform.update_size();
|
||||||
|
}
|
||||||
|
|
||||||
function booleanSave() {
|
function booleanSave() {
|
||||||
let control = settings().controller;
|
let control = settings().controller;
|
||||||
let isDark = control.dark;
|
let isDark = control.dark;
|
||||||
|
|
@ -1246,7 +1251,7 @@
|
||||||
freeLayout: UC.newBoolean(LANG.op_free_s, booleanSave, {title:LANG.op_free_l, modes:ALL}),
|
freeLayout: UC.newBoolean(LANG.op_free_s, booleanSave, {title:LANG.op_free_l, modes:ALL}),
|
||||||
reverseZoom: UC.newBoolean(LANG.op_invr_s, booleanSave, {title:LANG.op_invr_l, modes:ALL}),
|
reverseZoom: UC.newBoolean(LANG.op_invr_s, booleanSave, {title:LANG.op_invr_l, modes:ALL}),
|
||||||
thinRender: UC.newBoolean(LANG.op_thin_s, booleanSave, {title:LANG.op_thin_l, modes:ALL}),
|
thinRender: UC.newBoolean(LANG.op_thin_s, booleanSave, {title:LANG.op_thin_l, modes:ALL}),
|
||||||
units: UC.newSelect(LANG.op_unit_s, {title: LANG.op_unit_l, modes:CAM}, "units"),
|
units: UC.newSelect(LANG.op_unit_s, {title: LANG.op_unit_l, modes:CAM, action:unitsSave}, "units"),
|
||||||
prefadd: UC.checkpoint(),
|
prefadd: UC.checkpoint(),
|
||||||
|
|
||||||
export: UC.newGroup(LANG.xp_menu, $('prefs-out'), {inline: true}),
|
export: UC.newGroup(LANG.xp_menu, $('prefs-out'), {inline: true}),
|
||||||
|
|
@ -1674,20 +1679,7 @@
|
||||||
$('mode-cam').appendChild(mksvg(icons.cnc));
|
$('mode-cam').appendChild(mksvg(icons.cnc));
|
||||||
$('mode-laser').appendChild(mksvg(icons.laser));
|
$('mode-laser').appendChild(mksvg(icons.laser));
|
||||||
|
|
||||||
SPACE.platform.setSize(
|
API.platform.update_size();
|
||||||
settings().device.bedWidth,
|
|
||||||
settings().device.bedDepth,
|
|
||||||
settings().device.bedHeight
|
|
||||||
);
|
|
||||||
|
|
||||||
if (dark) {
|
|
||||||
SPACE.platform.setGrid(25, 5, 0x999999, 0x333333);
|
|
||||||
SPACE.platform.opacity(0.8);
|
|
||||||
DOC.body.classList.add('dark');
|
|
||||||
} else {
|
|
||||||
SPACE.platform.setGrid(25, 5, 0x999999, 0xcccccc);
|
|
||||||
SPACE.platform.opacity(0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
SPACE.mouse.downSelect(function(int,event) {
|
SPACE.mouse.downSelect(function(int,event) {
|
||||||
// lay flat with meta or ctrl clicking a selected face
|
// lay flat with meta or ctrl clicking a selected face
|
||||||
|
|
|
||||||
|
|
@ -985,6 +985,19 @@
|
||||||
depth = parseInt(dev.bedDepth),
|
depth = parseInt(dev.bedDepth),
|
||||||
height = parseFloat(dev.bedHeight)
|
height = parseFloat(dev.bedHeight)
|
||||||
);
|
);
|
||||||
|
let ctrl = settings.controller,
|
||||||
|
unitMM = ctrl.units === 'mm',
|
||||||
|
gridMajor = unitMM ? 25 : 25.4,
|
||||||
|
gridMinor = unitMM ? 5 : 25.4 / 4;
|
||||||
|
if (ctrl.dark) {
|
||||||
|
SPACE.platform.setGrid(gridMajor, gridMinor, 0x999999, 0x333333);
|
||||||
|
SPACE.platform.opacity(0.8);
|
||||||
|
DOC.body.classList.add('dark');
|
||||||
|
} else {
|
||||||
|
SPACE.platform.setGrid(gridMajor, gridMinor, 0x999999, 0xcccccc);
|
||||||
|
SPACE.platform.opacity(0.3);
|
||||||
|
DOC.body.classList.remove('dark');
|
||||||
|
}
|
||||||
SPACE.platform.setGZOff(height/2 - 0.1);
|
SPACE.platform.setGZOff(height/2 - 0.1);
|
||||||
platform.update_origin();
|
platform.update_origin();
|
||||||
SPACE.scene.freeze(frozen);
|
SPACE.scene.freeze(frozen);
|
||||||
|
|
|
||||||
|
|
@ -335,13 +335,15 @@
|
||||||
origin = settings.origin,
|
origin = settings.origin,
|
||||||
mode = settings.mode,
|
mode = settings.mode,
|
||||||
tools = [],
|
tools = [],
|
||||||
driver = KIRI.driver[mode];
|
driver = KIRI.driver[mode],
|
||||||
|
mark = Date.now();
|
||||||
|
|
||||||
if (mode === 'FDM') {
|
if (mode === 'FDM') {
|
||||||
tools = settings.device.extruders || [];
|
tools = settings.device.extruders || [];
|
||||||
}
|
}
|
||||||
|
|
||||||
driver.printRender(this, {tools, aslines:settings.controller.thinRender});
|
driver.printRender(this, {tools, aslines:settings.controller.thinRender});
|
||||||
|
if (KIRI.api.const.LOCAL) console.log({printRender: Date.now() - mark});
|
||||||
};
|
};
|
||||||
|
|
||||||
function pref(a,b) {
|
function pref(a,b) {
|
||||||
|
|
|
||||||
|
|
@ -713,7 +713,9 @@
|
||||||
* render all slice and processed data
|
* render all slice and processed data
|
||||||
*/
|
*/
|
||||||
PRO.render = function() {
|
PRO.render = function() {
|
||||||
|
let mark = Date.now();
|
||||||
DRIVERS[this.settings.mode.toUpperCase()].sliceRender(this);
|
DRIVERS[this.settings.mode.toUpperCase()].sliceRender(this);
|
||||||
|
if (KIRI.api.const.LOCAL) console.log({sliceRender: Date.now() - mark});
|
||||||
};
|
};
|
||||||
|
|
||||||
PRO.hideSlices = function() {
|
PRO.hideSlices = function() {
|
||||||
|
|
|
||||||
|
|
@ -1272,8 +1272,8 @@
|
||||||
}
|
}
|
||||||
lastTool = toolID;
|
lastTool = toolID;
|
||||||
}
|
}
|
||||||
feedRate = feed;
|
feedRate = feed * units;
|
||||||
plungeRate = plunge;
|
plungeRate = plunge * units;
|
||||||
}
|
}
|
||||||
|
|
||||||
function emitDrills(polys) {
|
function emitDrills(polys) {
|
||||||
|
|
@ -1709,9 +1709,11 @@
|
||||||
cmdSpindle = gcodes.gcodeSpindle || [ "M3 S{speed}" ],
|
cmdSpindle = gcodes.gcodeSpindle || [ "M3 S{speed}" ],
|
||||||
cmdDwell = gcodes.gcodeDwell || [ "G4 P{time}" ],
|
cmdDwell = gcodes.gcodeDwell || [ "G4 P{time}" ],
|
||||||
bounds = widget.getCamBounds(settings),
|
bounds = widget.getCamBounds(settings),
|
||||||
units = 1,//settings.controller.units === 'in' ? 25.4 : 1,
|
|
||||||
spro = settings.process,
|
|
||||||
dev = settings.device,
|
dev = settings.device,
|
||||||
|
spro = settings.process,
|
||||||
|
units = settings.controller.units === 'in' ? 25.4 : 1,
|
||||||
|
maxZd = spro.camFastFeedZ * units,
|
||||||
|
maxXYd = spro.camFastFeed * units,
|
||||||
decimals = 4,
|
decimals = 4,
|
||||||
pos = { x:null, y:null, z:null, f:null, t:null },
|
pos = { x:null, y:null, z:null, f:null, t:null },
|
||||||
line,
|
line,
|
||||||
|
|
@ -1732,10 +1734,10 @@
|
||||||
consts = {
|
consts = {
|
||||||
tool: 0,
|
tool: 0,
|
||||||
tool_name: "unknown",
|
tool_name: "unknown",
|
||||||
top: (offset ? dev.bedDepth : dev.bedDepth/2) * units,
|
top: (offset ? dev.bedDepth : dev.bedDepth/2),
|
||||||
left: (offset ? 0 : -dev.bedWidth/2) * units,
|
left: (offset ? 0 : -dev.bedWidth/2),
|
||||||
right: (offset ? dev.bedWidth : dev.bedWidth/2) * units,
|
right: (offset ? dev.bedWidth : dev.bedWidth/2),
|
||||||
bottom: (offset ? 0 : -dev.bedDepth/2) * units,
|
bottom: (offset ? 0 : -dev.bedDepth/2),
|
||||||
time_sec: 0,
|
time_sec: 0,
|
||||||
time_ms: 0,
|
time_ms: 0,
|
||||||
time: 0
|
time: 0
|
||||||
|
|
@ -1826,12 +1828,12 @@
|
||||||
moveTo({
|
moveTo({
|
||||||
tool: out.tool,
|
tool: out.tool,
|
||||||
point: { x: 0, y: 0, z: newpos.z },
|
point: { x: 0, y: 0, z: newpos.z },
|
||||||
speed: spro.camFastFeedZ
|
speed: maxZd
|
||||||
});
|
});
|
||||||
moveTo({
|
moveTo({
|
||||||
tool: out.tool,
|
tool: out.tool,
|
||||||
point: { x: newpos.x, y: newpos.y, z: newpos.z },
|
point: { x: newpos.x, y: newpos.y, z: newpos.z },
|
||||||
speed: spro.camFastFeed
|
speed: maxXYd
|
||||||
});
|
});
|
||||||
points--;
|
points--;
|
||||||
return;
|
return;
|
||||||
|
|
@ -1843,7 +1845,7 @@
|
||||||
dy = newpos.y - pos.y,
|
dy = newpos.y - pos.y,
|
||||||
dz = newpos.z - pos.z,
|
dz = newpos.z - pos.z,
|
||||||
dist = Math.sqrt(dx * dx + dy * dy + dz * dz),
|
dist = Math.sqrt(dx * dx + dy * dy + dz * dz),
|
||||||
feed = Math.min(speed || spro.camFastFeed, dz ? spro.camFastFeedZ : spro.camFastFeed);
|
feed = Math.min(speed || maxXYd, dz ? maxZd : maxXYd);
|
||||||
|
|
||||||
// drop dup points (all deltas are 0)
|
// drop dup points (all deltas are 0)
|
||||||
if (!(dx || dy || dz)) {
|
if (!(dx || dy || dz)) {
|
||||||
|
|
@ -1854,23 +1856,23 @@
|
||||||
pos.x = newpos.x;
|
pos.x = newpos.x;
|
||||||
runbox.min.x = Math.min(runbox.min.x, pos.x);
|
runbox.min.x = Math.min(runbox.min.x, pos.x);
|
||||||
runbox.max.x = Math.max(runbox.max.x, pos.x);
|
runbox.max.x = Math.max(runbox.max.x, pos.x);
|
||||||
nl.append(space).append("X").append(add0(pos.x * units));
|
nl.append(space).append("X").append(add0(pos.x));
|
||||||
}
|
}
|
||||||
if (newpos.y !== pos.y) {
|
if (newpos.y !== pos.y) {
|
||||||
pos.y = newpos.y;
|
pos.y = newpos.y;
|
||||||
runbox.min.y = Math.min(runbox.min.y, pos.y);
|
runbox.min.y = Math.min(runbox.min.y, pos.y);
|
||||||
runbox.max.y = Math.max(runbox.max.y, pos.y);
|
runbox.max.y = Math.max(runbox.max.y, pos.y);
|
||||||
nl.append(space).append("Y").append(add0(pos.y * units));
|
nl.append(space).append("Y").append(add0(pos.y));
|
||||||
}
|
}
|
||||||
if (newpos.z !== pos.z) {
|
if (newpos.z !== pos.z) {
|
||||||
pos.z = newpos.z;
|
pos.z = newpos.z;
|
||||||
runbox.min.z = Math.min(runbox.min.z, pos.z);
|
runbox.min.z = Math.min(runbox.min.z, pos.z);
|
||||||
runbox.max.z = Math.max(runbox.max.z, pos.z);
|
runbox.max.z = Math.max(runbox.max.z, pos.z);
|
||||||
nl.append(space).append("Z").append(add0(pos.z * units));
|
nl.append(space).append("Z").append(add0(pos.z));
|
||||||
}
|
}
|
||||||
if (feed && feed !== pos.f) {
|
if (feed && feed !== pos.f) {
|
||||||
pos.f = feed;
|
pos.f = feed;
|
||||||
nl.append(space).append("F").append(feed * units);
|
nl.append(space).append("F").append(feed);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update time calculation
|
// update time calculation
|
||||||
|
|
|
||||||
|
|
@ -230,27 +230,32 @@
|
||||||
let x = platform.scale.x,
|
let x = platform.scale.x,
|
||||||
y = isRound ? platform.scale.z : platform.scale.y,
|
y = isRound ? platform.scale.z : platform.scale.y,
|
||||||
z = isRound ? platform.scale.y : platform.scale.z,
|
z = isRound ? platform.scale.y : platform.scale.z,
|
||||||
xr = ROUND(x / unitMajor) * unitMajor,
|
xr = Math.round(x / unitMinor) * unitMinor,
|
||||||
yr = ROUND(y / unitMajor) * unitMajor,
|
yr = Math.round(y / unitMinor) * unitMinor,
|
||||||
xo = isRound ? Math.floor(x/2) : Math.ceil(xr / 2),
|
xo = isRound ? x/2 : xr/2,
|
||||||
yo = isRound ? Math.floor(y/2) : Math.ceil(yr / 2),
|
yo = isRound ? y/2 : yr/2,
|
||||||
|
divs = Math.round(unitMajor / unitMinor),
|
||||||
w = x / 2,
|
w = x / 2,
|
||||||
h = y / 2,
|
h = y / 2,
|
||||||
d = z / 2,
|
d = z / 2,
|
||||||
zp = -d - platformZOff + gridZOff,
|
zp = -d - platformZOff + gridZOff,
|
||||||
majors = [], minors = unitMinor ? [] : null, i;
|
majors = [], minors = unitMinor ? [] : null, i;
|
||||||
for (i = -xo; i <= xo; i++) {
|
for (i = -xo; i <= xo; i += unitMinor) {
|
||||||
if (i >= -w && i <= w) {
|
let oh = isRound ? Math.sqrt(1-(i/xo)*(i/xo)) * h : h,
|
||||||
let oh = isRound ? Math.sqrt(1-(i/xo)*(i/xo)) * h : h;
|
dM = Math.abs(i % unitMajor);
|
||||||
if (i % unitMajor === 0) majors.append({x:i, y:-oh, z:zp}).append({x:i, y:oh, z:zp});
|
if (dM < 0.1 || Math.abs(unitMajor - dM) < 0.1) {
|
||||||
else if (minors && i % unitMinor === 0) minors.append({x:i, y:-oh, z:zp}).append({x:i, y:oh, z:zp});
|
majors.append({x:i, y:-oh, z:zp}).append({x:i, y:oh, z:zp});
|
||||||
|
} else {
|
||||||
|
minors.append({x:i, y:-oh, z:zp}).append({x:i, y:oh, z:zp});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = -yo; i <= yo; i++) {
|
for (i = -yo; i <= yo; i += unitMinor) {
|
||||||
if (i >= -h && i <= h) {
|
let ow = isRound ? Math.sqrt(1-(i/yo)*(i/yo)) * w : w,
|
||||||
let ow = isRound ? Math.sqrt(1-(i/yo)*(i/yo)) * w : w;
|
dM = Math.abs(i % unitMajor);
|
||||||
if (i % unitMajor === 0) majors.append({x:-ow, y:i, z:zp}).append({x:ow, y:i, z:zp});
|
if (dM < 0.1 || Math.abs(unitMajor - dM) < 0.1) {
|
||||||
else if (minors && i % unitMinor === 0) minors.append({x:-ow, y:i, z:zp}).append({x:ow, y:i, z:zp});
|
majors.append({x:-ow, y:i, z:zp}).append({x:ow, y:i, z:zp});
|
||||||
|
} else {
|
||||||
|
minors.append({x:-ow, y:i, z:zp}).append({x:ow, y:i, z:zp});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gridView.add(makeLinesFromPoints(majors, gridColorMajor || 0x999999, 1));
|
gridView.add(makeLinesFromPoints(majors, gridColorMajor || 0x999999, 1));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue