131 lines
3.8 KiB
TypeScript
131 lines
3.8 KiB
TypeScript
import { Processor, ProcessorModule } from "../../src/device";
|
|
|
|
import { ErrorInfo } from "../../src/device";
|
|
import { KLSC, YH_bang } from "./RectOptimizeWorker/bang";
|
|
|
|
/** 模块 开料顺序
|
|
*
|
|
* input 入参
|
|
|
|
*/
|
|
|
|
/** 开料顺序 */
|
|
export const AutoCalcCutOrder: ProcessorModule<any, any> = {
|
|
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);
|
|
|
|
}
|
|
};
|
|
|