import { ProcessorModule, StepControllerProcessor, Processor } from "../../src/device"; import { RectOptimizeMachineModule } from "../moduleManager/module_RectOptimizeMachine"; import { ToolsModule } from "../moduleManager/module_tools"; import { CheckMaterial } from "../moduleManager/module_checkMaterial"; import { CheckBlocks } from "../moduleManager/module_checkBlocks"; import { ResetModelContour } from "../moduleManager/module_resetModelContour"; import { AutoCalcCutOrder } from "../moduleManager/module_autoCalcCutOrder"; import { HandleMaterialPlaceResult } from "../moduleManager/module_handleMaterialPlaceResult"; import { handlePlaceResultToPlaceMaterial } from "../moduleManager/module_handlePlaceResultToPlaceMaterial"; // import { Init2VModel } from "../moduleManager/module_init2VModel"; /** * demo 开料机处理器 * * */ export class demoHandleGroupCutting { processorName = "cutting" processor: StepControllerProcessor constructor() { // 主线程 const demoCallbackModule: ProcessorModule = { moduleName: "callbackStyle", process(input, next, context) { console.log("做优化"); const _input = input const _next = next const _context = context // 可以在这里调用异步操作 Reflect.set(context, 'CallBack', callBack1) // 决定是否调用 next this.onMessage('测试传消息给处理器'); function callBack1(v) { console.log('接收到其它模块回传的数据'); } // 调用 next 继续流程 return next(input); } }; this.processor = new StepControllerProcessor(); this.processor.setOnMessageFunc(this.getMessageByModules) this.processor.use([ // demoCallbackModule, ToolsModule, // 刀库 // CheckMaterial, // CheckBlocks, // ResetModelContour, // Init2VModel, RectOptimizeMachineModule, // 优化 // { // moduleName: "final", // process(input, next,context) { // // 不调用 next,终止流程 // console.log('结束了') // return next(input); // } // } ]) } // 获取到模块的消息 async getMessageByModules(data) { console.log('getMessageByModules', data); this.processor = new StepControllerProcessor(); switch (data.moduleName) { // 处理优化模块的消息 case 'RectOptimizeMachine': // 处理优化数据 this.processor.use([HandleMaterialPlaceResult, handlePlaceResultToPlaceMaterial, AutoCalcCutOrder]) this.processor.setOnMessageFunc(this.getMessageByModules) let bList = [] data.pm.blockList.forEach(b => { bList[b.blockNo] = b }); let params = { bList: bList, best:data.result[0], yl:data.result[1], pm:data.pm, width:data.pm.width, length:data.pm.length } let context = { MaterialPlaceSource:params } let res = await this.processor.process(data.input,context) console.log(res); // this.processor.use(handlePlaceResultToPlaceMaterial) // let params1 = res // let res1 = await this.processor.process(res) break; default: break; } } }