Skip to content

Commit 9b73fc5

Browse files
Toolpath Webworkers
1 parent 004f5ac commit 9b73fc5

25 files changed

+901
-3197
lines changed

CHANGELOG.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
01 Jul 2019: Moved Toolpath Calculation to WebWorkers
12
24 Jun 2019: Moved Gcode Preview to WebWorker
23
14 Jun 2019: Added Beta of Servo based Pen Plotter CAM
34
29 Apr 2019: Added Delete Selection button #49, Added Workspace and Gcode naming #51, Added .OBC file support via CONTROL

index.html

+2-10
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@
7373
<ul class="ribbon-dropdown" data-role="dropdown">
7474
<li onclick="helloWorld()"><a href="#">CNC Hello World</a></li>
7575
<li onclick="helloWorldLaser()"><a href="#">Laser Hello World</a></li>
76-
76+
<li onclick="helloWorldDragKnife()"><a href="#">Dragknife Hello World</a></li>
77+
<li onclick="helloWorldPlasma()"><a href="#">Plasma Hello World</a></li>
7778
</ul>
7879
</li>
7980
<li><a href="#" onclick="Metro.dialog.open('#partslibModal')"><i class="fas fa-sitemap fa-fw"></i> Import from Parts Library</a></li>
@@ -638,15 +639,13 @@ <h6>Calculating Toolpaths...</h6>
638639
<script type="text/javascript" src="lib/gl-matrix.js"></script>
639640
<script type="text/javascript" src="lib/tbfleming/web-cam-cpp.js"></script>
640641
<script type="text/javascript" src="lib/clipperjs/clipper_unminified.js"></script>
641-
<script type="text/javascript" src="js/advanced-cam-threegcode.js"></script>
642642
<script type="text/javascript" src="js/advanced-cam-fillpath.js"></script>
643643
<script type="text/javascript" src="js/advanced-cam-geometryutils.js"></script>
644644
<script type="text/javascript" src="js/advanced-cam.js"></script>
645645
<script type="text/javascript" src="js/advanced-cam-gcode.js"></script>
646646
<script type="text/javascript" src="js/advanced-cam-doctree.js"></script>
647647
<script type="text/javascript" src="js/advanced-cam-tree.js"></script>
648648
<script type="text/javascript" src="js/advanced-cam-modal.js"></script>
649-
<script type="text/javascript" src="js/advanced-cam-preview.js"></script>
650649
<script type="text/javascript" src="js/advanced-cam-viewer-mouse.js"></script>
651650
<script type="text/javascript" src="js/advanced-cam-viewer-select.js"></script>
652651
<script type="text/javascript" src="js/advanced-cam-workspace-export.js"></script>
@@ -657,9 +656,6 @@ <h6>Calculating Toolpaths...</h6>
657656
<script type="text/javascript" src="js/advanced-cam-drill.js"></script>
658657
<script type="text/javascript" src="js/advanced-cam-booleans.js"></script>
659658

660-
661-
662-
663659
<!-- DXF Library -->
664660
<script type="text/javascript" src="lib/dxf/dxf-parser.js"></script>
665661
<script type="text/javascript" src="lib/dxf/three-dxf.js"></script>
@@ -669,10 +665,6 @@ <h6>Calculating Toolpaths...</h6>
669665
<script type="text/javascript" src="lib/lw.svg-parser/dist/lw.svg-parser.js"></script>
670666
<script type="text/javascript" src="js/svgparser.js"></script>
671667

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

678670
<!-- Bitmap Tracing -->

js/advanced-cam-gcode.js

+24-9
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,17 @@ function trashGcode() {
1313
$('#trashicon').removeClass('fg-red').addClass('fg-gray');
1414
}
1515

16-
1716
function makeGcode() {
17+
if (toolpathWorkersBusy()) {
18+
// console.log('not yet... rescheduling')
19+
setTimeout(function(){makeGcode()}, 500);
20+
} else {
21+
makeGcodeExec()
22+
}
23+
}
24+
25+
26+
function makeGcodeExec() {
1827

1928
if (toolpathsInScene.length > 0) {
2029

@@ -90,7 +99,7 @@ function makeGcode() {
9099

91100
// openGCodeFromText()
92101
parseGcodeInWebWorker()
93-
102+
94103
}, 100);
95104

96105
} else {
@@ -149,13 +158,19 @@ function generateGcode(index, toolpathGrp, cutSpeed, plungeSpeed, laserPwr, rapi
149158
// Find longest segment
150159
// console.log("Vertices before optimise: ", child.geometry.vertices)
151160
if (child.geometry.vertices.length > 2) {
152-
var bestSegment = indexOfMax(child.geometry.vertices)
153-
// console.log('longest section' + bestSegment)
154-
var clone = child.geometry.vertices.slice(0);
155-
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)
156-
var optimisedVertices = clone.rotateRight(bestSegment)
157-
optimisedVertices.push(optimisedVertices[0]) // add back the "go back to first point"-point - from the new first point
158-
// console.log("Vertices after optimise: ", optimisedVertices)
161+
if (toolpathsInScene[j].userData.camOperation.indexOf('Plasma') != 0) {
162+
var bestSegment = indexOfMax(child.geometry.vertices)
163+
// console.log('longest section' + bestSegment)
164+
var clone = child.geometry.vertices.slice(0);
165+
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)
166+
var optimisedVertices = clone.rotateRight(bestSegment)
167+
optimisedVertices.push(optimisedVertices[0]) // add back the "go back to first point"-point - from the new first point
168+
// console.log("Vertices after optimise: ", optimisedVertices)
169+
} else {
170+
var optimisedVertices = child.geometry.vertices.slice(0)
171+
}
172+
173+
159174
} else {
160175
var optimisedVertices = child.geometry.vertices.slice(0)
161176
}

js/advanced-cam-geometryutils.js

+21-1
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,24 @@ Array.prototype.rotateRight = function(n) {
117117
// example rotation
118118
// var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
119119
// months.rotateRight( 6 )
120-
// console.log(months)
120+
// console.log(months)
121+
122+
// borrowed tab generator code from https://github.com/andrewhodel/millcrum/blob/master/inc/mc.js
123+
distanceFormula = function(x1, x2, y1, y2) {
124+
// get the distance between p1 and p2
125+
var a = (x2 - x1) * (x2 - x1);
126+
var b = (y2 - y1) * (y2 - y1);
127+
return Math.sqrt(a + b);
128+
};
129+
130+
newPointFromDistanceAndAngle = function(pt, ang, distance) {
131+
// use cos and sin to get a new point with an angle
132+
// and distance from an existing point
133+
// pt = [x,y]
134+
// ang = in degrees
135+
// distance = N
136+
var r = [];
137+
r.push(pt[0] + (distance * Math.cos(ang * Math.PI / 180)));
138+
r.push(pt[1] + (distance * Math.sin(ang * Math.PI / 180)));
139+
return r;
140+
};

js/advanced-cam-modal.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ function setupJob(i) {
325325
<td>
326326
<div class="input-addon">
327327
<span class="input-addon-label-left active-border"><img class="fa-fw" src="images/dragoffset.svg" width="16px" height="16px"></img></span>
328-
<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">
328+
<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">
329329
<span class="input-addon-label-right active-border">mm</span>
330330
</div>
331331
</td>

js/advanced-cam-preview.js

-194
This file was deleted.

0 commit comments

Comments
 (0)