Major routing improvements: - Refactor depth-first routing algorithm for better path optimization - Reimplemented outline, roughing, pocket, and trace as area operation wrappers - Add pocket shadow travel routing with optimized descent using travel bounds - Improve contour routing with arc detection and polyEmit arc strategy - Add area smoothing and ease-down options - Fix outline handling with thru holes and surface reversal on tip2tip - Move widget shadow methods into widget class for faster hole detection - Better camInnerFirst support and proper feed/plunge defaults Tool system improvements: - Implement taper ball tool type with full support - Add renderTool2() for profile-based visualization - Convert tool menu to init code with bound vars - Fix auto tool and auto spindle for prep operations - Update tool profile generation for taperball geometry - Add calcTaperBallExtent() for proper ball tangency calculations Code cleanup: - Remove duplicated slicer code from specialized slicers - Asyncify shadowAt operations - Deprecate pocket engrave operation - Simplify upNover implementation - Fix animation with new tool+settings requirements
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
|
|
|
import { CamOp } from './op.js';
|
|
import { OpArea } from './op-area.js';
|
|
|
|
class OpPocket extends CamOp {
|
|
constructor(state, op) {
|
|
super(state, op);
|
|
}
|
|
|
|
async slice(progress) {
|
|
let { op, state } = this;
|
|
let { contour, down, expand, follow, outline, ov_botz, ov_topz } = op;
|
|
let { plunge, rate, refine, smooth, spindle, surfaces, tolerance, tool } = op;
|
|
let pocket = {
|
|
areas: {},
|
|
down,
|
|
expand,
|
|
follow,
|
|
mode: contour ? 'surface' : 'clear',
|
|
outline,
|
|
ov_botz,
|
|
ov_topz,
|
|
over: op.step,
|
|
plunge,
|
|
rate,
|
|
refine,
|
|
rename: op.rename ?? "pocket",
|
|
smooth,
|
|
spindle,
|
|
sr_type: 'offset',
|
|
surfaces,
|
|
tolerance,
|
|
tool,
|
|
tr_type: 'none',
|
|
};
|
|
this.op_pocket = new OpArea(state, pocket);
|
|
return this.op_pocket.slice(progress);
|
|
}
|
|
|
|
prepare(ops, progress) {
|
|
return this.op_pocket.prepare(ops, progress);
|
|
}
|
|
}
|
|
|
|
export { OpPocket };
|