目前的流程是有绝对坐标加工,有相对坐标加工。绝对坐标相对简单一些,因为每个元素的加工坐标都是绝对的,但是相对坐标的加工就依赖上一个元素,有时是依赖上一个图层。
由于worker是异步的,
触发函数使用postMessage 函数。
workerRef.current.postMessage(layerData);
接受函数处理后的结果 使用 onmessage 函数
workerRef.current.onmessage = (e) => {
const generatedGCode = e.data;
setGCode(generatedGCode);
};
如果要使用worker的能力,首先需要获取所有的加工点,借助paperjs来获取元素的坐标, 然后将这些坐标传入worker, 坐标必须是原始数据,不能是paperjs的元素,worker中也无法使用paperjs的能力。
只是获取所有加工元素的数据,这一步就要大改。
另外就是由于是异步的,如果gcode不是一次性返回的,那么gcode必须被插入到合适的位置。
最后最难的是,在异步中 无法取得 相对定位的 前一个坐标。或者上一个图层的最后一个坐标。
所以目前 worker 不太好引入,只会增加技术复杂度。