Skip to content

Commit

Permalink
Toolpath Webworkers
Browse files Browse the repository at this point in the history
  • Loading branch information
petervanderwalt committed Jul 1, 2019
1 parent 004f5ac commit 9b73fc5
Show file tree
Hide file tree
Showing 25 changed files with 901 additions and 3,197 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.txt
@@ -1,3 +1,4 @@
01 Jul 2019: Moved Toolpath Calculation to WebWorkers
24 Jun 2019: Moved Gcode Preview to WebWorker
14 Jun 2019: Added Beta of Servo based Pen Plotter CAM
29 Apr 2019: Added Delete Selection button #49, Added Workspace and Gcode naming #51, Added .OBC file support via CONTROL
Expand Down
12 changes: 2 additions & 10 deletions index.html
Expand Up @@ -73,7 +73,8 @@
<ul class="ribbon-dropdown" data-role="dropdown">
<li onclick="helloWorld()"><a href="#">CNC Hello World</a></li>
<li onclick="helloWorldLaser()"><a href="#">Laser Hello World</a></li>

<li onclick="helloWorldDragKnife()"><a href="#">Dragknife Hello World</a></li>
<li onclick="helloWorldPlasma()"><a href="#">Plasma Hello World</a></li>
</ul>
</li>
<li><a href="#" onclick="Metro.dialog.open('#partslibModal')"><i class="fas fa-sitemap fa-fw"></i> Import from Parts Library</a></li>
Expand Down Expand Up @@ -638,15 +639,13 @@ <h6>Calculating Toolpaths...</h6>
<script type="text/javascript" src="lib/gl-matrix.js"></script>
<script type="text/javascript" src="lib/tbfleming/web-cam-cpp.js"></script>
<script type="text/javascript" src="lib/clipperjs/clipper_unminified.js"></script>
<script type="text/javascript" src="js/advanced-cam-threegcode.js"></script>
<script type="text/javascript" src="js/advanced-cam-fillpath.js"></script>
<script type="text/javascript" src="js/advanced-cam-geometryutils.js"></script>
<script type="text/javascript" src="js/advanced-cam.js"></script>
<script type="text/javascript" src="js/advanced-cam-gcode.js"></script>
<script type="text/javascript" src="js/advanced-cam-doctree.js"></script>
<script type="text/javascript" src="js/advanced-cam-tree.js"></script>
<script type="text/javascript" src="js/advanced-cam-modal.js"></script>
<script type="text/javascript" src="js/advanced-cam-preview.js"></script>
<script type="text/javascript" src="js/advanced-cam-viewer-mouse.js"></script>
<script type="text/javascript" src="js/advanced-cam-viewer-select.js"></script>
<script type="text/javascript" src="js/advanced-cam-workspace-export.js"></script>
Expand All @@ -657,9 +656,6 @@ <h6>Calculating Toolpaths...</h6>
<script type="text/javascript" src="js/advanced-cam-drill.js"></script>
<script type="text/javascript" src="js/advanced-cam-booleans.js"></script>




<!-- DXF Library -->
<script type="text/javascript" src="lib/dxf/dxf-parser.js"></script>
<script type="text/javascript" src="lib/dxf/three-dxf.js"></script>
Expand All @@ -669,10 +665,6 @@ <h6>Calculating Toolpaths...</h6>
<script type="text/javascript" src="lib/lw.svg-parser/dist/lw.svg-parser.js"></script>
<script type="text/javascript" src="js/svgparser.js"></script>

<!-- SVG Lasersaur Library -->
<!-- <script type="text/javascript" src="lib/svgreader/SVGReader.js"></script>
<script type="text/javascript" src="lib/svgreader/svg2three.js"></script>
<script type="text/javascript" src="lib/svgreader/vec2.js"></script> -->
<script type="text/javascript" src="js/integration-machine-driver.js"></script>

<!-- Bitmap Tracing -->
Expand Down
33 changes: 24 additions & 9 deletions js/advanced-cam-gcode.js
Expand Up @@ -13,8 +13,17 @@ function trashGcode() {
$('#trashicon').removeClass('fg-red').addClass('fg-gray');
}


function makeGcode() {
if (toolpathWorkersBusy()) {
// console.log('not yet... rescheduling')
setTimeout(function(){makeGcode()}, 500);
} else {
makeGcodeExec()
}
}


function makeGcodeExec() {

if (toolpathsInScene.length > 0) {

Expand Down Expand Up @@ -90,7 +99,7 @@ function makeGcode() {

// openGCodeFromText()
parseGcodeInWebWorker()

}, 100);

} else {
Expand Down Expand Up @@ -149,13 +158,19 @@ function generateGcode(index, toolpathGrp, cutSpeed, plungeSpeed, laserPwr, rapi
// Find longest segment
// console.log("Vertices before optimise: ", child.geometry.vertices)
if (child.geometry.vertices.length > 2) {
var bestSegment = indexOfMax(child.geometry.vertices)
// console.log('longest section' + bestSegment)
var clone = child.geometry.vertices.slice(0);
clone.splice(-1, 1) // remove the last point (as its the "go back to first point"-point which will just be a duplicate point after rotation)
var optimisedVertices = clone.rotateRight(bestSegment)
optimisedVertices.push(optimisedVertices[0]) // add back the "go back to first point"-point - from the new first point
// console.log("Vertices after optimise: ", optimisedVertices)
if (toolpathsInScene[j].userData.camOperation.indexOf('Plasma') != 0) {
var bestSegment = indexOfMax(child.geometry.vertices)
// console.log('longest section' + bestSegment)
var clone = child.geometry.vertices.slice(0);
clone.splice(-1, 1) // remove the last point (as its the "go back to first point"-point which will just be a duplicate point after rotation)
var optimisedVertices = clone.rotateRight(bestSegment)
optimisedVertices.push(optimisedVertices[0]) // add back the "go back to first point"-point - from the new first point
// console.log("Vertices after optimise: ", optimisedVertices)
} else {
var optimisedVertices = child.geometry.vertices.slice(0)
}


} else {
var optimisedVertices = child.geometry.vertices.slice(0)
}
Expand Down
22 changes: 21 additions & 1 deletion js/advanced-cam-geometryutils.js
Expand Up @@ -117,4 +117,24 @@ Array.prototype.rotateRight = function(n) {
// example rotation
// var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
// months.rotateRight( 6 )
// console.log(months)
// console.log(months)

// borrowed tab generator code from https://github.com/andrewhodel/millcrum/blob/master/inc/mc.js
distanceFormula = function(x1, x2, y1, y2) {
// get the distance between p1 and p2
var a = (x2 - x1) * (x2 - x1);
var b = (y2 - y1) * (y2 - y1);
return Math.sqrt(a + b);
};

newPointFromDistanceAndAngle = function(pt, ang, distance) {
// use cos and sin to get a new point with an angle
// and distance from an existing point
// pt = [x,y]
// ang = in degrees
// distance = N
var r = [];
r.push(pt[0] + (distance * Math.cos(ang * Math.PI / 180)));
r.push(pt[1] + (distance * Math.sin(ang * Math.PI / 180)));
return r;
};
2 changes: 1 addition & 1 deletion js/advanced-cam-modal.js
Expand Up @@ -325,7 +325,7 @@ function setupJob(i) {
<td>
<div class="input-addon">
<span class="input-addon-label-left active-border"><img class="fa-fw" src="images/dragoffset.svg" width="16px" height="16px"></img></span>
<input data-role="input" data-clear-button="false" type="number" class="cam-form-field active-border" value="0.1" id="tdragoffset` + i + `" objectseq="` + i + `" min="0" step="any">
<input data-role="input" data-clear-button="false" type="number" class="cam-form-field active-border" value="1" id="tdragoffset` + i + `" objectseq="` + i + `" min="0" step="any">
<span class="input-addon-label-right active-border">mm</span>
</div>
</td>
Expand Down
194 changes: 0 additions & 194 deletions js/advanced-cam-preview.js

This file was deleted.

0 comments on commit 9b73fc5

Please sign in to comment.