feat: 提交
This commit is contained in:
130
samples/moduleManager/module_autoCalcCutOrder.ts
Normal file
130
samples/moduleManager/module_autoCalcCutOrder.ts
Normal file
@@ -0,0 +1,130 @@
|
||||
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);
|
||||
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user