import { ConfigBase } from "../src/base"; import { ParserBase } from "../src/parsers"; import { _knifeType, CodeParams } from "./confClass"; import { knifeData, knifeData1, knifeData2 } from "./demoKnives"; import { GCodeAction } from "./gcodes"; export class DemoParser extends ParserBase { usedKnife?:_knifeType knifeList:_knifeType[] = [ knifeData, knifeData1, knifeData2 ] constructor(config?: Record) { super(); // if(config){ // if(config['knives']){ // // } // } const gcodeActions = new GCodeAction(); this.codeManager['FSTART'] = { name: 'FileStart', // type:'Global', // paramType:'array', exec:(params) =>{ return `G54 G90\nM03\n` } }; this.codeManager['FEND'] = { name: 'FileEnd', exec:(params) =>{ return `M30\n`; } } this.codeManager['G0'] = { name: 'G0', paramType: 'kv:number', exec:(params: CodeParams) => { return gcodeActions.G0(params) + '\n'; } } this.codeManager['G2'] = { name: 'G2', paramType: 'kv:number', exec:(params: CodeParams)=> { return gcodeActions.G2(params) + '\n'; } } this.codeManager['G3'] = { name: 'G3', paramType: 'kv:number', exec:(params: CodeParams)=> { return gcodeActions.G3(params) + '\n'; } } this.codeManager['TD'] = { name: '', exec:(diameter:number)=> { let code = '' let _knife: any if (diameter) { _knife = this.knifeList?.find(e => e.diameter == diameter) } if (_knife != undefined) { code += this.checkChangeKnife(_knife) this.usedKnife = _knife // code += _knife.axisStartCode code += _knife.knifeStartCode } return code } } this.codeManager['TN'] = { name: 'TN', exec:(knifeName:string) =>{ /**根据刀名称找刀 换刀 */ let code = '' let _knife: any = null if (knifeName) { _knife = this.knifeList?.find(e => e.knifeName == knifeName) } if (_knife != undefined) { code += this.checkChangeKnife(_knife) this.usedKnife = _knife // code += _knife.axisStartCode code += _knife.knifeStartCode } return code } } this.codeManager['TE'] = { name:'TE', exec:()=>{ if(!this.usedKnife) return ''; return this.usedKnife.knifeStopCode+'\n'; } } } /** 内部功能逻辑 换刀时判断是否需要 上一把刀的停止代码 */ private checkChangeKnife(knife: _knifeType) { let code = ''; /** true 需要 输出停刀代码 false 不需要 */ let flag = false // 必须要有刀 if (this.usedKnife) { let keys = Object.keys(knife) for (const key of keys) { if (knife[key] != this.usedKnife[key]) { flag = true continue } } } if (flag) { code += this.exec('TE',[]); } return code; } }