124 lines
3.8 KiB
TypeScript
124 lines
3.8 KiB
TypeScript
|
|
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<string, ConfigBase>) {
|
|
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;
|
|
}
|
|
} |