function instsFromDrawingPad(ps) {
let paths = ps.project.activeLayer.children.filter(
(shape) => shape.callParams.staged
);
paths = paths.reverse();
return paths.map((path) => {
let truncate = (num) => {
return Math.round(num * 1000) / 1000;
};
if (!path.curves) {
return [];
}
path = offsetPathForCutSide(path);
let points = path.curves
.map((curve) => {
let numCurveSamples = Math.floor(
curve.length / UPSCALE / SAMPLING_RESOLUTION
);
let times = [...Array(numCurveSamples).keys()].map(
(i) => i / numCurveSamples
);
let samplePoints = times.map((t) => curve.getPointAtTime(t));
let points = samplePoints.map((pt) => [pt.x, pt.y]);
return [...points, [curve.segment2.point.x, curve.segment2.point.y]];
})
.flat();
points = points.map((pt) => [
truncate(pt[0] / UPSCALE),
truncate(pt[1] / UPSCALE)
]);
let prologue = [`JZ,`];
let insts = points.map((point) => `M2,${point[0]},${point[1]}`);
if (points.length > 0 && path.closed) {
insts.push(`M2,${points[0][0]},${points[0][1]}`);
}
return insts;
});
}