init
This commit is contained in:
124
samples/demoParser.ts
Normal file
124
samples/demoParser.ts
Normal file
@@ -0,0 +1,124 @@
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user