handle depth ordering for traces

This commit is contained in:
Stewart Allen 2020-12-01 20:11:19 -05:00
commit 4a84732797
2 changed files with 24 additions and 13 deletions

View file

@ -327,8 +327,9 @@
outlineDiam: 0, outlineDiam: 0,
contourx: [], contourx: [],
contoury: [], contoury: [],
trace: [],
drill: [],
layer: 0, layer: 0,
drill: []
}; };
// todo first move into positon // todo first move into positon
@ -435,17 +436,12 @@
} }
break; break;
case PRO.TRACE: case PRO.TRACE:
console.log({prep_trace: slice}); if (depthFirst) {
let { tool, speed, plunge, path } = slice.camTrace; depthData.trace.push(slice);
setTool(tool, speed, plunge); break;
let traceTool = new CAM.Tool(settings, tool); } else {
let traceToolDiam = traceTool.fluteDiameter(); emitTrace(slice);
slice.camLines.forEach(poly => { }
poly.forEachPoint(function(point, pidx) {
camOut(point.clone(), pidx > 0);
}, !poly.open);
});
newLayer();
break; break;
case PRO.DRILL: case PRO.DRILL:
setTool(process.camDrillTool, process.camDrillDownSpeed, process.camDrillDownSpeed); setTool(process.camDrillTool, process.camDrillDownSpeed, process.camDrillDownSpeed);
@ -455,6 +451,19 @@
update(sliceIndex / slices.length); update(sliceIndex / slices.length);
}); });
function emitTrace(slice) {
let { tool, speed, plunge, path } = slice.camTrace;
setTool(tool, speed, plunge);
let traceTool = new CAM.Tool(settings, tool);
let traceToolDiam = traceTool.fluteDiameter();
slice.camLines.forEach(poly => {
poly.forEachPoint(function(point, pidx) {
camOut(point.clone(), pidx > 0);
}, !poly.open);
});
newLayer();
}
function polyEmit(poly, index, count, fromPoint) { function polyEmit(poly, index, count, fromPoint) {
let last = null; let last = null;
if (easeDown && poly.isClosed()) { if (easeDown && poly.isClosed()) {
@ -602,6 +611,9 @@
}); });
} }
} }
depthData.trace.forEach(slice => {
emitTrace(slice);
});
} }
// drilling is always depth first, and always output last (change?) // drilling is always depth first, and always output last (change?)

View file

@ -488,7 +488,6 @@
let proc = settings.process; let proc = settings.process;
let traces = (settings.widget[widget.id] || {}).trace || []; let traces = (settings.widget[widget.id] || {}).trace || [];
traces.forEach(trace => { traces.forEach(trace => {
console.log({trace});
let { tool, path } = trace; let { tool, path } = trace;
let traceTool = new CAM.Tool(settings, tool); let traceTool = new CAM.Tool(settings, tool);
let traceToolDiam = traceTool.fluteDiameter(); let traceToolDiam = traceTool.fluteDiameter();