Merge branch '1.0.7-devel' into make-update-onefinity
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -19,7 +19,10 @@ __pycache__
|
||||
*.deb
|
||||
*.zip
|
||||
/rpi-share
|
||||
/rpi-root
|
||||
/package-lock.json
|
||||
/src/bbserial/linux-rpi-raspberrypi-kernel*
|
||||
/src/bbserial/raspberrypi-kernel*
|
||||
|
||||
*.elf
|
||||
*.hex
|
||||
|
||||
1
Makefile
1
Makefile
@@ -60,6 +60,7 @@ $(GPLAN_MOD): $(GPLAN_IMG)
|
||||
./scripts/gplan-init-build.sh
|
||||
git -C rpi-share/cbang fetch
|
||||
git -C rpi-share/cbang reset --hard FETCH_HEAD
|
||||
git -C rpi-share/cbang checkout 18f1e963107ef26abe750c023355a5c40dd07853
|
||||
git -C rpi-share/camotics fetch
|
||||
git -C rpi-share/camotics reset --hard FETCH_HEAD
|
||||
git -C rpi-share/camotics checkout ec876c80d20fc19837133087cef0c447df5a939d
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bbctrl",
|
||||
"version": "1.0.6",
|
||||
"version": "1.0.7b0",
|
||||
"homepage": "https://onefinitycnc.com/",
|
||||
"repository": "https://github.com/OneFinityCNC/onefinity",
|
||||
"license": "GPL-3.0+",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
cd /mnt/host
|
||||
scons -C cbang disable_local="re2 libevent"
|
||||
scons -j 8 -C cbang disable_local="re2 libevent"
|
||||
export CBANG_HOME="/mnt/host/cbang"
|
||||
scons -C camotics gplan.so with_gui=0 with_tpl=0
|
||||
scons -j 8 -C camotics gplan.so with_gui=0 with_tpl=0
|
||||
|
||||
@@ -73,14 +73,12 @@ module.exports = {
|
||||
|
||||
|
||||
restore: function (e) {
|
||||
debugger;
|
||||
var files = e.target.files || e.dataTransfer.files;
|
||||
if (!files.length) return;
|
||||
|
||||
var fr = new FileReader();
|
||||
fr.onload = function (e) {
|
||||
var config;
|
||||
debugger;
|
||||
try {
|
||||
config = JSON.parse(e.target.result);
|
||||
} catch (ex) {
|
||||
@@ -111,18 +109,15 @@ module.exports = {
|
||||
cache: false
|
||||
|
||||
}).done(function (data) {
|
||||
debugger;
|
||||
//console.debug('>', data);
|
||||
//this.default_config = data;
|
||||
var config;
|
||||
try {
|
||||
config = JSON.parse(data);
|
||||
} catch(ex) {
|
||||
api.alert("Invalid default config file");
|
||||
return;
|
||||
}
|
||||
var config;
|
||||
try {
|
||||
config = JSON.parse(data);
|
||||
} catch(ex) {
|
||||
api.alert("Invalid default config file");
|
||||
return;
|
||||
}
|
||||
|
||||
api.put('config/save', config).done(function (data) {
|
||||
api.put('config/save', config).done(function (data) {
|
||||
this.confirmReset = false;
|
||||
|
||||
this.$dispatch('update');
|
||||
@@ -149,18 +144,15 @@ module.exports = {
|
||||
cache: false
|
||||
|
||||
}).done(function (data) {
|
||||
debugger;
|
||||
//console.debug('>', data);
|
||||
//this.default_config = data;
|
||||
var config;
|
||||
try {
|
||||
config = JSON.parse(data);
|
||||
} catch(ex) {
|
||||
api.alert("Invalid default config file");
|
||||
return;
|
||||
}
|
||||
var config;
|
||||
try {
|
||||
config = JSON.parse(data);
|
||||
} catch(ex) {
|
||||
api.alert("Invalid default config file");
|
||||
return;
|
||||
}
|
||||
|
||||
api.put('config/save', config).done(function (data) {
|
||||
api.put('config/save', config).done(function (data) {
|
||||
this.confirmReset = false;
|
||||
|
||||
this.$dispatch('update');
|
||||
|
||||
@@ -359,13 +359,13 @@ module.exports = new Vue({
|
||||
// },
|
||||
|
||||
get_ip_address : function() {
|
||||
console.debug('get_ip>', this.ipAddress);
|
||||
return this.ipAddress;
|
||||
console.debug('get_ip>', this.ipAddress);
|
||||
return this.ipAddress;
|
||||
},
|
||||
|
||||
get_ssid : function() {
|
||||
console.debug('get_ssid>', this.wifiSSID);
|
||||
return this.wifiSSID;
|
||||
console.debug('get_ssid>', this.wifiSSID);
|
||||
return this.wifiSSID;
|
||||
},
|
||||
|
||||
// get_disk_space : function() {
|
||||
@@ -408,6 +408,11 @@ module.exports = new Vue({
|
||||
}
|
||||
|
||||
update_object(this.state, e.data, false);
|
||||
|
||||
if (this.state.pw === 0) {
|
||||
Vue.set(this.state, "probe_connected", true);
|
||||
}
|
||||
|
||||
this.$broadcast('update');
|
||||
|
||||
}.bind(this)
|
||||
|
||||
@@ -67,6 +67,7 @@ module.exports = {
|
||||
deleteGCode: false,
|
||||
tab: 'auto',
|
||||
jog_incr: 1.0,
|
||||
probe_test: false,
|
||||
tool_msg: false,
|
||||
tool_diameter: 6.35,
|
||||
toolpath_msg: {x: false, y: false, z: false, a: false, b: false, c: false},
|
||||
@@ -259,8 +260,27 @@ module.exports = {
|
||||
|
||||
},
|
||||
|
||||
set_tool_diameter : function (new_diameter) {
|
||||
start_probe_test: function(on_finish) {
|
||||
this.probe_test = true;
|
||||
Vue.set(this.state, "probe_connected", false);
|
||||
Vue.set(this.state, "on_probe_finish", on_finish);
|
||||
},
|
||||
|
||||
finish_probe_test: function() {
|
||||
this.probe_test = false;
|
||||
Vue.set(this.state, "probe_connected", false);
|
||||
|
||||
const on_finish = this.state.on_probe_finish;
|
||||
Vue.set(this.state, "on_probe_finish", undefined);
|
||||
|
||||
on_finish();
|
||||
},
|
||||
|
||||
show_tool_diameter_prompt: function() {
|
||||
this.tool_msg = true;
|
||||
},
|
||||
|
||||
set_tool_diameter : function (new_diameter) {
|
||||
if(isNaN(new_diameter))
|
||||
return;
|
||||
|
||||
@@ -269,7 +289,6 @@ module.exports = {
|
||||
this.tool_diameter = parseFloat(new_diameter);
|
||||
|
||||
this.probe_xyz();
|
||||
|
||||
},
|
||||
|
||||
set_jog_incr: function(newValue) {
|
||||
@@ -328,158 +347,105 @@ module.exports = {
|
||||
},
|
||||
|
||||
probe_xyz() {
|
||||
var pcmd = "";
|
||||
var xoffset = this.config.probe["probe-xdim"];
|
||||
var yoffset = this.config.probe["probe-ydim"];
|
||||
var zoffset = this.config.probe["probe-zdim"];
|
||||
var fastSeek = this.config.probe["probe-fast-seek"];
|
||||
var slowSeek = this.config.probe["probe-slow-seek"];
|
||||
debugger;
|
||||
let xoffset = this.config.probe["probe-xdim"];
|
||||
let yoffset = this.config.probe["probe-ydim"];
|
||||
let zoffset = this.config.probe["probe-zdim"];
|
||||
let fastSeek = this.config.probe["probe-fast-seek"];
|
||||
let slowSeek = this.config.probe["probe-slow-seek"];
|
||||
|
||||
if(this.mach_units == "METRIC") {
|
||||
xoffset += this.tool_diameter / 2.0;
|
||||
yoffset += this.tool_diameter / 2.0;
|
||||
|
||||
fastSeek = "F" + fastSeek;
|
||||
slowSeek = "F" + slowSeek;
|
||||
|
||||
//Metric Probing
|
||||
pcmd += "G92 X0\n";
|
||||
pcmd += "G92 Y0\n";
|
||||
pcmd += "G92 Z0\n";
|
||||
pcmd += "G21\n";
|
||||
pcmd += "G38.2 Z-25.4 " + fastSeek + "\n";
|
||||
pcmd += "G91 G0 Z1.5\n";
|
||||
pcmd += "G38.2 Z-2.5 " + slowSeek + "\n";
|
||||
|
||||
//var zoffset = 16.383;
|
||||
pcmd += "G92 Z " + zoffset + "\n";
|
||||
|
||||
pcmd += "G91 G0 Z 3.175\n";
|
||||
pcmd += "G91 G0 X 19.05\n";
|
||||
pcmd += "G91 G0 Z -12.7\n";
|
||||
pcmd += "G38.2 X -19.05 " + fastSeek + "\n";
|
||||
pcmd += "G91 G1 X 1.27 " + fastSeek +"\n";
|
||||
pcmd += "G38.2 X -4 " + slowSeek + "\n";
|
||||
|
||||
xoffset += this.tool_diameter/2.0;
|
||||
xoffset = xoffset.toFixed(5);
|
||||
pcmd += "G92 X " + xoffset + "\n";
|
||||
|
||||
pcmd += "G91 G0 X 2.5\n";
|
||||
pcmd += "G91 G0 Y 17\n";
|
||||
pcmd += "G91 G0 X -13\n";
|
||||
pcmd += "G38.2 Y -17 " + fastSeek + "\n";
|
||||
pcmd += "G91 G0 Y 1.27\n";
|
||||
pcmd += "G38.2 Y -4 " + slowSeek +"\n";
|
||||
|
||||
yoffset += this.tool_diameter/2.0;
|
||||
yoffset = yoffset.toFixed(5);
|
||||
pcmd += "G92 Y " + yoffset + "\n";
|
||||
|
||||
pcmd += "G91 G0 Y2.54\n";
|
||||
pcmd += "G91 G0 Z 25.4\n";
|
||||
pcmd += "G90 G0 X0 Y0\n";
|
||||
} else {
|
||||
|
||||
//Imperial Probing
|
||||
|
||||
xoffset = xoffset / 25.4;
|
||||
yoffset = yoffset / 25.4;
|
||||
zoffset = zoffset / 25.4;
|
||||
slowSeek = slowSeek / 25.4;
|
||||
slowSeek = slowSeek.toFixed(5);
|
||||
slowSeek = "F" + slowSeek;
|
||||
fastSeek = fastSeek / 25.4;
|
||||
fastSeek = fastSeek.toFixed(5);
|
||||
fastSeek = "F" + fastSeek;
|
||||
|
||||
pcmd += "G92 X0\n";
|
||||
pcmd += "G92 Y0\n";
|
||||
pcmd += "G92 Z0\n";
|
||||
pcmd += "G20\n";
|
||||
pcmd += "G38.2 Z-1.0 " + fastSeek + "\n";
|
||||
pcmd += "G91 G0 Z0.06\n";
|
||||
pcmd += "G38.2 Z-0.1 " + slowSeek + "\n";
|
||||
|
||||
//var zoffset = 0.645;
|
||||
zoffset = zoffset.toFixed(5);
|
||||
pcmd += "G92 Z " + zoffset + "\n";
|
||||
|
||||
|
||||
pcmd += "G91 G0 Z 0.125\n";
|
||||
pcmd += "G91 G0 X 0.75\n";
|
||||
pcmd += "G91 G0 Z -0.5\n";
|
||||
pcmd += "G38.2 X -0.75 " + fastSeek + "\n";
|
||||
pcmd += "G91 G1 X 0.05 " + fastSeek + "\n";
|
||||
pcmd += "G38.2 X -0.15 " + slowSeek + "\n";
|
||||
|
||||
xoffset += this.tool_diameter/2.0;
|
||||
xoffset = xoffset.toFixed(5);
|
||||
pcmd += "G92 X " + xoffset + "\n";
|
||||
|
||||
pcmd += "G91 G0 X 0.1\n";
|
||||
pcmd += "G91 G0 Y 0.75\n";
|
||||
pcmd += "G91 G0 X -0.5\n";
|
||||
pcmd += "G38.2 Y -0.75 " + fastSeek + "\n";
|
||||
pcmd += "G91 G0 Y 0.05\n";
|
||||
pcmd += "G38.2 Y -0.15 " + slowSeek +"\n";
|
||||
|
||||
yoffset += this.tool_diameter/2.0;
|
||||
yoffset = yoffset.toFixed(5);
|
||||
pcmd += "G92 Y " + yoffset + "\n";
|
||||
|
||||
pcmd += "G91 G0 Y0.1\n";
|
||||
pcmd += "G91 G0 Z1\n";
|
||||
pcmd += "G90 G0 X0 Y0\n";
|
||||
if (this.mach_units !== "METRIC") {
|
||||
xoffset /= 25.4;
|
||||
yoffset /= 25.4;
|
||||
zoffset /= 25.4;
|
||||
slowSeek /= 25.4;
|
||||
fastSeek /= 25.4;
|
||||
}
|
||||
|
||||
this.send(pcmd);
|
||||
const zlift = 1;
|
||||
|
||||
// After probing Z, we want to drop the bit down:
|
||||
// Ideally, 12.7mm/0.5in
|
||||
// And we don't want to be more than 75% down on the probe block
|
||||
let plunge = Math.min(12.7, zoffset * 0.75);
|
||||
plunge += zlift; // Compensate for the fact that we lift after probing Z
|
||||
|
||||
xoffset = xoffset.toFixed(5);
|
||||
yoffset = yoffset.toFixed(5);
|
||||
zoffset = zoffset.toFixed(5);
|
||||
slowSeek = slowSeek.toFixed(5);
|
||||
fastSeek = fastSeek.toFixed(5);
|
||||
plunge = plunge.toFixed(5);
|
||||
|
||||
slowSeek = `F${slowSeek}`;
|
||||
fastSeek = `F${fastSeek}`;
|
||||
|
||||
this.send(`
|
||||
G21
|
||||
G92 X0 Y0 Z0
|
||||
|
||||
G38.2 Z -25.4 ${fastSeek}
|
||||
G91 G1 Z 1
|
||||
G38.2 Z -2 ${slowSeek}
|
||||
G92 Z ${zoffset}
|
||||
|
||||
G91 G0 Z ${zlift}
|
||||
G91 G0 X 20
|
||||
G91 G0 Z -${plunge}
|
||||
G38.2 X -20 ${fastSeek}
|
||||
G91 G1 X 1
|
||||
G38.2 X -2 ${slowSeek}
|
||||
G92 X ${xoffset}
|
||||
|
||||
G91 G0 X 1
|
||||
G91 G0 Y 20
|
||||
G91 G0 X -20
|
||||
G38.2 Y -20 ${fastSeek}
|
||||
G91 G1 Y 1
|
||||
G38.2 Y -2 ${slowSeek}
|
||||
G92 Y ${yoffset}
|
||||
|
||||
G91 G0 Y 3
|
||||
G91 G0 Z 25.4
|
||||
G90 G0 X0 Y0
|
||||
|
||||
M2
|
||||
`);
|
||||
},
|
||||
|
||||
probe_z() {
|
||||
var pcmd = "";
|
||||
var fastSeek = this.config.probe["probe-fast-seek"];
|
||||
var slowSeek = this.config.probe["probe-slow-seek"];
|
||||
var zoffset = this.config.probe["probe-zdim"];
|
||||
|
||||
debugger;
|
||||
|
||||
if(this.mach_units == "METRIC") {
|
||||
fastSeek = "F" + fastSeek;
|
||||
slowSeek = "F" + slowSeek;
|
||||
|
||||
|
||||
pcmd += "G92 Z0\n";
|
||||
pcmd += "G21\n";
|
||||
pcmd += "G38.2 Z-25 " + fastSeek + "\n";
|
||||
pcmd += "G91 G0 Z1.5\n";
|
||||
pcmd += "G38.2 Z-2.5 " + slowSeek + "\n";
|
||||
pcmd += "G92 Z " + zoffset + "\n";
|
||||
pcmd += "G91 G0 Z3\n";
|
||||
|
||||
|
||||
} else {
|
||||
zoffset = zoffset / 25.4;
|
||||
slowSeek = slowSeek / 25.4;
|
||||
slowSeek = slowSeek.toFixed(5);
|
||||
slowSeek = "F" + slowSeek;
|
||||
fastSeek = fastSeek / 25.4;
|
||||
fastSeek = fastSeek.toFixed(5);
|
||||
fastSeek = "F" + fastSeek;
|
||||
|
||||
pcmd += "G92 Z0\n";
|
||||
pcmd += "G20\n";
|
||||
pcmd += "G38.2 Z-1.0 " + fastSeek +"\n";
|
||||
pcmd += "G91 G0 Z0.06\n";
|
||||
pcmd += "G38.2 Z-0.1 " + slowSeek + "\n";
|
||||
zoffset = zoffset.toFixed(5);
|
||||
pcmd += "G92 Z " + zoffset + "\n";
|
||||
pcmd += "G91 G0 Z0.125\n";
|
||||
let fastSeek = this.config.probe["probe-fast-seek"];
|
||||
let slowSeek = this.config.probe["probe-slow-seek"];
|
||||
let zoffset = this.config.probe["probe-zdim"];
|
||||
|
||||
if (this.mach_units !== "METRIC") {
|
||||
zoffset /= 25.4;
|
||||
slowSeek /= 25.4;
|
||||
fastSeek /= 25.4;
|
||||
}
|
||||
|
||||
this.send(pcmd);
|
||||
zoffset = zoffset.toFixed(5);
|
||||
slowSeek = slowSeek.toFixed(5);
|
||||
fastSeek = fastSeek.toFixed(5);
|
||||
|
||||
slowSeek = `F${slowSeek}`;
|
||||
fastSeek = `F${fastSeek}`;
|
||||
|
||||
this.send(`
|
||||
G21
|
||||
G92 Z0
|
||||
|
||||
G38.2 Z -25.4 ${fastSeek}
|
||||
G91 G1 Z 1
|
||||
G38.2 Z -2 ${slowSeek}
|
||||
G92 Z ${zoffset}
|
||||
|
||||
G91 G0 Z3
|
||||
|
||||
M2
|
||||
`);
|
||||
},
|
||||
|
||||
jog_fn: function (x_jog,y_jog,z_jog,a_jog) {
|
||||
@@ -488,9 +454,6 @@ module.exports = {
|
||||
var zcmd = "Z" + z_jog * this.jog_incr;
|
||||
var acmd = "A" + a_jog * this.jog_incr;
|
||||
|
||||
console.log("Jog command: " + this.jog_incr);
|
||||
//debugger;
|
||||
|
||||
this.send('G91\nG0' + xcmd + ycmd + zcmd + acmd + '\n');
|
||||
},
|
||||
|
||||
@@ -511,15 +474,20 @@ module.exports = {
|
||||
},
|
||||
|
||||
|
||||
load_toolpath: function (file, file_time) {
|
||||
load_toolpath: async function (file, file_time) {
|
||||
this.toolpath = {};
|
||||
|
||||
if (!file) return;
|
||||
|
||||
api.get('path/' + file).done(function (toolpath) {
|
||||
if (this.last_file_time != file_time) return;
|
||||
|
||||
this.showGcodeMessage = true;
|
||||
|
||||
let done = false;
|
||||
while (!done) {
|
||||
const toolpath = await api.get(`path/${file}`);
|
||||
|
||||
if (typeof toolpath.progress == 'undefined') {
|
||||
done = true;
|
||||
toolpath.filename = file;
|
||||
this.toolpath_progress = 1;
|
||||
this.showGcodeMessage = false;
|
||||
@@ -531,13 +499,10 @@ module.exports = {
|
||||
Vue.set(state, 'path_min_' + axis, bounds.min[axis]);
|
||||
Vue.set(state, 'path_max_' + axis, bounds.max[axis]);
|
||||
}
|
||||
|
||||
} else {
|
||||
this.showGcodeMessage = true;
|
||||
this.toolpath_progress = toolpath.progress;
|
||||
this.load_toolpath(file, file_time); // Try again
|
||||
}
|
||||
}.bind(this));
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -80,33 +80,29 @@ module.exports = {
|
||||
|
||||
|
||||
methods: {
|
||||
load: function (file) {
|
||||
load: async function(file) {
|
||||
if (file == this.file) return;
|
||||
this.clear();
|
||||
this.file = file;
|
||||
|
||||
if (!file) return;
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', '/api/file/' + file + '?' + Math.random(), true);
|
||||
xhr.responseType = 'text';
|
||||
const response = await fetch(`/api/file/${file}?${Math.random()}`);
|
||||
const text = await response.text();
|
||||
|
||||
xhr.onload = function (e) {
|
||||
if (this.file != file) return;
|
||||
var lines = escapeHTML(xhr.response.trimRight()).split(/\r?\n/);
|
||||
|
||||
for (var i = 0; i < lines.length; i++) {
|
||||
lines[i] = '<li class="ln' + (i + 1) + '">' +
|
||||
'<b>' + (i + 1) + '</b>' + lines[i] + '</li>';
|
||||
}
|
||||
if (text.length > 20e6) {
|
||||
this.clusterize.update(['File is large - gcode view disabled']);
|
||||
} else {
|
||||
const lines = escapeHTML(text.trimRight())
|
||||
.split(/[\r\n]/)
|
||||
.map((line, i) => `<li class="ln${i + 1}"><b>${i + 1}</b>${line}</li>`);
|
||||
|
||||
this.clusterize.update(lines);
|
||||
this.empty = false;
|
||||
}
|
||||
|
||||
Vue.nextTick(this.update_line);
|
||||
}.bind(this)
|
||||
this.empty = false;
|
||||
|
||||
xhr.send();
|
||||
Vue.nextTick(this.update_line);
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -27,6 +27,54 @@
|
||||
|
||||
script#control-view-template(type="text/x-template")
|
||||
#control
|
||||
message(:show.sync="showGcodeMessage")
|
||||
h3(slot="header") Processing New File
|
||||
|
||||
div(slot="body")
|
||||
h3 Please wait..
|
||||
p Simulating GCode to check for errors, calculate ETA and generate 3D view.
|
||||
|
||||
div(slot="footer")
|
||||
label Simulating {{(toolpath_progress || 0) | percent}}
|
||||
|
||||
message(:show.sync=`ask_home_msg`)
|
||||
h3(slot="header") Home Machine
|
||||
|
||||
div(slot="body")
|
||||
p Home the machine?
|
||||
|
||||
div(slot="footer")
|
||||
button.pure-button(@click="home()")
|
||||
| OK
|
||||
|
||||
button.pure-button(@click='ask_home_msg = false; ask_home = false')
|
||||
| Cancel
|
||||
|
||||
message(:show.sync=`ask_zero_xy_msg`)
|
||||
h3(slot="header") XY Origin
|
||||
|
||||
div(slot="body")
|
||||
p Move to XY origin?
|
||||
|
||||
div(slot="footer")
|
||||
button.pure-button(@click="goto_zero(1,1,0,0)")
|
||||
| Confirm
|
||||
|
||||
button.pure-button(@click='ask_zero_xy_msg = false')
|
||||
| Cancel
|
||||
|
||||
message(:show.sync=`ask_zero_z_msg`)
|
||||
h3(slot="header") Z Origin
|
||||
|
||||
div(slot="body")
|
||||
p Move to Z origin?
|
||||
|
||||
div(slot="footer")
|
||||
button.pure-button(@click="goto_zero(0,0,1,0)")
|
||||
| Confirm
|
||||
|
||||
button.pure-button(@click='ask_zero_z_msg = false')
|
||||
| Cancel
|
||||
|
||||
table(width="99%")
|
||||
tr
|
||||
@@ -114,56 +162,6 @@ script#control-view-template(type="text/x-template")
|
||||
button.pure-button(@click=`toolpath_msg['${axis}'] = false`)
|
||||
| OK
|
||||
|
||||
|
||||
message(:show.sync="showGcodeMessage")
|
||||
h3(slot="header") Processing New File
|
||||
|
||||
div(slot="body")
|
||||
h3 Please wait..
|
||||
p Simulating GCode to check for errors, calculate ETA and generate 3D view.
|
||||
|
||||
div(slot="footer")
|
||||
label Simulating {{(toolpath_progress || 0) | percent}}
|
||||
|
||||
message(:show.sync=`ask_home_msg`)
|
||||
h3(slot="header") Home Machine
|
||||
|
||||
div(slot="body")
|
||||
p Home the machine?
|
||||
|
||||
div(slot="footer")
|
||||
button.pure-button(@click="home()")
|
||||
| OK
|
||||
|
||||
button.pure-button(@click='ask_home_msg = false; ask_home = false')
|
||||
| Cancel
|
||||
|
||||
message(:show.sync=`ask_zero_xy_msg`)
|
||||
h3(slot="header") XY Origin
|
||||
|
||||
div(slot="body")
|
||||
p Move to XY origin?
|
||||
|
||||
div(slot="footer")
|
||||
button.pure-button(@click="goto_zero(1,1,0,0)")
|
||||
| Confirm
|
||||
|
||||
button.pure-button(@click='ask_zero_xy_msg = false')
|
||||
| Cancel
|
||||
|
||||
message(:show.sync=`ask_zero_z_msg`)
|
||||
h3(slot="header") Z Origin
|
||||
|
||||
div(slot="body")
|
||||
p Move to Z origin?
|
||||
|
||||
div(slot="footer")
|
||||
button.pure-button(@click="goto_zero(0,0,1,0)")
|
||||
| Confirm
|
||||
|
||||
button.pure-button(@click='ask_zero_z_msg = false')
|
||||
| Cancel
|
||||
|
||||
th.actions
|
||||
button.pure-button(:disabled="!can_set_axis",
|
||||
title=`Set {{'${axis}' | upper}} axis position.`,
|
||||
@@ -308,7 +306,21 @@ script#control-view-template(type="text/x-template")
|
||||
.bar(:style="'width:' + (progress || 0) * 100 + '%'")
|
||||
tr
|
||||
td(style="white-space: nowrap;text-align:center")
|
||||
button(:class="state['pw'] ? '' : 'load-on'",style="height:100px;width:200px",@click="tool_msg = true",) Probe XYZ
|
||||
message(:show.sync=`probe_test`)
|
||||
h3(slot="header") Test probe connection
|
||||
|
||||
div(slot="body")
|
||||
.pure-form
|
||||
p Attach the probe magnet to the collet.
|
||||
p Touch the probe block to the bit.
|
||||
|
||||
div(slot="footer")
|
||||
button.pure-button(@click=`probe_test = false`)
|
||||
| Cancel
|
||||
|
||||
button.pure-button.button-success(
|
||||
:disabled=`!state.probe_connected`
|
||||
@click=`finish_probe_test()`) Continue
|
||||
|
||||
message(:show.sync=`tool_msg`)
|
||||
h3(slot="header") Enter probe tool information
|
||||
@@ -328,8 +340,8 @@ script#control-view-template(type="text/x-template")
|
||||
button.pure-button.button-success(
|
||||
@click=`set_tool_diameter(tool_diameter)`) Set
|
||||
|
||||
|
||||
button(:class="state['pw'] ? '' : 'load-on'",style="height:100px;width:200px",@click="probe_z()") Probe Z
|
||||
button(:class="state['pw'] ? '' : 'load-on'", style="height:100px;width:200px", @click=`start_probe_test(show_tool_diameter_prompt)`) Probe XYZ
|
||||
button(:class="state['pw'] ? '' : 'load-on'", style="height:100px;width:200px", @click=`start_probe_test(probe_z)`) Probe Z
|
||||
|
||||
|
||||
.tabs
|
||||
|
||||
@@ -137,7 +137,9 @@ class Config(object):
|
||||
|
||||
|
||||
def upgrade(self, config):
|
||||
version = tuple(map(int, config['version'].split('.')))
|
||||
version = config['version']
|
||||
version = version.split('b')[0] # Strip off any "beta" suffix
|
||||
version = tuple(map(int, version.split('.'))) # Break it into a tuple of integers
|
||||
|
||||
if version < (0, 2, 4):
|
||||
for motor in config['motors']:
|
||||
@@ -177,7 +179,7 @@ class Config(object):
|
||||
self._update(config, False)
|
||||
|
||||
with open(self.ctrl.get_path('config.json'), 'w') as f:
|
||||
json.dump(config, f)
|
||||
json.dump(config, f, indent=2)
|
||||
|
||||
os.sync()
|
||||
|
||||
|
||||
@@ -381,7 +381,7 @@ class Planner():
|
||||
|
||||
except RuntimeError as e:
|
||||
# Pass on the planner message
|
||||
self.log.error(str(e));
|
||||
self.log.error(str(e))
|
||||
self.stop()
|
||||
|
||||
except:
|
||||
|
||||
@@ -105,7 +105,7 @@ class State(object):
|
||||
|
||||
|
||||
def load_files(self):
|
||||
self.files = []
|
||||
files = []
|
||||
|
||||
upload = self.ctrl.get_upload()
|
||||
|
||||
@@ -116,37 +116,38 @@ class State(object):
|
||||
|
||||
for path in os.listdir(upload):
|
||||
if os.path.isfile(upload + '/' + path):
|
||||
self.files.append(path)
|
||||
files.append(path)
|
||||
|
||||
self.files.sort()
|
||||
self.set('files', self.files)
|
||||
files.sort()
|
||||
self.set('files', files)
|
||||
|
||||
if len(self.files): self.select_file(self.files[0])
|
||||
if len(files): self.select_file(files[0])
|
||||
else: self.select_file('')
|
||||
|
||||
|
||||
def clear_files(self):
|
||||
self.select_file('')
|
||||
self.files = []
|
||||
self.changes['files'] = self.files
|
||||
self.set('files', [])
|
||||
|
||||
|
||||
def add_file(self, filename):
|
||||
if not filename in self.files:
|
||||
self.files.append(filename)
|
||||
self.files.sort()
|
||||
self.changes['files'] = self.files
|
||||
files = copy.deepcopy(self.get('files'))
|
||||
if not filename in files:
|
||||
files.append(filename)
|
||||
files.sort()
|
||||
self.set('files', files)
|
||||
|
||||
self.select_file(filename)
|
||||
|
||||
|
||||
def remove_file(self, filename):
|
||||
if filename in self.files:
|
||||
self.files.remove(filename)
|
||||
self.changes['files'] = self.files
|
||||
files = copy.deepcopy(self.get('files'))
|
||||
if filename in files:
|
||||
files.remove(filename)
|
||||
self.set('files', files)
|
||||
|
||||
if self.get('selected', filename) == filename:
|
||||
if len(self.files): self.select_file(self.files[0])
|
||||
if len(files): self.select_file(files[0])
|
||||
else: self.select_file('')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user