pull/110/head
openbuilds-engineer 2019-09-05 16:58:56 +02:00
rodzic 543a5324e9
commit 8d34d2f1a8
9 zmienionych plików z 286 dodań i 145 usunięć

Wyświetl plik

@ -1,3 +1,5 @@
v1.0.187: Fixed Workbee1510 profile for new BlackBox wiring video
v1.0.186: Fixes for 3D viewer in Inch mode
v1.0.185: Changed wording on Firmware Detection to avoid confusion
v1.0.184: Improved unhandled exceptions to hide unimportant errors from users
v1.0.183: Removed LEAD55 and fixed capitalization of LEAD1010, testing Probing with forced G21 before probe

Wyświetl plik

@ -164,7 +164,7 @@ function selectMachine(type) {
$0: "10", //"Step pulse time, microseconds"
$1: "255", //"Step idle delay, milliseconds"
$2: "0", //"Step pulse invert, mask"
$3: "6", //"Step direction invert, mask"
$3: "1", //"Step direction invert, mask"
$4: "1", //"Invert step enable pin, boolean"
$5: "0", //"Invert limit pins, boolean"
$6: "0", //"Invert probe pin, boolean"
@ -837,56 +837,56 @@ function selectMachine(type) {
if (lastSelectedMachine != type) {
if (lastSelectedMachine.substr(0, 4) != type.substr(0, 4)) {
if (customFirmware == "acro") {
Metro.dialog.create({
title: "Custom Firmware Required",
content: `<div>The machine type you selected, needs a custom firmware. Please use the Firmware Flashing Wizard to upload a custom firmware image to the controller to properly support this machine. </div>`,
actions: [{
caption: "No Thank you",
cls: "js-dialog-close",
onclick: function() {
console.log("Do nothing")
}
},
{
caption: "Launch the Flashing Wizard",
cls: "js-dialog-close success",
onclick: function() {
populateGrblBuilderToolForm();
setTimeout(function(){
$('#grblAxesCount').data('select').val('2axes')
}, 500)
}
},
Metro.dialog.create({
title: "Custom Firmware Required",
content: `<div>The machine type you selected, needs a custom firmware. Please use the Firmware Flashing Wizard to upload a custom firmware image to the controller to properly support this machine. </div>`,
actions: [{
caption: "No Thank you",
cls: "js-dialog-close",
onclick: function() {
console.log("Do nothing")
}
},
{
caption: "Launch the Flashing Wizard",
cls: "js-dialog-close success",
onclick: function() {
populateGrblBuilderToolForm();
setTimeout(function() {
$('#grblAxesCount').data('select').val('2axes')
}, 500)
}
},
]
});
]
});
console.log('This machine needs a custom firmware')
}
if (customFirmware == "acropen") {
Metro.dialog.create({
title: "Custom Firmware Required",
content: `<div>The machine type you selected, needs a custom firmware. Please use the Firmware Flashing Wizard to upload a custom firmware image to the controller to properly support this machine. </div>`,
actions: [{
caption: "No Thank you",
cls: "js-dialog-close",
onclick: function() {
console.log("Do nothing")
}
},
{
caption: "Launch the Flashing Wizard",
cls: "js-dialog-close success",
onclick: function() {
populateGrblBuilderToolForm();
setTimeout(function(){
$('#grblAxesCount').data('select').val('servo')
}, 500)
}
},
Metro.dialog.create({
title: "Custom Firmware Required",
content: `<div>The machine type you selected, needs a custom firmware. Please use the Firmware Flashing Wizard to upload a custom firmware image to the controller to properly support this machine. </div>`,
actions: [{
caption: "No Thank you",
cls: "js-dialog-close",
onclick: function() {
console.log("Do nothing")
}
},
{
caption: "Launch the Flashing Wizard",
cls: "js-dialog-close success",
onclick: function() {
populateGrblBuilderToolForm();
setTimeout(function() {
$('#grblAxesCount').data('select').val('servo')
}, 500)
}
},
]
});
]
});
console.log('This machine needs a custom firmware')
}
@ -955,4 +955,4 @@ function setMachineButton(type) {
}
$('#context_toggle2').html(template);
$('#overlayimg').html(`<img src="img/mch/` + overlaytype + `.png" style="max-width:100%; max-height:100%;"/><span onclick="$('#grblTab').click()" style="position: absolute; top: 3px; right:3px; z-index: 1;" class="fas fa-cogs machineicon" style="text-shadow: 2px 2px 4px #cccccc;"></span>`)
};
};

Wyświetl plik

@ -1,5 +1,21 @@
var toolchanges = [];
// endline can be Blank
function runGcodeSection(startline, endline) {
var gcode = editor.getValue()
gcodeLines = gcode.split("\n")
if (endline) {
var newgcode = gcodeLines.slice(startline, endline)
} else {
var newgcode = gcodeLines.slice(startline)
}
var newGcodeString = newgcode.join("\n").replace(/M6|M06|M006/i, "");
socket.emit('runJob', newGcodeString);
}
function setupToolChanges(gcode) {
// scan gcode for tool change info
var fileLines = gcode
@ -20,7 +36,14 @@ function setupToolChanges(gcode) {
// T0 ; 1/4 inch flat bottom endmill
if (line.match(/\(T(\d+)\s+(.*)\)/i) || line.match(/\;T(\d+)\s+(.*)\)/i) || line.match(/\T(\d+)/i)) {
var toolNum = parseInt(RegExp.$1);
var toolComment = "T" + toolNum + " " + RegExp.$2;
if (toolComments[toolNum] && !toolComments[toolNum].toolComment) {
// var toolComment = "T" + toolNum + " " + RegExp.$2;
} else if (toolComments[toolNum] && toolComments[toolNum].toolComment) {
var toolComment = toolComments[toolNum].toolComment + " " + RegExp.$2;
} else {
var toolComment = "T" + toolNum + " " + RegExp.$2;
}
// var toolComment = "T" + toolNum + " " + RegExp.$2;
console.log("found tool comment. lineNum:", i, "toolNum:", toolNum, "comment:", toolComment, "line:", line);
toolComments[toolNum] = {
lineNum: i + 1,

Wyświetl plik

@ -1,19 +1,10 @@
function drawRuler(xmin, xmax, ymin, ymax, inches) {
function drawRuler(xmin, xmax, ymin, ymax) {
var length1 = 4
var length5 = 6
var length10 = 7
var unitsval = ""
if (inches) {
xmin = Math.floor(xmin * 0.0393701);
xmax = Math.ceil(xmax * 0.0393701);
ymin = Math.floor(ymin * 0.0393701);
ymax = Math.ceil(ymax * 0.0393701);
length1 = 1.4;
length5 = 1.6;
length10 = 1.7;
var unitsval = "in"
}
console.log(xmin, xmax, ymin, ymax)
var ruler = new THREE.Group();
var material = new THREE.LineBasicMaterial({
color: 0x888888
@ -92,18 +83,11 @@ function drawRuler(xmin, xmax, ymin, ymax, inches) {
}
var fontsize = 4
if (inches) {
fontsize = Math.ceil(4 * 0.0393701);
}
var spacing = -10
if (inches) {
spacing = -3;
}
var x = [];
var y = [];
for (var i = xmin; i <= xmax; i++) {
if (i % 10 == 0) {
x[i] = this.makeSprite(this.scene, "webgl", {
x: i,
@ -115,9 +99,11 @@ function drawRuler(xmin, xmax, ymin, ymax, inches) {
});
ruler.add(x[i]);
}
}
for (var i = ymin; i <= ymax; i++) {
if (i % 10 == 0) {
y[i] = this.makeSprite(this.scene, "webgl", {
x: spacing,
@ -143,9 +129,148 @@ function drawRuler(xmin, xmax, ymin, ymax, inches) {
// var line = new THREE.Line(geometry, material);
// ruler.add(line);
if (inches) {
ruler.scale.multiplyScalar(25.4);
return (ruler)
}
function drawRulerInches(xmin, xmax, ymin, ymax) {
length1 = 1.4;
length5 = 1.6;
length10 = 1.7;
var unitsval = "in"
console.log(xmin, xmax, ymin, ymax)
var ruler = new THREE.Group();
var material = new THREE.LineBasicMaterial({
color: 0x888888
});
material.opacity = 0.15;
// x axis
for (i = xmin; i <= xmax; i++) {
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(i, -1, 0));
geometry.vertices.push(new THREE.Vector3(i, -length1, 0));
var line = new THREE.Line(geometry, material);
// line.translateX(-xmax / 2)
// line.translateY(-ymax / 2)
ruler.add(line);
}
for (i = xmin; i <= xmax; i++) {
if (i % 5 == 0) {
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(i, -1, 0));
geometry.vertices.push(new THREE.Vector3(i, -length5, 0));
var line = new THREE.Line(geometry, material);
// line.translateX(-xmax / 2)
// line.translateY(-ymax / 2)
ruler.add(line);
}
}
for (i = xmin; i <= xmax; i++) {
if (i % 10 == 0) {
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(i, -1, 0));
geometry.vertices.push(new THREE.Vector3(i, -length10, 0));
var line = new THREE.Line(geometry, material);
// line.translateX(-xmax / 2)
// line.translateY(-ymax / 2)
ruler.add(line);
}
}
// y axis
for (i = ymin; i <= ymax; i++) {
if (i % 5 == 0) {
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(-1, i, 0));
geometry.vertices.push(new THREE.Vector3(-length5, i, 0));
var line = new THREE.Line(geometry, material);
// line.translateX(-ymax / 2)
// line.translateY(-ymax / 2)
ruler.add(line);
}
}
for (i = ymin; i <= ymax; i++) {
if (i % 10 == 0) {
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(-1, i, 0));
geometry.vertices.push(new THREE.Vector3(-length10, i, 0));
var line = new THREE.Line(geometry, material);
// line.translateX(-ymax / 2)
// line.translateY(-ymax / 2)
ruler.add(line);
}
}
for (i = ymin; i <= ymax; i++) {
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(-1, i, 0));
geometry.vertices.push(new THREE.Vector3(-length1, i, 0));
var line = new THREE.Line(geometry, material);
// line.translateX(-ymax / 2)
// line.translateY(-ymax / 2)
ruler.add(line);
}
fontsize = 10
spacing = -10;
xmin = Math.floor(xmin * 0.0393701);
xmax = Math.ceil(xmax * 0.0393701);
ymin = Math.floor(ymin * 0.0393701);
ymax = Math.ceil(ymax * 0.0393701);
console.log(xmin, xmax, ymin, ymax)
var x = [];
var y = [];
for (var i = xmin; i <= xmax; i++) {
if (i % 1 == 0) {
x[i] = this.makeSprite(this.scene, "webgl", {
x: i * 25.4,
y: spacing,
z: 0,
text: i + unitsval,
color: "#cc0000",
size: fontsize / 2.54
});
ruler.add(x[i]);
}
}
for (var i = ymin; i <= ymax; i++) {
if (i % 1 == 0) {
y[i] = this.makeSprite(this.scene, "webgl", {
x: spacing,
y: i * 25.4,
z: 0,
text: i + unitsval,
color: "#006600",
size: fontsize / 2.54
});
ruler.add(y[i]);
}
}
ruler.name = "Rulers"
// var material = new THREE.LineBasicMaterial({
// color: 0x666666
// });
// material.opacity = 0.15;
// var geometry = new THREE.Geometry();
// geometry.vertices.push(new THREE.Vector3(xmax, 0, 0));
// geometry.vertices.push(new THREE.Vector3(xmax, ymax, 0));
// geometry.vertices.push(new THREE.Vector3(0, ymax, 0));
// var line = new THREE.Line(geometry, material);
// ruler.add(line);
// ruler.scale.multiplyScalar(25.4);
return (ruler)
}

Wyświetl plik

@ -140,11 +140,12 @@ function drawWorkspace(xmin, xmax, ymin, ymax) {
workspace.add(cone)
gridsystem.name = "Grid System"
workspace.add(gridsystem)
redrawGrid(xmin, xmax, ymin, ymax);
redrawGrid(xmin, xmax, ymin, ymax, false);
scene.add(workspace)
}
function redrawGrid(xmin, xmax, ymin, ymax, inches) {
console.log(xmin, xmax, ymin, ymax, inches)
if (inches) {
xmin = Math.floor(xmin * 25.4);
xmax = Math.ceil(xmax * 25.4);
@ -171,8 +172,7 @@ function redrawGrid(xmin, xmax, ymin, ymax, inches) {
if (inches) {
var unitsval = "in"
var offset = 5 * 25.4
var size = 5 * 25.4
var offset = 5 * 2.54
} else {
var unitsval = "mm"
var offset = 5
@ -201,17 +201,6 @@ function redrawGrid(xmin, xmax, ymin, ymax, inches) {
axesgrp.add(xlbl);
axesgrp.add(ylbl);
// var unitslabel = this.makeSprite(this.scene, "webgl", {
// x: xmin - offset,
// y: ymin - offset,
// z: 0,
// text: unitsval,
// color: "#888888",
// size: size
// });
// axesgrp.add(unitslabel);
//axesgrp.add(zlbl); Laser don't have Z - but CNCs do
var materialX = new THREE.LineBasicMaterial({
color: 0xcc0000
});
@ -246,11 +235,10 @@ function redrawGrid(xmin, xmax, ymin, ymax, inches) {
var step10 = 10;
var step100 = 100;
if (inches) {
step10 = 25.4;
step100 = 254;
step10 = 2.54;
step100 = 25.4;
}
helper = new THREE.GridHelper(xmax, ymax, step10, 0x888888);
helper = new THREE.GridHelper(xmin, xmax, ymin, ymax, step10, 0x888888);
helper.position.y = 0;
helper.position.x = 0;
helper.position.z = 0;
@ -259,7 +247,7 @@ function redrawGrid(xmin, xmax, ymin, ymax, inches) {
helper.receiveShadow = false;
helper.name = "GridHelper10mm"
grid.add(helper);
helper = new THREE.GridHelper(xmax, ymax, step100, 0x666666);
helper = new THREE.GridHelper(xmin, xmax, ymin, ymax, step100, 0x666666);
helper.position.y = 0;
helper.position.x = 0;
helper.position.z = 0;
@ -271,7 +259,11 @@ function redrawGrid(xmin, xmax, ymin, ymax, inches) {
grid.name = "Grid"
gridsystem.children.length = 0
var ruler = drawRuler(xmin, xmax, ymin, ymax, inches)
if (inches) {
var ruler = drawRulerInches(xmin, xmax, ymin, ymax, inches)
} else {
var ruler = drawRuler(xmin, xmax, ymin, ymax, inches)
}
gridsystem.add(grid);
gridsystem.add(ruler);

Wyświetl plik

@ -25,20 +25,6 @@ $(document).ready(function() {
});
});
// endline can be Blank
function runGcodeSection(startline, endline) {
var gcode = editor.getValue()
gcodeLines = gcode.split("\n")
if (endline) {
var newgcode = gcodeLines.slice(startline, endline)
} else {
var newgcode = gcodeLines.slice(startline)
}
var newGcodeString = newgcode.join("\n").replace(/M6|M06|M006/i, "");
socket.emit('runJob', newGcodeString);
}
function printLog(string) {
if (document.getElementById("console") !== null) {

Wyświetl plik

@ -24,11 +24,12 @@ function parseGcodeInWebWorker(gcode) {
worker.terminate();
scene.add(object);
if (object.userData.inch) {
// console.log(scaling)
object.scale.x = 25.4
object.scale.y = 25.4
object.scale.z = 25.4
}
redrawGrid(parseInt(object.userData.bbbox2.min.x), parseInt(object.userData.bbbox2.max.x), parseInt(object.userData.bbbox2.min.y), parseInt(object.userData.bbbox2.max.y), object.userData.inch)
redrawGrid(Math.floor(object.userData.bbbox2.min.x), Math.ceil(object.userData.bbbox2.max.x), Math.floor(object.userData.bbbox2.min.y), Math.ceil(object.userData.bbbox2.max.y), object.userData.inch)
// animate();
setTimeout(function() {
if (webgl) {
@ -75,40 +76,43 @@ function parseGcodeInWebWorker(gcode) {
// toolChanges
toolchanges = setupToolChanges(gcode);
if (toolchanges.length) {
$('#runBtn').hide()
$('#runToolsBtn').show()
$('#toolChangesMenu').empty();
var dropdownTemplate = ``;
if (toolchanges[0].lineNum > 0) {
dropdownTemplate += `<li onclick="runGcodeSection(` + 0 + `,` + toolchanges[0].lineNum + `)"><a href="#" onclick=""><i class="fas fa-play"></i> Run Header (lines 1-` + toolchanges[0].lineNum + `)</a></li>`
}
for (i = 0; i < toolchanges.length; i++) {
var endline = false;
if (toolchanges[i + 1]) {
endline = toolchanges[i + 1].lineNum
}
dropdownTemplate += `<li onclick="runGcodeSection(` + toolchanges[i].lineNum + `,` + endline + `)">`
dropdownTemplate += `<a href="#" onclick=""><i class="fas fa-play"></i> Run Tool `
if (toolchanges[i].toolNum) {
dropdownTemplate += toolchanges[i].toolNum + ` `
}
if (toolchanges[i].toolComment) {
dropdownTemplate += toolchanges[i].toolComment + ` `
}
if (toolchanges[i].sectionComment) {
dropdownTemplate += toolchanges[i].sectionComment + ` `
}
dropdownTemplate += ` from line ` + toolchanges[i].lineNum + ` `
dropdownTemplate += `</a></li>`
}
$('#toolChangesMenu').html(dropdownTemplate)
} else {
$('#runBtn').show()
$('#runToolsBtn').hide()
}
// toolchanges = setupToolChanges(gcode);
//
// if (toolchanges.length) {
// $('#runBtn').hide()
// $('#runToolsBtn').show()
// $('#toolChangesMenu').empty();
// var dropdownTemplate = ``;
// if (toolchanges[0].lineNum > 0) {
// dropdownTemplate += `<li onclick="runGcodeSection(` + 0 + `,` + toolchanges[0].lineNum + `)"><a href="#" onclick=""><i class="fas fa-play"></i> Run Complete Job</a></li>`
// dropdownTemplate += `<li class="divider"></li>`
// dropdownTemplate += `<li onclick="runGcodeSection(` + 0 + `,` + toolchanges[0].lineNum + `)"><a href="#" onclick=""><i class="fas fa-play"></i> Run Header (lines 1-` + toolchanges[0].lineNum + `)</a></li>`
//
// }
// for (i = 0; i < toolchanges.length; i++) {
// var endline = false;
// if (toolchanges[i + 1]) {
// endline = toolchanges[i + 1].lineNum
// }
// dropdownTemplate += `<li onclick="runGcodeSection(` + toolchanges[i].lineNum + `,` + endline + `)">`
// dropdownTemplate += `<a href="#" onclick=""><i class="fas fa-play"></i> Run Tool `
// if (toolchanges[i].toolNum) {
// dropdownTemplate += toolchanges[i].toolNum + ` `
// }
// dropdownTemplate += ` from line ` + (toolchanges[i].lineNum + 1) + ` `
// if (toolchanges[i].toolComment) {
// dropdownTemplate += `/ Tool Details: ` + toolchanges[i].toolComment + ` `
// }
// if (toolchanges[i].sectionComment) {
// dropdownTemplate += `/ Section ` + toolchanges[i].sectionComment + ` `
// }
// dropdownTemplate += `</a></li>`
// }
// $('#toolChangesMenu').html(dropdownTemplate)
// } else {
// $('#runBtn').show()
// $('#runToolsBtn').hide()
// }
};
@ -188,9 +192,17 @@ function runSim() {
// simstop();
// }
} else {
var posx = object.userData.lines[simIdx].p2.x; //- (sizexmax/2);
var posy = object.userData.lines[simIdx].p2.y; //- (sizeymax/2);
var posz = object.userData.lines[simIdx].p2.z;
if (object.userData.inch) {
var posx = object.userData.lines[simIdx].p2.x * 25.4; //- (sizexmax/2);
var posy = object.userData.lines[simIdx].p2.y * 25.4; //- (sizeymax/2);
var posz = object.userData.lines[simIdx].p2.z * 25.4;
} else {
var posx = object.userData.lines[simIdx].p2.x; //- (sizexmax/2);
var posy = object.userData.lines[simIdx].p2.y; //- (sizeymax/2);
var posz = object.userData.lines[simIdx].p2.z;
}
//console.log(posx, posy, posz, object.userData.lines[simIdx])

Wyświetl plik

@ -79,6 +79,7 @@ function openGCodeFromText(gcode) {
var box = line.geometry.boundingBox.clone();
line.userData.lines = parsedData.lines
line.userData.bbbox2 = box
line.userData.inch = parsedData.inch
line.name = 'gcodeobject'
return line;
}

Wyświetl plik

@ -2,7 +2,7 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE.GridHelper = function(sizeX, sizeY, step, colorval) {
THREE.GridHelper = function(minX, maxX, minY, maxY, step, colorval) {
var geometry = new THREE.Geometry();
var material = new THREE.LineBasicMaterial({
@ -12,16 +12,16 @@ THREE.GridHelper = function(sizeX, sizeY, step, colorval) {
this.color = new THREE.Color(colorval);
for (var i = 0; i <= (sizeX); i += step) {
for (var i = minX; i <= (maxX); i += step) {
geometry.vertices.push(
new THREE.Vector3(i, 0, 0), new THREE.Vector3(i, sizeY, 0)
new THREE.Vector3(i, minY, 0), new THREE.Vector3(i, maxY, 0)
);
geometry.colors.push(this.color, this.color, this.color, this.color);
}
for (var i = 0; i <= (sizeY); i += step) {
for (var i = minY; i <= (maxY); i += step) {
geometry.vertices.push(
new THREE.Vector3(0, i, 0), new THREE.Vector3(sizeX, i, 0)
new THREE.Vector3(minX, i, 0), new THREE.Vector3(maxX, i, 0)
);
geometry.colors.push(this.color, this.color, this.color, this.color);