import { Processor, ProcessorModule } from "../../src/device"; import { ErrorInfo } from "../../src/device"; import { KLSC, YH_bang } from "./RectOptimizeWorker/bang"; /** 模块 开料顺序 * * input 入参 */ /** 开料顺序 */ export const AutoCalcCutOrder: ProcessorModule = { moduleName: "AutoCalcCutOrder", moduleVersion: '20250714', config: { boardWidth: 0, boardLength: 0, placeStyle: 1, }, setConfig(config) { this.config = { ...this.config, ...config }; }, // 会在处理器自动执行 /** * * @param input 输入数据 * @param next 下一个流程的函数 * @param context 上下文 * @returns */ process(input, next, context) { const { materialList } = input for (const pm of materialList) { for (const pb of pm.boardList) { let selectBs = pb.blockList; let beginId = 0; const has0 = pb.blockList.filter(t => t.cutOrder == 0); const has1 = pb.blockList.filter(t => t.cutOrder > 0); const has2 = pb.blockList.filter(t => t.cutOrder < 0); //有手动指定开料顺序的 if (has0.length > 0 && (has1.length + has2.length) > 0) { selectBs = has0; if (has1.length > 0) //开头的 { const bs = has1.sort((a, b) => a.cutOrder - b.cutOrder); for (const b of bs) { beginId++; b.cutOrder = beginId; } } if (has2.length > 0) //结尾的 { const bs = has2.sort((a, b) => a.cutOrder - b.cutOrder); let endId = has0.length + has1.length; for (const b of bs) { endId++; b.cutOrder = endId; } } } let bangs: YH_bang[] = []; let blocks = new Array(); for (let i = 0; i < selectBs.length; i++) { let block = selectBs[i]; let bangid = i + 1; let x = block.placeX; let y = block.placeY; let pbg = block.placeLength; let pbk = block.placeWidth; blocks[bangid] = block; bangs.push({ bangid, line: 0, pbg, pbk, x, y, ishb: false, hb: [], isbig: false, isqg: false, isgr: false, gr: [], grid: -1 }); } let dt = pm.diameter + pm.cutKnifeGap; let k = pb.width; let g = pb.length; let xdsc: KLSC = new KLSC(bangs, k, g, dt, 0, 0, 1); // try { // xdsc // } catch (error) { // console.log(error); // } let rt = xdsc.SCid; // let rt = JSXDSC(bangs, dt, k, g); if (rt.length < selectBs.length) return; for (let i = 0; i < rt.length; i++) { let bid = rt[i]; beginId++; blocks[bid].cutOrder = beginId; } } } return next ? next(input) : input; }, onError(error) { console.error('出错了哦', error); } };